BIND 10 trac810, updated. b91c7c259c85f29413e05898e8b74ca011835aa6 [trac810] Test for plugin-loader
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Apr 8 16:20:09 UTC 2011
The branch, trac810 has been updated
via b91c7c259c85f29413e05898e8b74ca011835aa6 (commit)
from 111334856c3beb8cfad23ff60264604746dd1492 (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 b91c7c259c85f29413e05898e8b74ca011835aa6
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Fri Apr 8 18:19:40 2011 +0200
[trac810] Test for plugin-loader
-----------------------------------------------------------------------
Summary of changes:
src/bin/cfgmgr/b10-cfgmgr.py.in | 3 ++
src/bin/cfgmgr/tests/Makefile.am | 1 +
src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in | 19 ++++++++++++
.../cfgmgr/tests/testdata/plugins/testplugin.py} | 30 +++++++++++--------
4 files changed, 40 insertions(+), 13 deletions(-)
copy src/{lib/python/isc/testutils/parse_args.py => bin/cfgmgr/tests/testdata/plugins/testplugin.py} (52%)
-----------------------------------------------------------------------
diff --git a/src/bin/cfgmgr/b10-cfgmgr.py.in b/src/bin/cfgmgr/b10-cfgmgr.py.in
index 5355582..d680641 100755
--- a/src/bin/cfgmgr/b10-cfgmgr.py.in
+++ b/src/bin/cfgmgr/b10-cfgmgr.py.in
@@ -65,6 +65,9 @@ def signal_handler(signal, frame):
if cm:
cm.running = False
+def load_plugins(path, cm):
+ pass
+
def main():
options = parse_options()
global cm
diff --git a/src/bin/cfgmgr/tests/Makefile.am b/src/bin/cfgmgr/tests/Makefile.am
index 16e6223..d88576b 100644
--- a/src/bin/cfgmgr/tests/Makefile.am
+++ b/src/bin/cfgmgr/tests/Makefile.am
@@ -12,6 +12,7 @@ if ENABLE_PYTHON_COVERAGE
endif
for pytest in $(PYTESTS) ; do \
echo Running test: $$pytest ; \
+ env TESTDATA_PATH=$(abs_srcdir)/testdata \
env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python:$(abs_top_builddir)/src/bin/cfgmgr \
$(PYCOVERAGE_RUN) $(abs_builddir)/$$pytest || exit ; \
done
diff --git a/src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in b/src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in
index 037a106..c4a232c 100644
--- a/src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in
+++ b/src/bin/cfgmgr/tests/b10-cfgmgr_test.py.in
@@ -30,6 +30,7 @@ class MyConfigManager:
self.run_called = False
self.write_config_called = False
self.running = True
+ self.virtual_modules = []
def read_config(self):
self.read_config_called = True
@@ -43,6 +44,24 @@ class MyConfigManager:
def write_config(self):
self.write_config_called = True
+ def set_virtual_module(self, spec, function):
+ self.virtual_modules.append((spec, function))
+
+class TestPlugins(unittest.TestCase):
+ def test_load_plugins(self):
+ """Test we can successfully find and load the mock plugin."""
+ # Let it load the plugin
+ b = __import__("b10-cfgmgr")
+ # The parameters aren't important for this test
+ cm = MyConfigManager(None, None)
+ b.load_plugins(os.environ['TESTDATA_PATH'] + os.sep + 'plugins', cm)
+ # Check exactly one plugin was loaded and the right data were fed into
+ # the cm
+ self.assertEqual(len(cm.virtual_modules), 1)
+ (spec, check) = cm.virtual_modules[0]
+ self.assertEqual(spec.get_module_name(), "mock_config_plugin")
+ self.assertEqual(check(None), "Mock config plugin")
+
class TestConfigManagerStartup(unittest.TestCase):
def test_cfgmgr(self):
# some creative module use;
diff --git a/src/bin/cfgmgr/tests/testdata/plugins/testplugin.py b/src/bin/cfgmgr/tests/testdata/plugins/testplugin.py
new file mode 100644
index 0000000..93a6c1d
--- /dev/null
+++ b/src/bin/cfgmgr/tests/testdata/plugins/testplugin.py
@@ -0,0 +1,34 @@
+# Copyright (C) 2011 Internet Systems Consortium.
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
+# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+# A test plugin. It does mostly nothing, just provides a function we can
+# recognize from the test. However, it looks like a real plugin, with the
+# (almost) correct interface, even when it's not used.
+
+class MockSpec:
+ """Mock spec, contains no data, it can only provide it's name.
+ It'll not really be used for anything."""
+ def get_module_name(self):
+ return "mock_config_plugin"
+
+def mock_check_config(config)
+ """Mock function to check config. Does nothing, only returns
+ an "error" string to indicate it's this one."""
+ return "Mock config plugin"
+
+def load():
+ """When a plugin is loaded, this is called to provide the spec and
+ checking function."""
+ return (MockSpec(), mock_check_config)
More information about the bind10-changes
mailing list