BIND 10 trac2051, updated. f0ce2e2039b298dc4a64e64da86b82f78dbb3a70 a[2051] Wrap the configure method
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Jul 16 12:00:57 UTC 2012
The branch, trac2051 has been updated
via f0ce2e2039b298dc4a64e64da86b82f78dbb3a70 (commit)
from 9aaaaca8c1dd8e735d8695bf2cbab95965e3bd2b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f0ce2e2039b298dc4a64e64da86b82f78dbb3a70
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Mon Jul 16 14:00:24 2012 +0200
a[2051] Wrap the configure method
-----------------------------------------------------------------------
Summary of changes:
.../isc/datasrc/configurableclientlist_python.cc | 33 ++++++++++++++++++--
src/lib/python/isc/datasrc/tests/Makefile.am | 1 +
.../python/isc/datasrc/tests/clientlist_test.py | 32 +++++++++++++++++++
3 files changed, 64 insertions(+), 2 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/python/isc/datasrc/configurableclientlist_python.cc b/src/lib/python/isc/datasrc/configurableclientlist_python.cc
index 8b3e254..b77be24 100644
--- a/src/lib/python/isc/datasrc/configurableclientlist_python.cc
+++ b/src/lib/python/isc/datasrc/configurableclientlist_python.cc
@@ -56,10 +56,12 @@ ConfigurableClientList_init(PyObject* po_self, PyObject* args, PyObject*) {
s_ConfigurableClientList* self =
static_cast<s_ConfigurableClientList*>(po_self);
try {
- isc::dns::RRClass rrclass(isc::dns::RRClass::IN());
+ const PyObject* rrclass;
if (PyArg_ParseTuple(args, "O!", &isc::dns::python::rrclass_type,
&rrclass)) {
- self->cppobj = new ConfigurableClientList(rrclass);
+ self->cppobj =
+ new ConfigurableClientList(isc::dns::python::
+ PyRRClass_ToRRClass(rrclass));
return (0);
}
} catch (const exception& ex) {
@@ -84,6 +86,31 @@ ConfigurableClientList_destroy(PyObject* po_self) {
Py_TYPE(self)->tp_free(self);
}
+PyObject*
+ConfigurableClientList_configure(PyObject* po_self, PyObject* args) {
+ s_ConfigurableClientList* self =
+ static_cast<s_ConfigurableClientList*>(po_self);
+ try {
+ const char* configuration;
+ int allow_cache;
+ if (PyArg_ParseTuple(args, "si", &configuration, &allow_cache)) {
+ const isc::data::ConstElementPtr
+ element(isc::data::Element::fromJSON(string(configuration)));
+ self->cppobj->configure(*element, allow_cache);
+ Py_RETURN_NONE;
+ } else {
+ return (NULL);
+ }
+ } catch (const std::exception& exc) {
+ PyErr_SetString(getDataSourceException("Error"), exc.what());
+ return (NULL);
+ } catch (...) {
+ PyErr_SetString(getDataSourceException("Error"),
+ "Unknown C++ exception");
+ return (NULL);
+ }
+}
+
// This list contains the actual set of functions we have in
// python. Each entry has
// 1. Python method name
@@ -91,6 +118,8 @@ ConfigurableClientList_destroy(PyObject* po_self) {
// 3. Argument type
// 4. Documentation
PyMethodDef ConfigurableClientList_methods[] = {
+ { "configure", ConfigurableClientList_configure, METH_VARARGS,
+ "TODO: Docs" },
{ NULL, NULL, 0, NULL }
};
} // end of unnamed namespace
diff --git a/src/lib/python/isc/datasrc/tests/Makefile.am b/src/lib/python/isc/datasrc/tests/Makefile.am
index f8b08e3..34af092 100644
--- a/src/lib/python/isc/datasrc/tests/Makefile.am
+++ b/src/lib/python/isc/datasrc/tests/Makefile.am
@@ -36,6 +36,7 @@ endif
PYTHONPATH=:$(COMMON_PYTHON_PATH):$(abs_top_builddir)/src/lib/python/isc/log:$(abs_top_builddir)/src/lib/python/isc/datasrc/.libs:$(abs_top_builddir)/src/lib/dns/python/.libs \
TESTDATA_PATH=$(abs_srcdir)/testdata \
TESTDATA_WRITE_PATH=$(abs_builddir) \
+ GLOBAL_TESTDATA_PATH=$(abs_top_srcdir)/src/lib/testutils/testdata \
B10_FROM_BUILD=$(abs_top_builddir) \
$(PYCOVERAGE_RUN) $(abs_srcdir)/$$pytest || exit ; \
done
diff --git a/src/lib/python/isc/datasrc/tests/clientlist_test.py b/src/lib/python/isc/datasrc/tests/clientlist_test.py
index 18bc74d..e7219e9 100644
--- a/src/lib/python/isc/datasrc/tests/clientlist_test.py
+++ b/src/lib/python/isc/datasrc/tests/clientlist_test.py
@@ -17,6 +17,9 @@ import isc.log
import isc.datasrc
import isc.dns
import unittest
+import os
+
+TESTDATA_PATH = os.environ['GLOBAL_TESTDATA_PATH'] + os.sep
class ClientListTest(unittest.TestCase):
"""
@@ -40,6 +43,35 @@ class ClientListTest(unittest.TestCase):
self.assertRaises(TypeError, isc.datasrc.ConfigurableClientList,
isc.dns.RRClass.IN(), isc.dns.RRClass.IN())
+ def test_configure(self):
+ """
+ Test we can configure the client list. This tests if the valid
+ ones are acceptend and invalid rejected. We check the changes
+ have effect.
+ """
+ clist = isc.datasrc.ConfigurableClientList(isc.dns.RRClass.IN())
+ # This should be NOP now
+ clist.configure("[]", True)
+ # We can use this type, as it is not loaded dynamically.
+ clist.configure('''[{
+ "type": "MasterFiles",
+ "params": {
+ "example.org": "''' + TESTDATA_PATH + '''example.org.zone"
+ },
+ "cache-enable": true
+ }]''', True)
+ self.assertRaises(isc.datasrc.Error, clist.configure, '"bad type"',
+ True)
+ self.assertRaises(isc.datasrc.Error, clist.configure, '''[{
+ "type": "bad type"
+ }]''', True)
+ self.assertRaises(isc.datasrc.Error, clist.configure, '''[{
+ bad JSON,
+ }]''', True)
+ self.assertRaises(TypeError, clist.configure, [], True)
+ self.assertRaises(TypeError, clist.configure, "[]")
+ self.assertRaises(TypeError, clist.configure, "[]", "true")
+
if __name__ == "__main__":
isc.log.init("bind10")
isc.log.resetUnitTestRootLogger()
More information about the bind10-changes
mailing list