def test_add_event_on_ready_stream(self, mock_config_wrap): tm = trigger_manager.TriggerManager('test') tm.db = mock.MagicMock(spec=tm.db) tm.trigger_definitions = [mock.MagicMock() for n in range(3)] m_def = tm.trigger_definitions[2] tm.trigger_definitions[0].match.return_value = None tm.trigger_definitions[1].match.return_value = None event = mock.MagicMock(name='event', spec=dict) tm.save_event = mock.MagicMock() tm._add_or_create_stream = mock.MagicMock() tm._add_or_create_stream.return_value.fire_timestamp = "Fire!" tm._ready_to_fire = mock.MagicMock() m_def.should_fire.return_value = True tm.add_event(event) tm.save_event.assert_called_once_with(event) for td in tm.trigger_definitions: td.match.assert_called_once_with(event) m_def.get_distinguishing_traits.assert_called_once_with( event, m_def.match.return_value) tm._add_or_create_stream.assert_called_once_with( m_def, event, m_def.get_distinguishing_traits.return_value) self.assertFalse(tm.db.get_stream_events.called) self.assertFalse(m_def.should_fire.called) self.assertFalse(tm._ready_to_fire.called)
def test_add_notification(self, mock_config_wrap): tm = trigger_manager.TriggerManager('test') tm.convert_notification = mock.MagicMock() tm.add_event = mock.MagicMock() tm.add_notification("test notification") tm.convert_notification.assert_called_once_with("test notification") tm.add_event.assert_called_once_with(tm.convert_notification.return_value)
def test_add_notification_invalid_or_dropped(self, mock_config_wrap): tm = trigger_manager.TriggerManager('test') tm.convert_notification = mock.MagicMock() tm.add_event = mock.MagicMock() tm.convert_notification.return_value = None tm.add_notification("test notification") tm.convert_notification.assert_called_once_with("test notification") self.assertFalse(tm.add_event.called)
def test_ready_to_fire(self, mock_config_wrap): tm = trigger_manager.TriggerManager('test') tm.db = mock.MagicMock(spec=tm.db) tm.current_time = mock.MagicMock() trigger_def = mock.MagicMock() test_stream = mock.MagicMock() tm._ready_to_fire(test_stream, trigger_def) trigger_def.get_fire_timestamp.assert_called_once_with(tm.current_time.return_value) tm.db.stream_ready_to_fire.assert_called_once_with(test_stream, trigger_def.get_fire_timestamp.return_value)
def test_save_event(self, mock_config_wrap): tm = trigger_manager.TriggerManager('test') tm.db = mock.MagicMock(spec=tm.db) event = dict(message_id='1234-test-5678', timestamp=datetime.datetime(2014,8,1,10,9,8,77777), event_type='test.thing', test_trait="foobar", other_test_trait=42) self.assertTrue(tm.save_event(event)) tm.db.create_event.assert_called_once_with('1234-test-5678', 'test.thing', datetime.datetime(2014,8,1,10,9,8,77777), dict(test_trait='foobar', other_test_trait=42))
def test_add__del_trigger_definition(self, mock_config_wrap): tm = trigger_manager.TriggerManager('test') tm.db = mock.MagicMock(spec=tm.db) td1 = dict(name='test_trigger1', expiration='$last + 1d', fire_pipeline='test_pipeline', fire_criteria=[dict(event_type='test.thing')], match_criteria=[dict(event_type='test.*')]) tdlist = list() tdlist.append(td1) tm.add_trigger_definition(tdlist) self.assertTrue('test_trigger1' in tm.trigger_map) tm.delete_trigger_definition('test_trigger1') self.assertFalse('test_trigger1' in tm.trigger_map)
def test_add_or_create_stream_create(self, mock_config_wrap): tm = trigger_manager.TriggerManager('test') tm.db = mock.MagicMock(spec=tm.db) tm.db.get_active_stream.return_value = None tm.current_time = mock.MagicMock() trigger_def = mock.MagicMock() dist_traits = 'some traits' event = "eventful!" ret = tm._add_or_create_stream(trigger_def, event, dist_traits) tm.db.get_active_stream.assert_called_once_with(trigger_def.name, dist_traits, tm.current_time.return_value) tm.db.create_stream.assert_called_once_with(trigger_def.name, event, dist_traits, trigger_def.expiration) self.assertFalse(tm.db.add_event_stream.called) self.assertEqual(ret, tm.db.create_stream.return_value)
def test_convert_notification(self, mock_config_wrap, mock_condenser): tm = trigger_manager.TriggerManager('test') tm.db = mock.MagicMock(spec=tm.db) tm.distiller = mock.MagicMock(spec=tm.distiller) test_event = "I'm a test event!" tm.distiller.to_event.return_value = True cond = mock_condenser.return_value cond.validate.return_value = True cond.get_event.return_value = test_event tm.save_event = mock.MagicMock() tm.save_event.return_value = True res = tm.convert_notification('test notification here') mock_condenser.assert_called_once_with(tm.db) cond.clear.assert_called_once_with() cond.validate.assert_called_once_with() tm.distiller.to_event.assert_called_once_with('test notification here', cond) self.assertEquals(res, test_event)
def test_convert_notification_invalid(self, mock_config_wrap, mock_condenser): tm = trigger_manager.TriggerManager('test') tm.db = mock.MagicMock(spec=tm.db) tm.distiller = mock.MagicMock(spec=tm.distiller) test_event = "I'm a test event!" tm.distiller.to_event.return_value = True cond = mock_condenser.return_value cond.validate.return_value = False cond.get_event.return_value = test_event tm.save_event = mock.MagicMock() tm.save_event.return_value = True test_notif = dict(event_type='test.notification.here', message_id='4242-4242') res = tm.convert_notification(test_notif) mock_condenser.assert_called_once_with(tm.db) cond.clear.assert_called_once_with() cond.validate.assert_called_once_with() tm.distiller.to_event.assert_called_once_with(test_notif, cond) self.assertFalse(tm.save_event.called) self.assertIsNone(res)