def test_logging(self):
        # NOTE(gtt): Using different topic to make tests run in parallel
        topic = 'test_logging_%s_driver_%s' % (self.priority, self.driver)

        self.config(driver=[self.driver],
                    topics=[topic],
                    group='oslo_messaging_notifications')

        listener = self.useFixture(
            utils.NotificationFixture(self.conf, self.url, [topic]))

        log_notify = oslo_messaging.LoggingNotificationHandler(self.url)

        log = logging.getLogger(topic)
        log.setLevel(logging.DEBUG)
        log.addHandler(log_notify)

        log_method = getattr(log, self.priority)
        log_method('Test logging at priority: %s' % self.priority)

        events = listener.get_events(timeout=1)
        self.assertEqual(len(events), 1)

        info_event = events[0]

        self.assertEqual(info_event[0], self.priority)
        self.assertEqual(info_event[1], 'logrecord')

        for key in ['name', 'thread', 'extra', 'process', 'funcName',
                    'levelno', 'processName', 'pathname', 'lineno',
                    'msg', 'exc_info', 'levelname']:
            self.assertTrue(key in info_event[2])
Exemple #2
0
    def test_logger(self, mock_utcnow):
        with mock.patch('oslo_messaging.transport.get_transport',
                        return_value=test_notifier._FakeTransport(self.conf)):
            self.logger = oslo_messaging.LoggingNotificationHandler('test://')

        mock_utcnow.return_value = datetime.datetime.utcnow()

        levelno = getattr(logging, self.priority.upper(), 42)

        record = logging.LogRecord('foo', levelno, '/foo/bar', 42,
                                   'Something happened', None, None)

        self.logger.emit(record)

        n = oslo_messaging.notify._impl_test.NOTIFICATIONS[0][1]
        self.assertEqual(getattr(self, 'queue', self.priority.upper()),
                         n['priority'])
        self.assertEqual('logrecord', n['event_type'])
        self.assertEqual(str(timeutils.utcnow()), n['timestamp'])
        self.assertEqual(None, n['publisher_id'])
        self.assertEqual(
            {
                'process': os.getpid(),
                'funcName': None,
                'name': 'foo',
                'thread': None,
                'levelno': levelno,
                'processName': 'MainProcess',
                'pathname': '/foo/bar',
                'lineno': 42,
                'msg': 'Something happened',
                'exc_info': None,
                'levelname': logging.getLevelName(levelno),
                'extra': None
            }, n['payload'])
Exemple #3
0
    def test_logging(self):
        # NOTE(gtt): Using different topic to make tests run in parallel
        topic = 'test_logging_%s_driver_%s' % (self.priority, self.driver)

        if self.notify_url.startswith("kafka://"):
            self.conf.set_override('consumer_group',
                                   str(uuid.uuid4()),
                                   group='oslo_messaging_kafka')

        self.config(driver=[self.driver],
                    topics=[topic],
                    group='oslo_messaging_notifications')

        listener = self.useFixture(
            utils.NotificationFixture(self.conf, self.notify_url, [topic]))

        log_notify = oslo_messaging.LoggingNotificationHandler(self.notify_url)

        log = logging.getLogger(topic)
        log.setLevel(logging.DEBUG)
        log.addHandler(log_notify)

        log_method = getattr(log, self.priority)
        log_method('Test logging at priority: %s' % self.priority)

        events = listener.get_events(timeout=15)
        self.assertEqual(1, len(events))

        info_event = events[0]

        self.assertEqual(self.priority, info_event[0])
        self.assertEqual('logrecord', info_event[1])

        for key in [
                'name', 'thread', 'extra', 'process', 'funcName', 'levelno',
                'processName', 'pathname', 'lineno', 'msg', 'exc_info',
                'levelname'
        ]:
            self.assertIn(key, info_event[2])