diff --git a/src/bin/bind10/bind10_src.py.in b/src/bin/bind10/bind10_src.py.in index 5189802c27..f905892221 100755 --- a/src/bin/bind10/bind10_src.py.in +++ b/src/bin/bind10/bind10_src.py.in @@ -318,14 +318,18 @@ class BoB: answer = isc.config.ccsession.create_answer(0) elif command == "sendstats": # send statistics data to the stats daemon immediately - cmd = isc.config.ccsession.create_command( + statistics_data = { + 'boot_time': time.strftime('%Y-%m-%dT%H:%M:%SZ', _BASETIME) + } + valid = self.ccs.get_module_spec().validate_statistics( + True, statistics_data) + if valid: + cmd = isc.config.ccsession.create_command( 'set', { "owner": "Boss", - "data": { - 'boot_time': time.strftime('%Y-%m-%dT%H:%M:%SZ', _BASETIME) - }}) - seq = self.cc_session.group_sendmsg(cmd, 'Stats') - self.cc_session.group_recvmsg(True, seq) - answer = isc.config.ccsession.create_answer(0) + "data": statistics_data }) + seq = self.cc_session.group_sendmsg(cmd, 'Stats') + self.cc_session.group_recvmsg(True, seq) + answer = isc.config.ccsession.create_answer(0) elif command == "ping": answer = isc.config.ccsession.create_answer(0, "pong") elif command == "show_processes": diff --git a/src/bin/bind10/tests/bind10_test.py.in b/src/bin/bind10/tests/bind10_test.py.in index dc1d6603c4..af7b6f49ef 100644 --- a/src/bin/bind10/tests/bind10_test.py.in +++ b/src/bin/bind10/tests/bind10_test.py.in @@ -137,9 +137,27 @@ class TestBoB(unittest.TestCase): def group_sendmsg(self, msg, group): (self.msg, self.group) = (msg, group) def group_recvmsg(self, nonblock, seq): pass + class DummyModuleCCSession(): + module_spec = isc.config.module_spec.ModuleSpec({ + "module_name": "Boss", + "statistics": [ + { + "item_name": "boot_time", + "item_type": "string", + "item_optional": False, + "item_default": "1970-01-01T00:00:00Z", + "item_title": "Boot time", + "item_description": "A date time when bind10 process starts initially", + "item_format": "date-time" + } + ] + }) + def get_module_spec(self): + return self.module_spec bob = BoB() bob.verbose = True bob.cc_session = DummySession() + bob.ccs = DummyModuleCCSession() # a bad command self.assertEqual(bob.command_handler(-1, None), isc.config.ccsession.create_answer(1, "bad command"))