|
@@ -240,9 +240,6 @@ class TestConfigManager(unittest.TestCase):
|
|
|
|
|
|
def test_read_config(self):
|
|
def test_read_config(self):
|
|
self.assertEqual(self.cm.config.data, {'version': config_data.BIND10_CONFIG_DATA_VERSION})
|
|
self.assertEqual(self.cm.config.data, {'version': config_data.BIND10_CONFIG_DATA_VERSION})
|
|
- self.cm.read_config()
|
|
|
|
-
|
|
|
|
- self.assertEqual(self.cm.config.data, {'TestModule': {'test': 125}, 'version': config_data.BIND10_CONFIG_DATA_VERSION})
|
|
|
|
self.cm.data_path = "/no_such_path"
|
|
self.cm.data_path = "/no_such_path"
|
|
self.cm.read_config()
|
|
self.cm.read_config()
|
|
self.assertEqual(self.cm.config.data, {'version': config_data.BIND10_CONFIG_DATA_VERSION})
|
|
self.assertEqual(self.cm.config.data, {'version': config_data.BIND10_CONFIG_DATA_VERSION})
|
|
@@ -255,115 +252,174 @@ class TestConfigManager(unittest.TestCase):
|
|
answer = self.cm.handle_msg(msg)
|
|
answer = self.cm.handle_msg(msg)
|
|
self.assertEqual(expected_answer, answer)
|
|
self.assertEqual(expected_answer, answer)
|
|
|
|
|
|
- def test_handle_msg(self):
|
|
+ def test_handle_msg_basic_commands(self):
|
|
- self._handle_msg_helper({}, { 'result': [ 1, 'Unknown message format: {}']})
|
|
+
|
|
- self._handle_msg_helper("", { 'result': [ 1, 'Unknown message format: ']})
|
|
+
|
|
- self._handle_msg_helper({ "command": [ "badcommand" ] }, { 'result': [ 1, "Unknown command: badcommand"]})
|
|
+ self._handle_msg_helper({},
|
|
- self._handle_msg_helper({ "command": [ "get_commands_spec" ] }, { 'result': [ 0, {} ]})
|
|
+ { 'result': [ 1, 'Unknown message format: {}']})
|
|
- self._handle_msg_helper({ "command": [ "get_statistics_spec" ] }, { 'result': [ 0, {} ]})
|
|
+ self._handle_msg_helper("",
|
|
- self._handle_msg_helper({ "command": [ "get_module_spec" ] }, { 'result': [ 0, {} ]})
|
|
+ { 'result': [ 1, 'Unknown message format: ']})
|
|
- self._handle_msg_helper({ "command": [ "get_module_spec", { "module_name": "Spec2" } ] }, { 'result': [ 0, {} ]})
|
|
+ self._handle_msg_helper({ "command": [ "badcommand" ] },
|
|
-
|
|
+ { 'result': [ 1, "Unknown command: badcommand"]})
|
|
-
|
|
+ self._handle_msg_helper({ "command": [ "get_commands_spec" ] },
|
|
|
|
+ { 'result': [ 0, {} ]})
|
|
|
|
+ self._handle_msg_helper({ "command": [ "get_statistics_spec" ] },
|
|
|
|
+ { 'result': [ 0, {} ]})
|
|
|
|
+ self._handle_msg_helper({ "command": [ "get_module_spec" ] },
|
|
|
|
+ { 'result': [ 0, {} ]})
|
|
|
|
+ self._handle_msg_helper({ "command": [ "get_module_spec",
|
|
|
|
+ { "module_name": "Spec2" } ] },
|
|
|
|
+ { 'result': [ 0, {} ]})
|
|
self._handle_msg_helper({ "command": [ "get_module_spec", 1 ] },
|
|
self._handle_msg_helper({ "command": [ "get_module_spec", 1 ] },
|
|
- {'result': [1, 'Bad get_module_spec command, argument not a dict']})
|
|
+ {'result': [1, 'Bad get_module_spec command, '+
|
|
|
|
+ 'argument not a dict']})
|
|
self._handle_msg_helper({ "command": [ "get_module_spec", { } ] },
|
|
self._handle_msg_helper({ "command": [ "get_module_spec", { } ] },
|
|
- {'result': [1, 'Bad module_name in get_module_spec command']})
|
|
+ {'result': [1, 'Bad module_name in '+
|
|
- self._handle_msg_helper({ "command": [ "get_config" ] }, { 'result': [ 0, { 'version': config_data.BIND10_CONFIG_DATA_VERSION } ]})
|
|
+ 'get_module_spec command']})
|
|
- self._handle_msg_helper({ "command": [ "get_config", { "module_name": "nosuchmodule" } ] },
|
|
+ self._handle_msg_helper({ "command": [ "get_config" ] },
|
|
- {'result': [0, { 'version': config_data.BIND10_CONFIG_DATA_VERSION }]})
|
|
+ { 'result': [ 0, { 'version':
|
|
|
|
+ config_data.BIND10_CONFIG_DATA_VERSION }]})
|
|
|
|
+ self._handle_msg_helper({ "command": [ "get_config",
|
|
|
|
+ { "module_name": "nosuchmodule" } ] },
|
|
|
|
+ {'result': [0, { 'version':
|
|
|
|
+ config_data.BIND10_CONFIG_DATA_VERSION }]})
|
|
self._handle_msg_helper({ "command": [ "get_config", 1 ] },
|
|
self._handle_msg_helper({ "command": [ "get_config", 1 ] },
|
|
- {'result': [1, 'Bad get_config command, argument not a dict']})
|
|
+ {'result': [1, 'Bad get_config command, '+
|
|
|
|
+ 'argument not a dict']})
|
|
self._handle_msg_helper({ "command": [ "get_config", { } ] },
|
|
self._handle_msg_helper({ "command": [ "get_config", { } ] },
|
|
- {'result': [1, 'Bad module_name in get_config command']})
|
|
+ {'result': [1, 'Bad module_name in '+
|
|
|
|
+ 'get_config command']})
|
|
self._handle_msg_helper({ "command": [ "set_config" ] },
|
|
self._handle_msg_helper({ "command": [ "set_config" ] },
|
|
{'result': [1, 'Wrong number of arguments']})
|
|
{'result': [1, 'Wrong number of arguments']})
|
|
self._handle_msg_helper({ "command": [ "set_config", [{}]] },
|
|
self._handle_msg_helper({ "command": [ "set_config", [{}]] },
|
|
{'result': [0]})
|
|
{'result': [0]})
|
|
|
|
+
|
|
self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
|
|
|
|
-
|
|
+ def test_handle_msg_module_and_stats_commands(self):
|
|
-
|
|
+ self._handle_msg_helper({ "command":
|
|
- my_ok_answer = { 'result': [ 0 ] }
|
|
+ ["module_spec", self.spec.get_full_spec()]
|
|
|
|
+ },
|
|
|
|
+ {'result': [0]})
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ self.assertEqual(ccsession.create_command(
|
|
|
|
+ ccsession.COMMAND_MODULE_SPECIFICATION_UPDATE,
|
|
|
|
+ [ self.spec.get_module_name(),
|
|
|
|
+ self.spec.get_full_spec()]),
|
|
|
|
+ self.fake_session.get_message("Cmdctl", None))
|
|
|
|
+
|
|
|
|
+ self._handle_msg_helper({ "command": [ "module_spec", { 'foo': 1 } ] },
|
|
|
|
+ {'result': [1, 'Error in data definition: no '+
|
|
|
|
+ 'module_name in module_spec']})
|
|
|
|
+
|
|
|
|
+ self._handle_msg_helper({ "command": [ "get_module_spec" ] },
|
|
|
|
+ { 'result': [ 0, { self.spec.get_module_name():
|
|
|
|
+ self.spec.get_full_spec() } ]})
|
|
|
|
+ self._handle_msg_helper({ "command": [ "get_module_spec",
|
|
|
|
+ { "module_name" : "Spec2" } ] },
|
|
|
|
+ { 'result': [ 0, self.spec.get_full_spec() ] })
|
|
|
|
+ self._handle_msg_helper({ "command": [ "get_commands_spec" ] },
|
|
|
|
+ { 'result': [ 0, { self.spec.get_module_name():
|
|
|
|
+ self.spec.get_commands_spec()}]})
|
|
|
|
+ self._handle_msg_helper({ "command": [ "get_statistics_spec" ] },
|
|
|
|
+ { 'result': [ 0, { self.spec.get_module_name():
|
|
|
|
+ self.spec.get_statistics_spec()}]})
|
|
|
|
+
|
|
|
|
|
|
|
|
+ def __test_handle_msg_update_config_helper(self, new_config):
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
|
|
+ my_ok_answer = { 'result': [ 0 ] }
|
|
|
|
|
|
self.fake_session.group_sendmsg(my_ok_answer, "ConfigManager")
|
|
self.fake_session.group_sendmsg(my_ok_answer, "ConfigManager")
|
|
-
|
|
+
|
|
- self._handle_msg_helper({ "command": [ "set_config", [self.name, { "test": 123 }] ] },
|
|
+ self._handle_msg_helper({ "command": [ "set_config",
|
|
|
|
+ [self.name, new_config] ] },
|
|
my_ok_answer)
|
|
my_ok_answer)
|
|
-
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
self.assertEqual(len(self.fake_session.message_queue), 1)
|
|
self.assertEqual(len(self.fake_session.message_queue), 1)
|
|
- self.assertEqual({'command': [ 'config_update', {'test': 123}]},
|
|
+ self.assertEqual({'command': [ 'config_update', new_config]},
|
|
self.fake_session.get_message(self.name, None))
|
|
self.fake_session.get_message(self.name, None))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ self.assertEqual(self.cm.config.data, {self.name: new_config,
|
|
|
|
+ 'version': config_data.BIND10_CONFIG_DATA_VERSION})
|
|
|
|
+
|
|
|
|
|
|
self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
|
|
|
|
-
|
|
+ def test_handle_msg_update_config(self):
|
|
- self.fake_session.group_sendmsg(my_ok_answer, "ConfigManager")
|
|
+
|
|
- self._handle_msg_helper({ "command": [ "set_config", [self.name, { "test": 124 }] ] },
|
|
+
|
|
- my_ok_answer)
|
|
+ self.__test_handle_msg_update_config_helper({ "test": 123 })
|
|
- self.assertEqual(len(self.fake_session.message_queue), 1)
|
|
|
|
- self.assertEqual({'command': [ 'config_update', {'test': 124}]},
|
|
|
|
- self.fake_session.get_message(self.name, None))
|
|
|
|
- self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
|
|
|
|
|
|
|
|
+ self.__test_handle_msg_update_config_helper({ "test": 124 })
|
|
|
|
|
|
-
|
|
+ self.__test_handle_msg_update_config_helper({ "test": 125 })
|
|
- self.fake_session.group_sendmsg(my_ok_answer, "ConfigManager")
|
|
|
|
- self._handle_msg_helper({ "command": [ "set_config", [ { self.name: { "test": 125 } }] ] },
|
|
|
|
- my_ok_answer )
|
|
|
|
- self.assertEqual(len(self.fake_session.message_queue), 1)
|
|
|
|
- self.assertEqual({'command': [ 'config_update', {'test': 125}]},
|
|
|
|
- self.fake_session.get_message(self.name, None))
|
|
|
|
- self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
|
|
|
|
|
|
- my_bad_answer = { 'result': [1, "bad_answer"] }
|
|
+ self.__test_handle_msg_update_config_helper({ "test": 126 })
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ my_bad_answer = { 'result': [1, "bad config"] }
|
|
self.fake_session.group_sendmsg(my_bad_answer, "ConfigManager")
|
|
self.fake_session.group_sendmsg(my_bad_answer, "ConfigManager")
|
|
- self._handle_msg_helper({ "command": [ "set_config", [ self.name, { "test": 125 }] ] },
|
|
+ self._handle_msg_helper({ "command": [ "set_config",
|
|
|
|
+ [self.name, { "test": 127 }] ] },
|
|
my_bad_answer )
|
|
my_bad_answer )
|
|
self.assertEqual(len(self.fake_session.message_queue), 1)
|
|
self.assertEqual(len(self.fake_session.message_queue), 1)
|
|
- self.assertEqual({'command': [ 'config_update', {'test': 125}]},
|
|
+ self.assertEqual({'command': [ 'config_update', {'test': 127}]},
|
|
self.fake_session.get_message(self.name, None))
|
|
self.fake_session.get_message(self.name, None))
|
|
|
|
+
|
|
|
|
+ self.cm.read_config()
|
|
|
|
+ self.assertEqual(self.cm.config.data, { self.name: {'test': 126},
|
|
|
|
+ 'version': config_data.BIND10_CONFIG_DATA_VERSION})
|
|
|
|
+
|
|
self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
|
|
|
|
self.fake_session.group_sendmsg(None, 'ConfigManager')
|
|
self.fake_session.group_sendmsg(None, 'ConfigManager')
|
|
self._handle_msg_helper({ "command": [ "set_config", [ ] ] },
|
|
self._handle_msg_helper({ "command": [ "set_config", [ ] ] },
|
|
{'result': [1, 'Wrong number of arguments']} )
|
|
{'result': [1, 'Wrong number of arguments']} )
|
|
- self._handle_msg_helper({ "command": [ "set_config", [ self.name, { "test": 125 }] ] },
|
|
+ self._handle_msg_helper({ "command": [ "set_config",
|
|
- { 'result': [1, 'No answer message from TestModule']} )
|
|
+ [ self.name, { "test": 128 }]]},
|
|
-
|
|
+ { 'result': [1, 'No answer message '+
|
|
-
|
|
+ 'from TestModule']} )
|
|
-
|
|
+
|
|
-
|
|
+
|
|
-
|
|
+
|
|
-
|
|
+ self.assertEqual(len(self.fake_session.message_queue), 1)
|
|
|
|
+ self.assertEqual(
|
|
|
|
+ ccsession.create_command(ccsession.COMMAND_CONFIG_UPDATE,
|
|
|
|
+ { "test": 128 }),
|
|
|
|
+ self.fake_session.get_message("TestModule", None))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ self._handle_msg_helper({ "command":
|
|
|
|
+ ["shutdown"]
|
|
|
|
+ },
|
|
|
|
+ {'result': [0]})
|
|
|
|
+
|
|
|
|
+ def test_stopping_message(self):
|
|
|
|
+
|
|
self._handle_msg_helper({ "command":
|
|
self._handle_msg_helper({ "command":
|
|
["module_spec", self.spec.get_full_spec()]
|
|
["module_spec", self.spec.get_full_spec()]
|
|
},
|
|
},
|
|
{'result': [0]})
|
|
{'result': [0]})
|
|
- self._handle_msg_helper({ "command": [ "module_spec", { 'foo': 1 } ] },
|
|
|
|
- {'result': [1, 'Error in data definition: no module_name in module_spec']})
|
|
|
|
- self._handle_msg_helper({ "command": [ "get_module_spec" ] }, { 'result': [ 0, { self.spec.get_module_name(): self.spec.get_full_spec() } ]})
|
|
|
|
- self._handle_msg_helper({ "command": [ "get_module_spec",
|
|
|
|
- { "module_name" : "Spec2" } ] },
|
|
|
|
- { 'result': [ 0, self.spec.get_full_spec() ] })
|
|
|
|
- self._handle_msg_helper({ "command": [ "get_commands_spec" ] }, { 'result': [ 0, { self.spec.get_module_name(): self.spec.get_commands_spec() } ]})
|
|
|
|
- self._handle_msg_helper({ "command": [ "get_statistics_spec" ] }, { 'result': [ 0, { self.spec.get_module_name(): self.spec.get_statistics_spec() } ]})
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- self.assertEqual(len(self.fake_session.message_queue), 2)
|
|
|
|
- self.fake_session.get_message("Cmdctl", None)
|
|
|
|
- self.fake_session.get_message("TestModule", None)
|
|
|
|
|
|
|
|
- self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
+
|
|
|
|
+
|
|
|
|
+ self.assertEqual(ccsession.create_command(
|
|
|
|
+ ccsession.COMMAND_MODULE_SPECIFICATION_UPDATE,
|
|
|
|
+ [ self.spec.get_module_name(),
|
|
|
|
+ self.spec.get_full_spec()]),
|
|
|
|
+ self.fake_session.get_message("Cmdctl", None))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -375,17 +431,20 @@ class TestConfigManager(unittest.TestCase):
|
|
['Spec2', None] ] },
|
|
['Spec2', None] ] },
|
|
self.fake_session.get_message("Cmdctl", None))
|
|
self.fake_session.get_message("Cmdctl", None))
|
|
|
|
|
|
-
|
|
+
|
|
|
|
+
|
|
self._handle_msg_helper({ "command":
|
|
self._handle_msg_helper({ "command":
|
|
[ "stopping",
|
|
[ "stopping",
|
|
{ "module_name": "NoSuchModule" } ] },
|
|
{ "module_name": "NoSuchModule" } ] },
|
|
None)
|
|
None)
|
|
self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
|
|
|
|
- self._handle_msg_helper({ "command":
|
|
+
|
|
- ["shutdown"]
|
|
+
|
|
- },
|
|
+ self._handle_msg_helper({ "command": [ "stopping",
|
|
- {'result': [0]})
|
|
+ { "module_name": "Foo"}] },
|
|
|
|
+ None)
|
|
|
|
+ self.assertEqual(len(self.fake_session.message_queue), 0)
|
|
|
|
|
|
def test_set_config_virtual(self):
|
|
def test_set_config_virtual(self):
|
|
"""Test that if the module is virtual, we don't send it over the
|
|
"""Test that if the module is virtual, we don't send it over the
|