def test_adding_and_removing_notifier_module(self): self.config(notification_driver=[]) notifier_api.add_driver('openstack.common.notifier.no_op_notifier') notifier_api.notify(None, 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1)
def test_send_notifications_successfully(self): notification_driver = ['openstack.common.notifier.no_op_notifier'] self.config(notification_driver=notification_driver) notifier_api.notify('contextarg', 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1) self.assertEqual(self.exception_count, 0)
def test_send_notifications_successfully(self): self.config(notification_driver=[ 'openstack.common.notifier.no_op_notifier']) notifier_api.notify('contextarg', 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1) self.assertEqual(self.exception_count, 0)
def test_when_driver_fails_to_import(self): self.config(notification_driver=[ 'openstack.common.notifier.no_op_notifier', 'openstack.common.notifier.logo_notifier', 'fdsjgsdfhjkhgsfkj']) notifier_api.notify('contextarg', 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.exception_count, 2) self.assertEqual(self.notify_count, 1)
def test_when_driver_fails_to_import(self): notification_driver = [ 'openstack.common.notifier.no_op_notifier', 'openstack.common.notifier.logo_notifier', 'fdsjgsdfhjkhgsfkj' ] self.config(notification_driver=notification_driver) notifier_api.notify('contextarg', 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.exception_count, 2) self.assertEqual(self.notify_count, 1)
def process_request(self, request): request.environ['HTTP_X_SERVICE_NAME'] = \ self.service_name or request.host payload = { 'request': self.environ_to_dict(request.environ), } api.notify(context.get_admin_context(), api.publisher_id(os.path.basename(sys.argv[0])), 'http.request', api.INFO, payload)
def test_when_driver_fails_to_import(self): notification_driver = [ "openstack.common.notifier.no_op_notifier", "openstack.common.notifier.logo_notifier", "fdsjgsdfhjkhgsfkj", ] self.config(notification_driver=notification_driver) notifier_api.notify("contextarg", "publisher_id", "event_type", notifier_api.WARN, dict(a=3)) self.assertEqual(self.exception_count, 2) self.assertEqual(self.notify_count, 1)
def test_send_notification(self): self.notify_called = False def mock_notify(cls, *args): self.notify_called = True self.stubs.Set(no_op_notifier, "notify", mock_notify) notifier_api.notify(ctxt, "publisher_id", "event_type", notifier_api.WARN, dict(a=3)) self.assertEqual(self.notify_called, True)
def process_request(self, request): request.environ["HTTP_X_SERVICE_NAME"] = self.service_name or request.host payload = {"request": self.environ_to_dict(request.environ)} api.notify( context.get_admin_context(), api.publisher_id(os.path.basename(sys.argv[0])), "http.request", api.INFO, payload, )
def test_adding_and_removing_notifier_object(self): self.notifier_object = SimpleNotifier() notification_driver = ["openstack.common.notifier.no_op_notifier"] self.config(notification_driver=notification_driver) notifier_api.add_driver(self.notifier_object) notifier_api.notify(None, "publisher_id", "event_type", notifier_api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1) self.assertTrue(self.notifier_object.notified) self.notifier_object.notified = False
def test_send_notifications_with_errors(self): self.config(notification_driver='openstack.common.' 'notifier.list_notifier', list_notifier_drivers=[ 'openstack.common.notifier.no_op_notifier', 'openstack.common.notifier.log_notifier']) api.notify('contextarg', 'publisher_id', 'event_type', api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1) self.assertEqual(self.exception_count, 1)
def test_send_rabbit_notification(self): self.stubs.Set(cfg.CONF, "notification_driver", ["openstack.common.notifier.rabbit_notifier"]) self.mock_notify = False def mock_notify(cls, *args): self.mock_notify = True self.stubs.Set(rpc, "notify", mock_notify) notifier_api.notify(ctxt, "publisher_id", "event_type", notifier_api.WARN, dict(a=3)) self.assertEqual(self.mock_notify, True)
def test_send_notification(self): self.notify_called = False def mock_notify(cls, *args): self.notify_called = True self.stubs.Set(no_op_notifier, 'notify', mock_notify) notifier_api.notify(ctxt, 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.notify_called, True)
def test_rabbit_priority_queue(self): self.stubs.Set(cfg.CONF, "notification_driver", ["openstack.common.notifier.rabbit_notifier"]) self.stubs.Set(cfg.CONF, "notification_topics", ["testnotify"]) self.test_topic = None def mock_notify(context, topic, msg): self.test_topic = topic self.stubs.Set(rpc, "notify", mock_notify) notifier_api.notify(ctxt, "publisher_id", "event_type", "DEBUG", dict(a=3)) self.assertEqual(self.test_topic, "testnotify.debug")
def test_adding_and_removing_notifier_object(self): self.notifier_object = SimpleNotifier() notification_driver = ['openstack.common.notifier.no_op_notifier'] self.config(notification_driver=notification_driver) notifier_api.add_driver(self.notifier_object) notifier_api.notify(None, 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1) self.assertTrue(self.notifier_object.notified) self.notifier_object.notified = False
def test_send_rabbit_notification(self): self.stubs.Set(cfg.CONF, 'notification_driver', ['openstack.common.notifier.rabbit_notifier']) self.mock_notify = False def mock_notify(cls, *args): self.mock_notify = True self.stubs.Set(rpc, 'notify', mock_notify) notifier_api.notify(ctxt, 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.mock_notify, True)
def _test_rpc_notify(self, driver, envelope=False): self.stubs.Set(cfg.CONF, "notification_driver", [driver]) self.mock_notify = False self.envelope = False def mock_notify(cls, *args, **kwargs): self.mock_notify = True self.envelope = kwargs.get("envelope", False) self.stubs.Set(rpc, "notify", mock_notify) notifier_api.notify(ctxt, "publisher_id", "event_type", notifier_api.WARN, dict(a=3)) self.assertEqual(self.mock_notify, True) self.assertEqual(self.envelope, envelope)
def _test_rpc_notify(self, driver, envelope=False): self.stubs.Set(self.CONF, 'notification_driver', [driver]) self.mock_notify = False self.envelope = False def mock_notify(cls, *args, **kwargs): self.mock_notify = True self.envelope = kwargs.get('envelope', False) self.stubs.Set(rpc, 'notify', mock_notify) notifier_api.notify(ctxt, 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.mock_notify, True) self.assertEqual(self.envelope, envelope)
def _test_rpc_notify(self, driver, envelope=False): self.stubs.Set(cfg.CONF, 'notification_driver', [driver]) self.mock_notify = False self.envelope = False def mock_notify(cls, *args, **kwargs): self.mock_notify = True self.envelope = kwargs.get('envelope', False) self.stubs.Set(rpc, 'notify', mock_notify) notifier_api.notify(ctxt, 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(self.mock_notify, True) self.assertEqual(self.envelope, envelope)
def test_notifier_action(self): def mock_iter_entry_points(_t): return [MockEntrypoint("fake", "fake", ["fake"])] self.stubs.Set(pkg_resources, "iter_entry_points", mock_iter_entry_points) plugmgr = pluginmanager.PluginManager("testproject", "testservice") plugmgr.load_plugins() self.assertEqual(len(plugmgr.plugins), 1) self.assertEqual(len(plugmgr.plugins[0].notifiers), 1) notifier = plugmgr.plugins[0].notifiers[0] notifier_api.notify("contextarg", "publisher_id", "event_type", notifier_api.WARN, dict(a=3)) self.assertEqual(len(notifier.message_list), 1)
def test_rpc_priority_queue(self): self.stubs.Set(self.CONF, 'notification_driver', ['openstack.common.notifier.rpc_notifier']) self.stubs.Set(self.CONF, 'notification_topics', ['testnotify', ]) self.test_topic = None def mock_notify(context, topic, msg): self.test_topic = topic self.stubs.Set(rpc, 'notify', mock_notify) notifier_api.notify(ctxt, 'publisher_id', 'event_type', 'DEBUG', dict(a=3)) self.assertEqual(self.test_topic, 'testnotify.debug')
def process_response(self, request, response, exception=None, traceback=None): payload = {"request": self.environ_to_dict(request.environ)} if response: payload["response"] = {"status": response.status, "headers": response.headers} if exception: payload["exception"] = {"value": repr(exception), "traceback": tb.format_tb(traceback)} api.notify( context.get_admin_context(), api.publisher_id(os.path.basename(sys.argv[0])), "http.response", api.INFO, payload, )
def test_verify_message_format(self): """A test to ensure changing the message format is prohibitively annoying""" def message_assert(context, message): fields = [('publisher_id', 'publisher_id'), ('event_type', 'event_type'), ('priority', 'WARN'), ('payload', dict(a=3))] for k, v in fields: self.assertEqual(message[k], v) self.assertTrue(len(message['message_id']) > 0) self.assertTrue(len(message['timestamp']) > 0) self.assertEqual(context, ctxt) self.stubs.Set(no_op_notifier, 'notify', message_assert) notifier_api.notify(ctxt, 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3))
def test_rabbit_priority_queue(self): self.stubs.Set(cfg.CONF, 'notification_driver', ['openstack.common.notifier.rabbit_notifier']) self.stubs.Set(cfg.CONF, 'notification_topics', [ 'testnotify', ]) self.test_topic = None def mock_notify(context, topic, msg): self.test_topic = topic self.stubs.Set(rpc, 'notify', mock_notify) notifier_api.notify(ctxt, 'publisher_id', 'event_type', 'DEBUG', dict(a=3)) self.assertEqual(self.test_topic, 'testnotify.debug')
def test_notifier_action(self): def mock_iter_entry_points(_t): return [MockEntrypoint("fake", "fake", ["fake"])] self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_entry_points) plugmgr = pluginmanager.PluginManager("testproject", "testservice") plugmgr.load_plugins() self.assertEqual(len(plugmgr.plugins), 1) self.assertEqual(len(plugmgr.plugins[0].notifiers), 1) notifier = plugmgr.plugins[0].notifiers[0] notifier_api.notify('contextarg', 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(len(notifier.message_list), 1)
def test_verify_message_format(self): """A test to ensure changing the message format is prohibitively annoying""" def message_assert(context, message): fields = [ ("publisher_id", "publisher_id"), ("event_type", "event_type"), ("priority", "WARN"), ("payload", dict(a=3)), ] for k, v in fields: self.assertEqual(message[k], v) self.assertTrue(len(message["message_id"]) > 0) self.assertTrue(len(message["timestamp"]) > 0) self.assertEqual(context, ctxt) self.stubs.Set(no_op_notifier, "notify", message_assert) notifier_api.notify(ctxt, "publisher_id", "event_type", notifier_api.WARN, dict(a=3))
def test_adding_and_removing_notifier_object(self): self.notifier_object = SimpleNotifier() self.config(notification_driver='openstack.common.' 'notifier.list_notifier', list_notifier_drivers=[ 'openstack.common.notifier.no_op_notifier']) list_notifier.add_driver(self.notifier_object) api.notify(None, 'publisher_id', 'event_type', api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1) self.assertTrue(self.notifier_object.notified) self.notifier_object.notified = False list_notifier.remove_driver(self.notifier_object) api.notify(None, 'publisher_id', 'event_type', api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 2) self.assertFalse(self.notifier_object.notified)
def test_notifier_action(self): def mock_iter_entry_points(_t): return [MockEntrypoint("fake", "fake", ["fake"])] self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_entry_points) plugmgr = pluginmanager.PluginManager("testproject", "testservice") plugmgr.load_plugins() self.assertEqual(len(plugmgr.plugins), 1) self.assertEqual(len(plugmgr.plugins[0].notifiers), 1) notifier = plugmgr.plugins[0].notifiers[0] notifier_api.notify('contextarg', 'publisher_id', 'event_type', notifier_api.WARN, dict(a=3)) self.assertEqual(len(notifier.message_list), 1) # Verify that the original baseline notifier is still # installed and working. global simpler_notify_called self.assertTrue(simpler_notify_called)
def process_response(self, request, response, exception=None, traceback=None): payload = { 'request': self.environ_to_dict(request.environ), } if response: payload['response'] = { 'status': response.status, 'headers': response.headers, } if exception: payload['exception'] = { 'value': repr(exception), 'traceback': tb.format_tb(traceback) } api.notify(context.get_admin_context(), api.publisher_id(os.path.basename(sys.argv[0])), 'http.response', api.INFO, payload)
def test_callback_plugin_subclass(self): class MockEntrypoint(pkg_resources.EntryPoint): def load(self): return TestCBP def mock_iter_entry_points(_t): return [MockEntrypoint("fake", "fake", ["fake"])] self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_entry_points) plugmgr = pluginmanager.PluginManager("testproject", "testservice") plugmgr.load_plugins() self.assertEqual(len(plugmgr.plugins), 1) plugin = plugmgr.plugins[0] self.assertEqual(len(plugin.notifiers), 1) notifier_api.notify('contextarg', 'publisher_id', 'type1', notifier_api.WARN, dict(a=3)) self.assertEqual(plugin.callback1count, 1) self.assertEqual(plugin.callback2count, 1) self.assertEqual(plugin.callback3count, 0) notifier_api.notify('contextarg', 'publisher_id', 'type2', notifier_api.WARN, dict(a=3)) self.assertEqual(plugin.callback1count, 1) self.assertEqual(plugin.callback2count, 1) self.assertEqual(plugin.callback3count, 1) self.assertEqual(plugin.userdata, userdatastring) plugin._remove_callback(plugin.callback1) notifier_api.notify('contextarg', 'publisher_id', 'type1', notifier_api.WARN, dict(a=3)) self.assertEqual(plugin.callback1count, 1) self.assertEqual(plugin.callback2count, 2) self.assertEqual(plugin.callback3count, 1)
def _notify(self, ctxt, event_type, payload, priority): notifier_api.notify(ctxt, self.publisher_id, event_type, priority, payload)
def test_send_notifications_with_errors(self): notification_driver = ["openstack.common.notifier.no_op_notifier", "openstack.common.notifier.log_notifier"] self.config(notification_driver=notification_driver) notifier_api.notify("contextarg", "publisher_id", "event_type", notifier_api.WARN, dict(a=3)) self.assertEqual(self.notify_count, 1) self.assertEqual(self.exception_count, 1)