summaryrefslogtreecommitdiff
path: root/ceilometer/tests/test_notification.py
diff options
context:
space:
mode:
Diffstat (limited to 'ceilometer/tests/test_notification.py')
-rw-r--r--ceilometer/tests/test_notification.py115
1 files changed, 64 insertions, 51 deletions
diff --git a/ceilometer/tests/test_notification.py b/ceilometer/tests/test_notification.py
index 1ac69096..cc369056 100644
--- a/ceilometer/tests/test_notification.py
+++ b/ceilometer/tests/test_notification.py
@@ -19,71 +19,77 @@
import mock
+import oslo.messaging
from stevedore import extension
from ceilometer.compute.notifications import instance
+from ceilometer import messaging
from ceilometer import notification
from ceilometer.openstack.common.fixture import config
from ceilometer.storage import models
from ceilometer.tests import base as tests_base
-TEST_NOTICE = {
- u'_context_auth_token': u'3d8b13de1b7d499587dfc69b77dc09c2',
- u'_context_is_admin': True,
- u'_context_project_id': u'7c150a59fe714e6f9263774af9688f0e',
- u'_context_quota_class': None,
- u'_context_read_deleted': u'no',
- u'_context_remote_address': u'10.0.2.15',
- u'_context_request_id': u'req-d68b36e0-9233-467f-9afb-d81435d64d66',
- u'_context_roles': [u'admin'],
- u'_context_timestamp': u'2012-05-08T20:23:41.425105',
- u'_context_user_id': u'1e3ce043029547f1a61c1996d1a531a2',
- u'event_type': u'compute.instance.create.end',
+TEST_NOTICE_CTXT = {
+ u'auth_token': u'3d8b13de1b7d499587dfc69b77dc09c2',
+ u'is_admin': True,
+ u'project_id': u'7c150a59fe714e6f9263774af9688f0e',
+ u'quota_class': None,
+ u'read_deleted': u'no',
+ u'remote_address': u'10.0.2.15',
+ u'request_id': u'req-d68b36e0-9233-467f-9afb-d81435d64d66',
+ u'roles': [u'admin'],
+ u'timestamp': u'2012-05-08T20:23:41.425105',
+ u'user_id': u'1e3ce043029547f1a61c1996d1a531a2',
+}
+
+TEST_NOTICE_METADATA = {
u'message_id': u'dae6f69c-00e0-41c0-b371-41ec3b7f4451',
- u'payload': {u'created_at': u'2012-05-08 20:23:41',
- u'deleted_at': u'',
- u'disk_gb': 0,
- u'display_name': u'testme',
- u'fixed_ips': [{u'address': u'10.0.0.2',
- u'floating_ips': [],
- u'meta': {},
- u'type': u'fixed',
- u'version': 4}],
- u'image_ref_url': u'http://10.0.2.15:9292/images/UUID',
- u'instance_id': u'9f9d01b9-4a58-4271-9e27-398b21ab20d1',
- u'instance_type': u'm1.tiny',
- u'instance_type_id': 2,
- u'launched_at': u'2012-05-08 20:23:47.985999',
- u'memory_mb': 512,
- u'state': u'active',
- u'state_description': u'',
- u'tenant_id': u'7c150a59fe714e6f9263774af9688f0e',
- u'user_id': u'1e3ce043029547f1a61c1996d1a531a2',
- u'reservation_id': u'1e3ce043029547f1a61c1996d1a531a3',
- u'vcpus': 1,
- u'root_gb': 0,
- u'ephemeral_gb': 0,
- u'host': u'compute-host-name',
- u'availability_zone': u'1e3ce043029547f1a61c1996d1a531a4',
- u'os_type': u'linux?',
- u'architecture': u'x86',
- u'image_ref': u'UUID',
- u'kernel_id': u'1e3ce043029547f1a61c1996d1a531a5',
- u'ramdisk_id': u'1e3ce043029547f1a61c1996d1a531a6',
- },
- u'priority': u'INFO',
- u'publisher_id': u'compute.vagrant-precise',
u'timestamp': u'2012-05-08 20:23:48.028195',
}
+TEST_NOTICE_PAYLOAD = {
+ u'created_at': u'2012-05-08 20:23:41',
+ u'deleted_at': u'',
+ u'disk_gb': 0,
+ u'display_name': u'testme',
+ u'fixed_ips': [{u'address': u'10.0.0.2',
+ u'floating_ips': [],
+ u'meta': {},
+ u'type': u'fixed',
+ u'version': 4}],
+ u'image_ref_url': u'http://10.0.2.15:9292/images/UUID',
+ u'instance_id': u'9f9d01b9-4a58-4271-9e27-398b21ab20d1',
+ u'instance_type': u'm1.tiny',
+ u'instance_type_id': 2,
+ u'launched_at': u'2012-05-08 20:23:47.985999',
+ u'memory_mb': 512,
+ u'state': u'active',
+ u'state_description': u'',
+ u'tenant_id': u'7c150a59fe714e6f9263774af9688f0e',
+ u'user_id': u'1e3ce043029547f1a61c1996d1a531a2',
+ u'reservation_id': u'1e3ce043029547f1a61c1996d1a531a3',
+ u'vcpus': 1,
+ u'root_gb': 0,
+ u'ephemeral_gb': 0,
+ u'host': u'compute-host-name',
+ u'availability_zone': u'1e3ce043029547f1a61c1996d1a531a4',
+ u'os_type': u'linux?',
+ u'architecture': u'x86',
+ u'image_ref': u'UUID',
+ u'kernel_id': u'1e3ce043029547f1a61c1996d1a531a5',
+ u'ramdisk_id': u'1e3ce043029547f1a61c1996d1a531a6',
+}
+
class TestNotification(tests_base.BaseTestCase):
def setUp(self):
super(TestNotification, self).setUp()
- self.srv = notification.NotificationService('the-host', 'the-topic')
self.CONF = self.useFixture(config.Config()).conf
+ messaging.setup('fake://')
+ self.addCleanup(messaging.cleanup)
self.CONF.set_override("connection", "log://", group='database')
+ self.srv = notification.NotificationService()
def _make_test_manager(self, plugin):
return extension.ExtensionManager.make_test_instance(
@@ -97,18 +103,23 @@ class TestNotification(tests_base.BaseTestCase):
@mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock())
@mock.patch('ceilometer.event.converter.setup_events', mock.MagicMock())
+ @mock.patch.object(oslo.messaging.MessageHandlingServer, 'start',
+ mock.MagicMock())
def test_process_notification(self):
# If we try to create a real RPC connection, init_host() never
# returns. Mock it out so we can establish the service
# configuration.
self.CONF.set_override("store_events", False, group="notification")
- with mock.patch('ceilometer.openstack.common.rpc.create_connection'):
- self.srv.start()
+ self.srv.start()
self.srv.pipeline_manager.pipelines[0] = mock.MagicMock()
self.srv.notification_manager = self._make_test_manager(
instance.Instance()
)
- self.srv.process_notification(TEST_NOTICE)
+
+ self.srv.info(TEST_NOTICE_CTXT, 'compute.vagrant-precise',
+ 'compute.instance.create.end',
+ TEST_NOTICE_PAYLOAD, TEST_NOTICE_METADATA)
+
self.assertTrue(
self.srv.pipeline_manager.publisher.called)
@@ -142,6 +153,8 @@ class TestNotification(tests_base.BaseTestCase):
def test_message_to_event_bad_event(self):
self.CONF.set_override("store_events", True, group="notification")
+ self.CONF.set_override("ack_on_event_error", False,
+ group="notification")
mock_dispatcher = mock.MagicMock()
self.srv.event_converter = mock.MagicMock()
self.srv.event_converter.to_event.return_value = mock.MagicMock(
@@ -150,5 +163,5 @@ class TestNotification(tests_base.BaseTestCase):
mock_dispatcher.record_events.return_value = [
(models.Event.UNKNOWN_PROBLEM, object())]
message = {'event_type': "foo", 'message_id': "abc"}
- self.assertRaises(notification.UnableToSaveEventException,
- self.srv._message_to_event, message)
+ ret = self.srv._message_to_event(message)
+ self.assertEqual(oslo.messaging.NotificationResult.REQUEUE, ret)