diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-05-03 17:41:29 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-05-03 17:41:29 +0000 |
| commit | 4697cac310867f700e3fa7a938d169d0561cb952 (patch) | |
| tree | 4f93064fe8760a8e2a26e125419738b1b706d48a /nova/tests | |
| parent | 7ff82ea4ce21728c48ad9d6295d57a906046079b (diff) | |
| parent | 2dcd8256662115e6528c2b784c08c5724c8227e8 (diff) | |
Merge "Pass context to notification drivers when we can."
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/notifier/test_capacity_notifier.py | 8 | ||||
| -rw-r--r-- | nova/tests/notifier/test_list_notifier.py | 6 | ||||
| -rw-r--r-- | nova/tests/test_exception.py | 8 | ||||
| -rw-r--r-- | nova/tests/test_notifier.py | 64 |
4 files changed, 67 insertions, 19 deletions
diff --git a/nova/tests/notifier/test_capacity_notifier.py b/nova/tests/notifier/test_capacity_notifier.py index a34c0ed37..e41c52700 100644 --- a/nova/tests/notifier/test_capacity_notifier.py +++ b/nova/tests/notifier/test_capacity_notifier.py @@ -34,16 +34,16 @@ class CapacityNotifierTestCase(test.TestCase): def test_event_type(self): msg = self._make_msg("myhost", "mymethod") msg['event_type'] = 'random' - self.assertFalse(cn.notify(msg)) + self.assertFalse(cn.notify(None, msg)) def test_bad_event_suffix(self): msg = self._make_msg("myhost", "mymethod.badsuffix") - self.assertFalse(cn.notify(msg)) + self.assertFalse(cn.notify(None, msg)) def test_bad_publisher_id(self): msg = self._make_msg("myhost", "mymethod.start") msg['publisher_id'] = 'badpublisher' - self.assertFalse(cn.notify(msg)) + self.assertFalse(cn.notify(None, msg)) def test_update_called(self): def _verify_called(host, context, free_ram_mb_delta, @@ -56,4 +56,4 @@ class CapacityNotifierTestCase(test.TestCase): self.stubs.Set(nova.db.api, "compute_node_utilization_update", _verify_called) msg = self._make_msg("myhost", "delete.end") - self.assertTrue(cn.notify(msg)) + self.assertTrue(cn.notify(None, msg)) diff --git a/nova/tests/notifier/test_list_notifier.py b/nova/tests/notifier/test_list_notifier.py index e5ba48b6f..b647f501b 100644 --- a/nova/tests/notifier/test_list_notifier.py +++ b/nova/tests/notifier/test_list_notifier.py @@ -58,7 +58,7 @@ class NotifierListTestCase(test.TestCase): self.flags(notification_driver='nova.notifier.list_notifier', list_notifier_drivers=['nova.notifier.no_op_notifier', 'nova.notifier.no_op_notifier']) - nova.notifier.api.notify('publisher_id', 'event_type', + nova.notifier.api.notify('contextarg', 'publisher_id', 'event_type', nova.notifier.api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 2) self.assertEqual(self.exception_count, 0) @@ -68,7 +68,7 @@ class NotifierListTestCase(test.TestCase): self.flags(notification_driver='nova.notifier.list_notifier', list_notifier_drivers=['nova.notifier.no_op_notifier', 'nova.notifier.log_notifier']) - nova.notifier.api.notify('publisher_id', + nova.notifier.api.notify('contextarg', 'publisher_id', 'event_type', nova.notifier.api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1) self.assertEqual(self.exception_count, 1) @@ -78,7 +78,7 @@ class NotifierListTestCase(test.TestCase): list_notifier_drivers=['nova.notifier.no_op_notifier', 'nova.notifier.logo_notifier', 'fdsjgsdfhjkhgsfkj']) - nova.notifier.api.notify('publisher_id', + nova.notifier.api.notify('contextarg', 'publisher_id', 'event_type', nova.notifier.api.WARN, dict(a=3)) self.assertEqual(self.exception_count, 2) self.assertEqual(self.notify_count, 1) diff --git a/nova/tests/test_exception.py b/nova/tests/test_exception.py index acf1c6d69..34f4f1829 100644 --- a/nova/tests/test_exception.py +++ b/nova/tests/test_exception.py @@ -44,11 +44,12 @@ class FakeNotifier(object): self.provided_priority = None self.provided_payload = None - def notify(self, publisher, event, priority, payload): + def notify(self, context, publisher, event, priority, payload): self.provided_publisher = publisher self.provided_event = event self.provided_priority = priority self.provided_payload = payload + self.provided_context = context def good_function(): @@ -59,7 +60,7 @@ def bad_function_error(): raise exception.Error() -def bad_function_exception(): +def bad_function_exception(blah="a", boo="b", context=None): raise test.TestingException() @@ -82,10 +83,11 @@ class WrapExceptionTestCase(test.TestCase): wrapped = exception.wrap_exception(notifier, "publisher", "event", "level") self.assertRaises(test.TestingException, - wrapped(bad_function_exception)) + wrapped(bad_function_exception), context="context") self.assertEquals(notifier.provided_publisher, "publisher") self.assertEquals(notifier.provided_event, "event") self.assertEquals(notifier.provided_priority, "level") + self.assertEquals(notifier.provided_context, "context") for key in ['exception', 'args']: self.assertTrue(key in notifier.provided_payload.keys()) diff --git a/nova/tests/test_notifier.py b/nova/tests/test_notifier.py index ff51f6ba2..c0d49163c 100644 --- a/nova/tests/test_notifier.py +++ b/nova/tests/test_notifier.py @@ -36,15 +36,15 @@ class NotifierTestCase(test.TestCase): self.stubs.Set(nova.notifier.no_op_notifier, 'notify', mock_notify) - notifier_api.notify('publisher_id', 'event_type', - nova.notifier.api.WARN, dict(a=3)) + notifier_api.notify('contextarg', 'publisher_id', 'event_type', + nova.notifier.api.WARN, dict(a=3)) self.assertEqual(self.notify_called, True) def test_verify_message_format(self): """A test to ensure changing the message format is prohibitively annoying""" - def message_assert(message): + def message_assert(context, message): fields = [('publisher_id', 'publisher_id'), ('event_type', 'event_type'), ('priority', 'WARN'), @@ -53,11 +53,12 @@ class NotifierTestCase(test.TestCase): self.assertEqual(message[k], v) self.assertTrue(len(message['message_id']) > 0) self.assertTrue(len(message['timestamp']) > 0) + self.assertEqual(context, 'contextarg') self.stubs.Set(nova.notifier.no_op_notifier, 'notify', message_assert) - notifier_api.notify('publisher_id', 'event_type', - nova.notifier.api.WARN, dict(a=3)) + notifier_api.notify('contextarg', 'publisher_id', 'event_type', + nova.notifier.api.WARN, dict(a=3)) def test_send_rabbit_notification(self): self.stubs.Set(nova.flags.FLAGS, 'notification_driver', @@ -68,14 +69,14 @@ class NotifierTestCase(test.TestCase): self.mock_notify = True self.stubs.Set(nova.rpc, 'notify', mock_notify) - notifier_api.notify('publisher_id', 'event_type', - nova.notifier.api.WARN, dict(a=3)) + notifier_api.notify('contextarg', 'publisher_id', 'event_type', + nova.notifier.api.WARN, dict(a=3)) self.assertEqual(self.mock_notify, True) def test_invalid_priority(self): self.assertRaises(nova.notifier.api.BadPriorityException, - notifier_api.notify, 'publisher_id', + notifier_api.notify, 'contextarg', 'publisher_id', 'event_type', 'not a priority', dict(a=3)) def test_rabbit_priority_queue(self): @@ -91,7 +92,8 @@ class NotifierTestCase(test.TestCase): self.test_topic = topic self.stubs.Set(nova.rpc, 'notify', mock_notify) - notifier_api.notify('publisher_id', 'event_type', 'DEBUG', dict(a=3)) + notifier_api.notify('contextarg', 'publisher_id', + 'event_type', 'DEBUG', dict(a=3)) self.assertEqual(self.test_topic, 'testnotify.debug') def test_error_notification(self): @@ -131,3 +133,47 @@ class NotifierTestCase(test.TestCase): self.assertEqual(3, example_api(1, 2)) self.assertEqual(self.notify_called, True) + + def test_decorator_context(self): + """Verify that the notify decorator can extract the 'context' arg.""" + self.notify_called = False + self.context_arg = None + + def example_api(arg1, arg2, context): + return arg1 + arg2 + + def example_api2(arg1, arg2, **kw): + return arg1 + arg2 + + example_api = nova.notifier.api.notify_decorator( + 'example_api', + example_api) + + example_api2 = nova.notifier.api.notify_decorator( + 'example_api2', + example_api2) + + def mock_notify(context, cls, _type, _priority, _payload): + self.notify_called = True + self.context_arg = context + + self.stubs.Set(nova.notifier.api, 'notify', + mock_notify) + + # Test positional context + self.assertEqual(3, example_api(1, 2, "contextname")) + self.assertEqual(self.notify_called, True) + self.assertEqual(self.context_arg, "contextname") + + self.notify_called = False + self.context_arg = None + + # Test named context + self.assertEqual(3, example_api2(1, 2, context="contextname2")) + self.assertEqual(self.notify_called, True) + self.assertEqual(self.context_arg, "contextname2") + + # Test missing context + self.assertEqual(3, example_api2(1, 2, bananas="delicious")) + self.assertEqual(self.notify_called, True) + self.assertEqual(self.context_arg, None) |
