BIND 10 master, updated. 0c88eb0d723fa43865e185b201aba2685173f378 Merge branch 'trac1289'
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Oct 11 14:11:38 UTC 2011
The branch, master has been updated
via 0c88eb0d723fa43865e185b201aba2685173f378 (commit)
via 9ec6d23aa2ca58dd13a45821c92a926a0780591c (commit)
via f6445b024942629726daeb591f99af090aa43c28 (commit)
from 8eb6232b0094778b4c195a870fa2c06cd1b7d0ab (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 0c88eb0d723fa43865e185b201aba2685173f378
Merge: 8eb6232b0094778b4c195a870fa2c06cd1b7d0ab 9ec6d23aa2ca58dd13a45821c92a926a0780591c
Author: Jelte Jansen <jelte at isc.org>
Date: Tue Oct 11 16:09:13 2011 +0200
Merge branch 'trac1289'
-----------------------------------------------------------------------
Summary of changes:
src/lib/datasrc/memory_datasrc.cc | 2 +-
src/lib/python/isc/datasrc/__init__.py | 14 +++++++++
src/lib/python/isc/datasrc/tests/datasrc_test.py | 33 ++++++++++++++++++++++
3 files changed, 48 insertions(+), 1 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory_datasrc.cc b/src/lib/datasrc/memory_datasrc.cc
index 3f84437..2b556ab 100644
--- a/src/lib/datasrc/memory_datasrc.cc
+++ b/src/lib/datasrc/memory_datasrc.cc
@@ -830,7 +830,7 @@ checkConfigElementString(ConstElementPtr config, const std::string& name,
if (!config->contains(name)) {
addError(errors,
"Config for memory backend does not contain a '"
- "type"
+ +name+
"' value");
return false;
} else if (!config->get(name) ||
diff --git a/src/lib/python/isc/datasrc/__init__.py b/src/lib/python/isc/datasrc/__init__.py
index 0b4ed98..7ebd918 100644
--- a/src/lib/python/isc/datasrc/__init__.py
+++ b/src/lib/python/isc/datasrc/__init__.py
@@ -1,6 +1,16 @@
import sys
import os
+# The datasource factory loader uses dlopen, as does python
+# for its modules. Some dynamic linkers do not play nice if
+# modules are not loaded with RTLD_GLOBAL, a symptom of which
+# is that exceptions are not recognized by type. So to make
+# sure this doesn't happen, we temporarily set RTLD_GLOBAL
+# during the loading of the datasource wrappers.
+import ctypes
+flags = sys.getdlopenflags()
+sys.setdlopenflags(flags | ctypes.RTLD_GLOBAL)
+
# this setup is a temporary workaround to deal with the problem of
# having both 'normal' python modules and a wrapper module
# Once all programs use the new interface, we should remove the
@@ -16,6 +26,10 @@ if intree:
from datasrc import *
else:
from isc.datasrc.datasrc import *
+
+# revert to the default dlopen flags
+sys.setdlopenflags(flags)
+
from isc.datasrc.sqlite3_ds import *
from isc.datasrc.master import *
diff --git a/src/lib/python/isc/datasrc/tests/datasrc_test.py b/src/lib/python/isc/datasrc/tests/datasrc_test.py
index f65cfa0..75a0cfb 100644
--- a/src/lib/python/isc/datasrc/tests/datasrc_test.py
+++ b/src/lib/python/isc/datasrc/tests/datasrc_test.py
@@ -19,6 +19,7 @@ import isc.dns
import unittest
import os
import shutil
+import json
TESTDATA_PATH = os.environ['TESTDATA_PATH'] + os.sep
TESTDATA_WRITE_PATH = os.environ['TESTDATA_WRITE_PATH'] + os.sep
@@ -381,7 +382,39 @@ class DataSrcUpdater(unittest.TestCase):
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
rrset.to_text())
+ def test_two_modules(self):
+ # load two modules, and check if they don't interfere
+ mem_cfg = { "type": "memory", "class": "IN", "zones": [] };
+ dsc_mem = isc.datasrc.DataSourceClient("memory", json.dumps(mem_cfg))
+ dsc_sql = isc.datasrc.DataSourceClient("sqlite3", READ_ZONE_DB_CONFIG)
+
+ # check if exceptions are working
+ self.assertRaises(isc.datasrc.Error, isc.datasrc.DataSourceClient,
+ "memory", "{}")
+ self.assertRaises(isc.datasrc.Error, isc.datasrc.DataSourceClient,
+ "sqlite3", "{}")
+
+ # see if a lookup succeeds in sqlite3 ds
+ result, finder = dsc_sql.find_zone(isc.dns.Name("example.com"))
+ self.assertEqual(finder.SUCCESS, result)
+ self.assertEqual(isc.dns.RRClass.IN(), finder.get_class())
+ self.assertEqual("example.com.", finder.get_origin().to_text())
+ result, rrset = finder.find(isc.dns.Name("www.example.com"),
+ isc.dns.RRType.A(),
+ None,
+ finder.FIND_DEFAULT)
+ self.assertEqual(finder.SUCCESS, result)
+ self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
+ rrset.to_text())
+
+ # see if a lookup fails in mem ds
+ result, finder = dsc_mem.find_zone(isc.dns.Name("example.com"))
+ self.assertEqual(finder.NXDOMAIN, result)
+
+
def test_update_delete_abort(self):
+ # we don't do enything with this one, just making sure loading two
+ # datasources
dsc = isc.datasrc.DataSourceClient("sqlite3", WRITE_ZONE_DB_CONFIG)
# first make sure, through a separate finder, that some record exists
More information about the bind10-changes
mailing list