summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-05-03 17:41:29 +0000
committerGerrit Code Review <review@openstack.org>2012-05-03 17:41:29 +0000
commit4697cac310867f700e3fa7a938d169d0561cb952 (patch)
tree4f93064fe8760a8e2a26e125419738b1b706d48a /nova/tests
parent7ff82ea4ce21728c48ad9d6295d57a906046079b (diff)
parent2dcd8256662115e6528c2b784c08c5724c8227e8 (diff)
Merge "Pass context to notification drivers when we can."
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/notifier/test_capacity_notifier.py8
-rw-r--r--nova/tests/notifier/test_list_notifier.py6
-rw-r--r--nova/tests/test_exception.py8
-rw-r--r--nova/tests/test_notifier.py64
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)