def setUp(self): super(TestAlarmEvaluationService, self).setUp() conf = service.prepare_service(argv=[], config_files=[]) self.CONF = self.useFixture(fixture_config.Config(conf)).conf self.setup_messaging(self.CONF) self.threshold_eval = mock.Mock() self.evaluators = extension.ExtensionManager.make_test_instance( [ extension.Extension( 'threshold', None, None, self.threshold_eval), ] ) self.storage_conn = mock.MagicMock() self.svc = evaluator.AlarmEvaluationService(self.CONF) self.svc.tg = mock.Mock() self.svc.partition_coordinator = mock.MagicMock() p_coord = self.svc.partition_coordinator p_coord.extract_my_subset.side_effect = lambda _, x: x self.svc.evaluators = self.evaluators self.svc.supported_evaluators = ['threshold']
def test_check_alarm_query_constraints(self): self._fake_conn.get_alarms.return_value = [] self._fake_pc.extract_my_subset.return_value = [] self._fake_pc.is_active.return_value = False svc = evaluator.AlarmEvaluationService(0, self.CONF) self.addCleanup(svc.terminate) time.sleep(1) expected = [({'enabled': True, 'exclude': {'type': 'event'}}, )] self.assertEqual(expected, svc.storage_conn.get_alarms.call_args_list)
def test_check_alarm_query_constraints(self): self._fake_conn.get_alarms.return_value = [] self._fake_pc.extract_my_subset.return_value = [] self._fake_pc.is_active.return_value = False svc = evaluator.AlarmEvaluationService(0, self.CONF) self.addCleanup(svc.terminate) time.sleep(1) child = {'enabled': True, 'type': {'ne': 'event'}} self.assertDictContains(svc.storage_conn.get_alarms.call_args[1], child)
def setUp(self): super(TestAlarmEvaluationService, self).setUp() conf = service.prepare_service(argv=[], config_files=[]) self.CONF = self.useFixture(fixture_config.Config(conf)).conf self.CONF.set_override('workers', 1, 'evaluator') self.setup_messaging(self.CONF) self.threshold_eval = mock.MagicMock() self.evaluators = extension.ExtensionManager.make_test_instance([ extension.Extension('threshold', None, None, self.threshold_eval), ]) self.svc = evaluator.AlarmEvaluationService(self.CONF) self.svc.tg = mock.Mock()
def test_evaluation_cycle(self): alarm = mock.Mock(type='threshold', alarm_id="alarm_id1") self._fake_pc.extract_my_subset.return_value = ["alarm_id1"] self._fake_pc.is_active.return_value = False self._fake_conn.get_alarms.return_value = [alarm] self.threshold_eval.evaluate.side_effect = [Exception('Boom!'), None] svc = evaluator.AlarmEvaluationService(0, self.CONF) self.addCleanup(svc.terminate) time.sleep(1) target = svc.partition_coordinator.extract_my_subset target.assert_called_once_with(svc.PARTITIONING_GROUP_NAME, ["alarm_id1"]) self.threshold_eval.evaluate.assert_called_once_with(alarm)
def test_unknown_extension_skipped(self): alarms = [ mock.Mock(type='not_existing_type', alarm_id='a'), mock.Mock(type='threshold', alarm_id='b') ] self._fake_pc.is_active.return_value = False self._fake_pc.extract_my_subset.return_value = ['a', 'b'] self._fake_conn.get_alarms.return_value = alarms svc = evaluator.AlarmEvaluationService(0, self.CONF) self.addCleanup(svc.terminate) time.sleep(1) self.threshold_eval.evaluate.assert_called_once_with(alarms[1])
def test_evaluation_cycle_no_coordination_alarm_modified(self): alarm = mock.Mock(type='gnocchi_aggregation_by_metrics_threshold', alarm_id="alarm_id1") self._fake_pc.is_active.return_value = False self._fake_conn.get_alarms.return_value = [alarm] self._fake_conn.conditional_update.return_value = False svc = evaluator.AlarmEvaluationService(0, self.CONF) self.addCleanup(svc.terminate) time.sleep(1) target = svc.partition_coordinator.extract_my_subset self.assertEqual(0, target.call_count) self.assertEqual(0, self.threshold_eval.evaluate.call_count)
def test_evaluation_cycle_with_bad_alarm(self): alarms = [ mock.Mock(type='threshold', name='bad', alarm_id='a'), mock.Mock(type='threshold', name='good', alarm_id='b'), ] self.threshold_eval.evaluate.side_effect = [Exception('Boom!'), None] self._fake_pc.is_active.return_value = False self._fake_pc.extract_my_subset.return_value = ['a', 'b'] self._fake_conn.get_alarms.return_value = alarms svc = evaluator.AlarmEvaluationService(0, self.CONF) self.addCleanup(svc.terminate) time.sleep(1) self.assertEqual([mock.call(alarms[0]), mock.call(alarms[1])], self.threshold_eval.evaluate.call_args_list)
def _do_test_start(self, test_interval=120, coordination_heartbeat=1.0, coordination_active=False): self.CONF.set_override('evaluation_interval', test_interval) self.CONF.set_override('heartbeat', coordination_heartbeat, group='coordination') self._fake_pc.is_active.return_value = coordination_active svc = evaluator.AlarmEvaluationService(0, self.CONF) self.addCleanup(svc.terminate) svc.terminate() svc.partition_coordinator.start.assert_called_once_with() svc.partition_coordinator.join_group.assert_called_once_with( svc.PARTITIONING_GROUP_NAME)
def evaluator(): conf = service.prepare_service() os_service.launch(conf, evaluator_svc.AlarmEvaluationService(conf)).wait()
def evaluator(): conf = service.prepare_service() os_service.launch(conf, evaluator_svc.AlarmEvaluationService(conf), workers=conf.evaluator.workers).wait()