Пример #1
0
    def test_do_fire(self):
        # Setup
        notifiers.NOTIFIER_FUNCTIONS.clear()

        notifier_1 = mock.Mock()
        notifier_2 = mock.Mock()
        notifier_3 = mock.Mock()

        notifiers.NOTIFIER_FUNCTIONS['notifier_1'] = notifier_1.fire
        notifiers.NOTIFIER_FUNCTIONS['notifier_2'] = notifier_2.fire
        notifiers.NOTIFIER_FUNCTIONS['notifier_3'] = notifier_3.fire

        self.event_manager.create('notifier_1', {'1': '1'},
                                  [event_data.TYPE_REPO_SYNC_STARTED])
        self.event_manager.create('notifier_2', {'2': '2'}, [
            event_data.TYPE_REPO_SYNC_STARTED,
            event_data.TYPE_REPO_SYNC_FINISHED
        ])
        self.event_manager.create('notifier_3', {'3': '3'},
                                  [event_data.TYPE_REPO_SYNC_FINISHED])

        # Test
        event = event_data.Event(event_data.TYPE_REPO_SYNC_STARTED, 'payload')
        self.manager._do_fire(event)

        # Verify
        self.assertEqual(1, notifier_1.fire.call_count)
        self.assertEqual(1, notifier_2.fire.call_count)
        self.assertEqual(0, notifier_3.fire.call_count)

        self.assertEqual({'1': '1'}, notifier_1.fire.call_args[0][0])
        self.assertEqual(event, notifier_1.fire.call_args[0][1])

        self.assertEqual({'2': '2'}, notifier_2.fire.call_args[0][0])
        self.assertEqual(event, notifier_2.fire.call_args[0][1])
Пример #2
0
 def fire_repo_publish_started(self, repo_id, distributor_id):
     """
     Fires an event indicating the given repository's distributor has started
     a publish.
     """
     payload = {'repo_id': repo_id, 'distributor_id': distributor_id}
     self._do_fire(e.Event(e.TYPE_REPO_PUBLISH_STARTED, payload))
Пример #3
0
    def test_do_fire_with_exception(self):
        # Setup
        notifiers.NOTIFIER_FUNCTIONS.clear()

        notifier_1 = mock.Mock()
        notifier_2 = mock.Mock()

        notifiers.NOTIFIER_FUNCTIONS['notifier_1'] = notifier_1.fire
        notifiers.NOTIFIER_FUNCTIONS['notifier_2'] = notifier_2.fire

        notifier_1.fire.side_effect = Exception('Exception from notifier fire')

        self.event_manager.create('notifier_1', {'1': '1'},
                                  [event_data.TYPE_REPO_SYNC_STARTED])
        self.event_manager.create('notifier_2', {'2': '2'},
                                  [event_data.TYPE_REPO_SYNC_STARTED])

        # Test
        event = event_data.Event(event_data.TYPE_REPO_SYNC_STARTED, 'payload')
        self.manager._do_fire(event)

        # Verify

        # The main purpose of the test is that an exception was not raised.
        # We should also double-check that the second notifier was still invoked.

        self.assertEqual(1, notifier_1.fire.call_count)
        self.assertEqual(1, notifier_2.fire.call_count)

        self.assertEqual({'1': '1'}, notifier_1.fire.call_args[0][0])
        self.assertEqual(event, notifier_1.fire.call_args[0][1])

        self.assertEqual({'2': '2'}, notifier_2.fire.call_args[0][0])
        self.assertEqual(event, notifier_2.fire.call_args[0][1])
Пример #4
0
    def test_event_instantiation(self, mock_find):
        event_type = 'test_type'
        payload = 'test_payload'

        try:
            event = event_data.Event(event_type, payload)
        except Exception, e:
            self.fail(e.message)
Пример #5
0
Файл: fire.py Проект: omps/pulp
 def fire_repo_publish_finished(self, publish_result):
     """
     Fires an event indicating the given repository has completed a publish.
     The success/failure of the publish, timestamp information, and publish report
     provided by the distributor are all included in the publish_result.
     """
     publish_result.pop('_id', None)
     self._do_fire(e.Event(e.TYPE_REPO_PUBLISH_FINISHED, publish_result))
Пример #6
0
    def test_fire(self, mock_get_collection, mock_getbool, mock_smtp, mock_publish, mock_task_ser):
        # verify that the event system will trigger listeners of this type
        mock_get_collection.return_value.find.return_value = [self.event_doc]
        mock_task_ser.return_value = 'serialized task'
        event = data.Event(data.TYPE_REPO_SYNC_FINISHED, 'stuff')
        factory.initialize()
        factory.event_fire_manager()._do_fire(event)

        # verify that the mail event handler was called and processed something
        self.assertEqual(mock_smtp.return_value.sendmail.call_count, 2)
Пример #7
0
Файл: fire.py Проект: omps/pulp
    def fire_repo_sync_finished(self, sync_result):
        """
        Fires an event indicating the given repository has completed a sync.
        The success/failure of the sync, timestamp information, and sync report
        provided by the importer are all included in the sync_result.

        @param sync_result: DB object describing the sync result
        @type  sync_result: dict
        """
        sync_result.pop('_id', None)
        self._do_fire(e.Event(e.TYPE_REPO_SYNC_FINISHED, sync_result))
Пример #8
0
    def test_event_instantiation(self, mock_find, mock_current_task):
        mock_current_task.request.id = 'fake_id'
        fake_task_status = TaskStatus('fake_id', 'fake_queue')
        mock_find.return_value = dict(fake_task_status)

        event_type = 'test_type'
        payload = 'test_payload'

        try:
            event = event_data.Event(event_type, payload)
        except Exception, e:
            self.fail(e.message)
Пример #9
0
    def test_event_instantiation(self, mock_current_task):
        mock_current_task.request.id = 'fake_id'
        fake_task_status = TaskStatus('fake_id')
        fake_task_status.save()

        event_type = 'test_type'
        payload = 'test_payload'

        try:
            event = event_data.Event(event_type, payload)
        except Exception, e:
            self.fail(e.message)
Пример #10
0
    def test_data_call(self, mock_current_task):
        mock_current_task.request.id = 'fake_id'
        fake_task_status = TaskStatus('fake_id')
        fake_task_status.save()
        data = {
            'event_type': 'test_type',
            'payload': 'test_payload',
            'call_report': fake_task_status
        }

        event = event_data.Event(data['event_type'], data['payload'])

        self.assertEqual(data, event.data())
Пример #11
0
    def test_data_call(self, mock_find, mock_current_task):
        mock_current_task.request.id = 'fake_id'
        fake_task_status = TaskStatus('fake_id')
        mock_find.return_value = dict(fake_task_status)
        data = {
            'event_type': 'test_type',
            'payload': 'test_payload',
            'call_report': dict(fake_task_status)
        }

        event = event_data.Event(data['event_type'], data['payload'])

        self.assertEqual(data, event.data())
Пример #12
0
    def test_data_call(self, mock_current_task, mock_task_serializer):
        mock_current_task.request.id = 'fake_id'
        fake_task_status = TaskStatus('fake_id')
        fake_task_status.save()
        data = {
            'event_type': 'test_type',
            'payload': 'test_payload',
            'call_report': fake_task_status
        }

        event = event_data.Event(data['event_type'], data['payload'])

        data['call_report'] = mock_task_serializer.return_value
        self.assertDictEqual(data, event.data())
        mock_task_serializer.assert_called_once_with(fake_task_status)
Пример #13
0
    def test_do_fire_with_star(self):
        # Setup
        notifiers.NOTIFIER_FUNCTIONS.clear()

        notifier_1 = mock.Mock()

        notifiers.NOTIFIER_FUNCTIONS['notifier_1'] = notifier_1.fire

        self.event_manager.create('notifier_1', {}, ['*'])

        # Test
        event = event_data.Event(event_data.TYPE_REPO_SYNC_STARTED, 'payload')
        self.manager._do_fire(event)

        # Verify
        self.assertEqual(1, notifier_1.fire.call_count)
Пример #14
0
 def test_email_serialize_objid(self, mock_smtp, mock_getbool, mock_task_ser):
     event_with_id = data.Event('test-1', {'foo': _test_objid()})
     mock_task_ser.return_value = 'serialized task'
     # no TypeError = success
     mail.handle_event(self.notifier_config, event_with_id)
Пример #15
0
 def test_data_call(self, mock_find):
     data = {'event_type': 'test_type',
             'payload': 'test_payload',
             'call_report': _test_call_report.serialize()}
     event = event_data.Event(data['event_type'], data['payload'])
     self.assertEqual(data, event.data())
Пример #16
0
Файл: fire.py Проект: omps/pulp
 def fire_repo_sync_started(self, repo_id):
     """
     Fires an event indicating the given repository has started a sync.
     """
     payload = {'repo_id': repo_id}
     self._do_fire(e.Event(e.TYPE_REPO_SYNC_STARTED, payload))
Пример #17
0
    def test_no_current_task(self):
        event = event_data.Event('fake_type', {})

        self.assertTrue(event.call_report is None)
Пример #18
0
 def test_email_serialize_objid(self, mock_smtp, mock_getbool):
     event_with_id = data.Event('test-1', {'foo': _test_objid()})
     # no TypeError = success
     mail.handle_event(self.notifier_config, event_with_id)