Пример #1
0
    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)
Пример #2
0
 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)
Пример #3
0
    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)
Пример #4
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)
Пример #5
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)
Пример #6
0
 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)
Пример #7
0
    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)
Пример #8
0
 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)
Пример #9
0
    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)
Пример #10
0
    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,
        )
Пример #11
0
    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
Пример #12
0
    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)
Пример #13
0
    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)
Пример #14
0
    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)
Пример #15
0
    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")
Пример #16
0
    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)
Пример #17
0
    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
Пример #18
0
    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)
Пример #19
0
    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)
Пример #20
0
    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)
Пример #21
0
    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)
Пример #22
0
    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)
Пример #23
0
    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)
Пример #24
0
    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')
Пример #25
0
    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,
        )
Пример #26
0
    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))
Пример #27
0
    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')
Пример #28
0
    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)
Пример #29
0
    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))
Пример #30
0
    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))
Пример #31
0
    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)
Пример #32
0
    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)
Пример #33
0
    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)
Пример #34
0
    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 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)
Пример #37
0
 def _notify(self, ctxt, event_type, payload, priority):
     notifier_api.notify(ctxt,
                         self.publisher_id,
                         event_type,
                         priority,
                         payload)
Пример #38
0
 def _notify(self, ctxt, event_type, payload, priority):
     notifier_api.notify(ctxt, self.publisher_id, event_type, priority,
                         payload)
Пример #39
0
 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)