Esempio n. 1
0
    def test_wrap_exception_with_notifier(self):
        wrapped = exception_wrapper.wrap_exception(rpc.get_notifier('fake'),
                                                   binary='fake-binary')
        ctxt = context.get_admin_context()
        self.assertRaises(test.TestingException,
                          wrapped(bad_function_exception), 1, ctxt, 3, zoo=3)

        self.assertEqual(1, len(fake_notifier.NOTIFICATIONS))
        notification = fake_notifier.NOTIFICATIONS[0]
        self.assertEqual('bad_function_exception', notification.event_type)
        self.assertEqual(ctxt, notification.context)
        self.assertEqual(3, notification.payload['args']['extra'])
        for key in ['exception', 'args']:
            self.assertIn(key, notification.payload.keys())

        self.assertEqual(1, len(fake_notifier.VERSIONED_NOTIFICATIONS))
        notification = fake_notifier.VERSIONED_NOTIFICATIONS[0]
        self.assertEqual('compute.exception', notification['event_type'])
        self.assertEqual('fake-binary:fake-mini', notification['publisher_id'])
        self.assertEqual('ERROR', notification['priority'])

        payload = notification['payload']
        self.assertEqual('ExceptionPayload', payload['nova_object.name'])
        self.assertEqual('1.0', payload['nova_object.version'])

        payload = payload['nova_object.data']
        self.assertEqual('TestingException', payload['exception'])
        self.assertEqual('bad things happened', payload['exception_message'])
        self.assertEqual('bad_function_exception', payload['function_name'])
        self.assertEqual('nova.tests.unit.test_exception',
                         payload['module_name'])
Esempio n. 2
0
    def test_wrap_exception_with_notifier(self):
        wrapped = exception_wrapper.wrap_exception(rpc.get_notifier('fake'),
                                                   binary='fake-binary')
        ctxt = context.get_admin_context()
        self.assertRaises(test.TestingException,
                          wrapped(bad_function_exception), 1, ctxt, 3, zoo=3)

        self.assertEqual(1, len(fake_notifier.NOTIFICATIONS))
        notification = fake_notifier.NOTIFICATIONS[0]
        self.assertEqual('bad_function_exception', notification.event_type)
        self.assertEqual(ctxt, notification.context)
        self.assertEqual(3, notification.payload['args']['extra'])
        for key in ['exception', 'args']:
            self.assertIn(key, notification.payload.keys())

        self.assertEqual(1, len(fake_notifier.VERSIONED_NOTIFICATIONS))
        notification = fake_notifier.VERSIONED_NOTIFICATIONS[0]
        self.assertEqual('compute.exception', notification['event_type'])
        self.assertEqual('fake-binary:fake-mini', notification['publisher_id'])
        self.assertEqual('ERROR', notification['priority'])

        payload = notification['payload']
        self.assertEqual('ExceptionPayload', payload['nova_object.name'])
        self.assertEqual('1.0', payload['nova_object.version'])

        payload = payload['nova_object.data']
        self.assertEqual('TestingException', payload['exception'])
        self.assertEqual('bad things happened', payload['exception_message'])
        self.assertEqual('bad_function_exception', payload['function_name'])
        self.assertEqual('nova.tests.unit.test_exception',
                         payload['module_name'])
Esempio n. 3
0
 def test_wrap_exception_unknown_module(self):
     ctxt = context.get_admin_context()
     wrapped = exception_wrapper.wrap_exception(rpc.get_notifier('fake'),
                                                binary='nova-compute')
     self.assertRaises(TypeError, wrapped(bad_function_unknown_module),
                       None, ctxt)
     self.assertEqual(1, len(fake_notifier.VERSIONED_NOTIFICATIONS))
     notification = fake_notifier.VERSIONED_NOTIFICATIONS[0]
     payload = notification['payload']['nova_object.data']
     self.assertEqual('unknown', payload['module_name'])
Esempio n. 4
0
 def test_wrap_exception_unknown_module(self):
     ctxt = context.get_admin_context()
     wrapped = exception_wrapper.wrap_exception(
         rpc.get_notifier('fake'), binary='fake-binary')
     self.assertRaises(
         TypeError, wrapped(bad_function_unknown_module), None, ctxt)
     self.assertEqual(1, len(fake_notifier.VERSIONED_NOTIFICATIONS))
     notification = fake_notifier.VERSIONED_NOTIFICATIONS[0]
     payload = notification['payload']['nova_object.data']
     self.assertEqual('unknown', payload['module_name'])
Esempio n. 5
0
    def test_wrap_exception_notification_not_emitted_if_unversioned(
            self, mock_notifier):
        self.flags(notification_format='unversioned', group='notifications')

        wrapped = exception_wrapper.wrap_exception(rpc.get_notifier('fake'),
                                                   binary='nova-compute')
        ctxt = context.get_admin_context()
        self.assertRaises(test.TestingException,
                          wrapped(bad_function_exception), 1, ctxt, 3, zoo=3)
        self.assertFalse(mock_notifier.called)
Esempio n. 6
0
    def test_wrap_exception_notification_not_emitted_if_disabled(
            self, mock_notification, mock_notifier):
        mock_notifier.is_enabled.return_value = False

        wrapped = exception_wrapper.wrap_exception(rpc.get_notifier('fake'),
                                                   binary='nova-compute')
        ctxt = context.get_admin_context()
        self.assertRaises(test.TestingException,
                          wrapped(bad_function_exception), 1, ctxt, 3, zoo=3)
        self.assertFalse(mock_notification.called)
 def test_wrap_exception_unknown_module(self):
     ctxt = nova_context.get_admin_context()
     wrapped = exception_wrapper.wrap_exception(service='compute',
                                                binary='nova-compute')
     self.assertRaises(TypeError, wrapped(bad_function_unknown_module),
                       None, ctxt)
     self.assertEqual(1, len(self.notifier.versioned_notifications))
     notification = self.notifier.versioned_notifications[0]
     payload = notification['payload']['nova_object.data']
     self.assertEqual('unknown', payload['module_name'])
    def test_wrap_exception_with_notifier(self):
        wrapped = exception_wrapper.wrap_exception(service='compute',
                                                   binary='nova-compute')
        ctxt = nova_context.get_admin_context()
        self.assertRaises(test.TestingException,
                          wrapped(bad_function_exception),
                          1,
                          ctxt,
                          3,
                          zoo=3)

        self.assertEqual(1, len(self.notifier.notifications))
        notification = self.notifier.notifications[0]
        self.assertEqual('bad_function_exception', notification.event_type)
        self.assertEqual(ctxt, notification.context)
        self.assertEqual(3, notification.payload['args']['extra'])
        for key in ['exception', 'args']:
            self.assertIn(key, notification.payload.keys())
        self.assertNotIn('context', notification.payload['args'].keys())

        self.assertEqual(1, len(self.notifier.versioned_notifications))
        notification = self.notifier.versioned_notifications[0]
        self.assertEqual('compute.exception', notification['event_type'])
        self.assertEqual('nova-compute:fake-mini',
                         notification['publisher_id'])
        self.assertEqual('ERROR', notification['priority'])

        payload = notification['payload']
        self.assertEqual('ExceptionPayload', payload['nova_object.name'])
        self.assertEqual('1.1', payload['nova_object.version'])

        payload = payload['nova_object.data']
        self.assertEqual('TestingException', payload['exception'])
        self.assertEqual('bad things happened', payload['exception_message'])
        self.assertEqual('bad_function_exception', payload['function_name'])
        self.assertEqual('nova.tests.unit.test_exception_wrapper',
                         payload['module_name'])
        self.assertIn('bad_function_exception', payload['traceback'])
Esempio n. 9
0
 def test_wrap_exception_good_return(self):
     wrapped = exception_wrapper.wrap_exception(rpc.get_notifier('fake'))
     self.assertEqual(99, wrapped(good_function)(1, 2))
     self.assertEqual(0, len(fake_notifier.NOTIFICATIONS))
     self.assertEqual(0, len(fake_notifier.VERSIONED_NOTIFICATIONS))
Esempio n. 10
0
 def test_wrap_exception_good_return(self):
     wrapped = exception_wrapper.wrap_exception(rpc.get_notifier('fake'))
     self.assertEqual(99, wrapped(good_function)(1, 2))
     self.assertEqual(0, len(fake_notifier.NOTIFICATIONS))
     self.assertEqual(0, len(fake_notifier.VERSIONED_NOTIFICATIONS))
Esempio n. 11
0
 def test_wrap_exception_good_return(self):
     wrapped = exception_wrapper.wrap_exception(service='compute',
                                                binary='nova-compute')
     self.assertEqual(99, wrapped(good_function)(1, 2))
     self.assertEqual(0, len(self.notifier.notifications))
     self.assertEqual(0, len(self.notifier.versioned_notifications))