def testTrySubscribeFail(self, init_sub, get_class, get_type, ns, get_param): tm = TriggerMonitor() tm.load_config() assert tm.try_subscribe("var1") == False init_sub.assert_not_called()
def testTrySubscribeSucceed(self, init_sub, get_class, get_type, ns, get_param): tm = TriggerMonitor() tm.load_config() assert tm.try_subscribe("var1") == True init_sub.assert_called_once() assert init_sub.call_args[0][0] == 'var1'
def testLoadConfig(self, ns, get_param, logwarn, logerr): tm = TriggerMonitor() tm.load_config() assert tm.conditions == {} assert tm.on_change_only == False assert tm.trigger_delay == 1000 assert tm.bag_from == 5 assert tm.bag_to == 5 assert tm.bag_path == '/ns/bag_path:None' logwarn.assert_not_called() logerr.assert_not_called()
def testTriggerDelayLess(self, get_param, ns): tm = TriggerMonitor() tm.load_config() tm.on_change_only = True tm.trigger_delay = 100 tm.variable_changed("test", "var1") t1 = tm.prev_change["var1"] tm.variable_changed("test2", "var1") assert tm.prev_values["var1"] == "test2" assert tm.prev_change["var1"] == t1
def testDefaults(self): tm = TriggerMonitor() assert tm.node_id == "BBTM" assert tm.conditions == None assert tm.exporting == False assert tm.prev_values == {} assert tm.prev_change == {}
def testConditionTrue(self, export, ns, get_param): tm = TriggerMonitor() tm.load_config() tm.conditions["var1"] = "data > 2 and data < 5" tm.trigger_delay = 0 for i in range(6): tm.variable_changed(i, "var1") assert export.call_count == 2 assert tm.exporting == False
def testNoPrevChange(self, get_param, ns): tm = TriggerMonitor() tm.load_config() tm.exporting = True tm.variable_changed("test", "var1") assert tm.prev_values["var1"] == "test" assert "var1" not in tm.prev_change assert len(tm.prev_values.items()) == 1
def testFormattedLog(self, formatted_log): tm = TriggerMonitor() tm.formatted_log('i', 'test') formatted_log.assert_called_once() formatted_log.assert_called_with(tm, 'i', 'test', 'BBTM') formatted_log.reset_mock() tm.formatted_log('w', 'test2') formatted_log.assert_called_once() formatted_log.assert_called_with(tm, 'w', 'test2', 'BBTM') formatted_log.reset_mock() tm.formatted_log('e', 'test3') formatted_log.assert_called_once() formatted_log.assert_called_with(tm, 'e', 'test3', 'BBTM')
def testConditionSyntaxError(self, log, ns, get_param): tm = TriggerMonitor() tm.load_config() log.reset_mock() tm.conditions["var1"] = "a.b.c" tm.variable_changed(1, "var1") log.assert_called_once() log.assert_has_calls([call('w', "<type 'exceptions.NameError'> name 'a' is not defined")]) assert tm.exporting == False
def testSubscribe(self, sleep, shutdown, sub, rate, ns, get_param): tm = TriggerMonitor() tm.load_config() TestTriggerMonitor.is_shutdown = 4 tm.subscribe('var1') assert sleep.call_count == 4 sub.assert_has_calls([call('var1'), call('var1')])
def testExportPublishUploadCalled(self, export, sp, upload, publish, ns, get_param): tm = TriggerMonitor() tm.load_config() tm.export("test", "var1") publish.assert_called_once() publish.assert_has_calls([call('test', 'var1', 'test', 0, 5)]) upload.assert_called_once() upload.assert_has_calls([call('test', 'test', 'var1')])
def testStart(self, publisher_init, thread_start, thread_init, wait_for_service, spin, load_config): tm = TriggerMonitor() tm.conditions = {} tm.conditions["var1"] = "" tm.conditions["var2"] = "" tm.start() load_config.assert_called_once() wait_for_service.assert_called_once() publisher_init.assert_called_once() spin.assert_called_once() assert thread_init.call_count == 2 assert thread_start.call_count == 2 assert thread_init.call_args_list[0][1]['args'][0] == "var1" assert thread_init.call_args_list[1][1]['args'][0] == "var2"
def testNoPrevChange(self, get_param, ns): tm = TriggerMonitor() tm.load_config() assert tm.exporting == False assert tm.on_change_only == False tm.variable_changed("test", "var1") tm.variable_changed("test", "var2") assert tm.prev_values["var1"] == "test" assert tm.prev_values["var2"] == "test" assert tm.prev_change["var1"] != None assert tm.prev_change["var2"] != None assert len(tm.prev_values.items()) == 2
def testLoadConfig_RecommendedMissing(self, ns, get_param, logwarn, logerr, _exit): tm = TriggerMonitor() tm.load_config() logwarn.assert_not_called() logerr.assert_not_called() _exit.assert_not_called() logwarn.reset_mock() TestTriggerMonitor.missing_key = "/ns/bag_path" tm.load_config() calls = [call('[BBTM] Mandatory config item not set: bag_path'), call('[BBTM] Mandatory config item(s) missing, exiting.')] logerr.assert_has_calls(calls) logwarn.assert_not_called() _exit.assert_called_once()
def testNs(self, get_name): tm = TriggerMonitor() assert tm._ns("test") == "xxx/test" assert tm._ns("test2") == "xxx/test2" assert tm._ns("test3") == "xxx/test3"
def testNoPrevChange(self, get_param, ns): tm = TriggerMonitor() tm.load_config() tm.on_change_only = True tm.trigger_delay = 0 tm.variable_changed("test", "var1") tm.variable_changed("test", "var2") t1 = tm.prev_change["var1"] t2 = tm.prev_change["var2"] tm.variable_changed("test2", "var1") tm.variable_changed("test", "var2") assert tm.prev_values["var1"] == "test2" assert tm.prev_values["var2"] == "test" assert tm.prev_change["var2"] == t2 assert tm.prev_change["var1"] != t1