[svn] commit: r2643 - in /branches/trac99/src: bin/bindctl/bindcmd.py bin/bindctl/tests/bindctl_test.py lib/python/isc/config/config_data.py lib/python/isc/config/tests/config_data_test.py

BIND 10 source code commits bind10-changes at lists.isc.org
Thu Aug 5 14:36:14 UTC 2010


Author: jelte
Date: Thu Aug  5 14:36:14 2010
New Revision: 2643

Log:
make bindctl error if you try to perform a config command on an unknown or non-running module
added 'have_specification()' to MultiConfigData class
+tests of course
although bindcmd seems to be lacking much in the test department... (fitted it kinda-sorta into bindctl_test right now)

Modified:
    branches/trac99/src/bin/bindctl/bindcmd.py
    branches/trac99/src/bin/bindctl/tests/bindctl_test.py
    branches/trac99/src/lib/python/isc/config/config_data.py
    branches/trac99/src/lib/python/isc/config/tests/config_data_test.py

Modified: branches/trac99/src/bin/bindctl/bindcmd.py
==============================================================================
--- branches/trac99/src/bin/bindctl/bindcmd.py (original)
+++ branches/trac99/src/bin/bindctl/bindcmd.py Thu Aug  5 14:36:14 2010
@@ -543,6 +543,16 @@
                     identifier = cmd.params['identifier']
                 else:
                     identifier += cmd.params['identifier']
+
+                # Check if the module is known; for unknown modules
+                # we currently deny setting preferences, as we have
+                # no way yet to determine if they are ok.
+                module_name = identifier.split('/')[1]
+                if self.config_data is None or \
+                   not self.config_data.have_specification(module_name):
+                    print("Error: Module '" + module_name + "' unknown or not running")
+                    return
+
             if cmd.command == "show":
                 values = self.config_data.get_value_maps(identifier)
                 for value_map in values:

Modified: branches/trac99/src/bin/bindctl/tests/bindctl_test.py
==============================================================================
--- branches/trac99/src/bin/bindctl/tests/bindctl_test.py (original)
+++ branches/trac99/src/bin/bindctl/tests/bindctl_test.py Thu Aug  5 14:36:14 2010
@@ -237,6 +237,11 @@
             assert self.random_names[i] == cmd_names[i+1]
             assert self.random_names[i] == module_names[i+1]
             i = i + 1
+
+    def test_apply_cfg_command(self):
+        self.tool.location = '/'
+        cmd = cmdparse.BindCmdParse("config set identifier=\"foo/bar\" value=\"5\"")
+        self.tool.apply_config_cmd(cmd)
     
 class FakeBindCmdInterpreter(bindcmd.BindCmdInterpreter):
     def __init__(self):

Modified: branches/trac99/src/lib/python/isc/config/config_data.py
==============================================================================
--- branches/trac99/src/lib/python/isc/config/config_data.py (original)
+++ branches/trac99/src/lib/python/isc/config/config_data.py Thu Aug  5 14:36:14 2010
@@ -250,6 +250,11 @@
         """Removes the specification with the given module name. Does nothing if it wasn't there."""
         if module_name in self._specifications:
             del self._specifications[module_name]
+
+    def have_specification(self, module_name):
+        """Returns True if we have a specification for the module with the given name.
+           Returns False if we do not."""
+        return module_name in self._specifications
 
     def get_module_spec(self, module):
         """Returns the ModuleSpec for the module with the given name.

Modified: branches/trac99/src/lib/python/isc/config/tests/config_data_test.py
==============================================================================
--- branches/trac99/src/lib/python/isc/config/tests/config_data_test.py (original)
+++ branches/trac99/src/lib/python/isc/config/tests/config_data_test.py Thu Aug  5 14:36:14 2010
@@ -267,12 +267,16 @@
         self.assertEqual({}, self.mcd._current_config)
         self.assertEqual({}, self.mcd._local_changes)
 
-    def test_set_specification(self):
+    def test_set_remove_specification(self):
         module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec1.spec")
-        self.mcd.set_specification(module_spec)
+        self.assertFalse(self.mcd.have_specification(module_spec.get_module_name()))
+        self.mcd.set_specification(module_spec)
+        self.assertTrue(self.mcd.have_specification(module_spec.get_module_name()))
         self.assert_(module_spec.get_module_name() in self.mcd._specifications)
         self.assertEquals(module_spec, self.mcd._specifications[module_spec.get_module_name()])
         self.assertRaises(ConfigDataError, self.mcd.set_specification, "asdf")
+        self.mcd.remove_specification(module_spec.get_module_name())
+        self.assertFalse(self.mcd.have_specification(module_spec.get_module_name()))
 
     def test_get_module_spec(self):
         module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec1.spec")




More information about the bind10-changes mailing list