def test_logging_conf(self, mock_utcnow): with mock.patch('oslo.messaging.transport.get_transport', return_value=test_notifier._FakeTransport(self.conf)): logging.config.dictConfig({ 'version': 1, 'handlers': { 'notification': { 'class': 'oslo.messaging.LoggingNotificationHandler', 'level': self.priority.upper(), 'url': 'test://', }, }, 'loggers': { 'default': { 'handlers': ['notification'], 'level': self.priority.upper(), }, }, }) mock_utcnow.return_value = datetime.datetime.utcnow() levelno = getattr(logging, self.priority.upper()) logger = logging.getLogger('default') lineno = sys._getframe().f_lineno + 1 logger.log(levelno, 'foobar') n = 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']) pathname = __file__ if pathname.endswith(('.pyc', '.pyo')): pathname = pathname[:-1] self.assertDictEqual( n['payload'], {'process': os.getpid(), 'funcName': 'test_logging_conf', 'name': 'default', 'thread': get_thread_ident(), 'levelno': levelno, 'processName': 'MainProcess', 'pathname': pathname, 'lineno': lineno, 'msg': 'foobar', 'exc_info': None, 'levelname': logging.getLevelName(levelno), 'extra': None})
def test_logging_conf(self): with mock.patch('oslo.messaging.transport.get_transport', return_value=test_notifier._FakeTransport(self.conf)): logging.config.dictConfig({ 'version': 1, 'handlers': { 'notification': { 'class': 'oslo.messaging.LoggingNotificationHandler', 'level': self.priority.upper(), 'url': 'test://', }, }, 'loggers': { 'default': { 'handlers': ['notification'], 'level': self.priority.upper(), }, }, }) timeutils.set_time_override() levelno = getattr(logging, self.priority.upper()) logger = logging.getLogger('default') logger.log(levelno, 'foobar') n = messaging.notify._impl_test.NOTIFICATIONS[0][1] self.assertEqual(n['priority'], getattr(self, 'queue', self.priority.upper())) self.assertEqual(n['event_type'], 'logrecord') self.assertEqual(n['timestamp'], str(timeutils.utcnow.override_time)) self.assertEqual(n['publisher_id'], None) self.assertDictEqual( n['payload'], {'process': os.getpid(), 'funcName': 'test_logging_conf', 'name': 'default', 'thread': logging.thread.get_ident() if logging.thread else None, 'levelno': levelno, 'processName': 'MainProcess', 'pathname': __file__[:-1], # Remove the 'c' of .pyc 'lineno': 121, 'msg': 'foobar', 'exc_info': None, 'levelname': logging.getLevelName(levelno), 'extra': None})
def test_emit_cfg_log_notifier_in_notifier_drivers(self): drivers = ["messaging", "log"] self.config(notification_driver=drivers) self.stub_flg = True transport = test_notifier._FakeTransport(self.conf) notifier = messaging.Notifier(transport) def fake_notifier(*args, **kwargs): self.stub_flg = False self.stubs.Set(notifier, "error", fake_notifier) logrecord = logging.LogRecord( name="name", level="WARN", pathname="/tmp", lineno=1, msg="Message", args=None, exc_info=None ) self.publisherrorshandler.emit(logrecord) self.assertTrue(self.stub_flg)
def test_emit_cfg_log_notifier_in_notifier_drivers(self): drivers = ['messaging', 'log'] self.config(notification_driver=drivers) self.stub_flg = True transport = test_notifier._FakeTransport(self.conf) notifier = messaging.Notifier(transport) def fake_notifier(*args, **kwargs): self.stub_flg = False self.stubs.Set(notifier, 'error', fake_notifier) logrecord = logging.LogRecord(name='name', level='WARN', pathname='/tmp', lineno=1, msg='Message', args=None, exc_info=None) self.publisherrorshandler.emit(logrecord) self.assertTrue(self.stub_flg)
def test_logger(self, mock_utcnow): with mock.patch('oslo.messaging.transport.get_transport', return_value=test_notifier._FakeTransport(self.conf)): self.logger = 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 = 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': get_thread_ident(), 'levelno': levelno, 'processName': 'MainProcess', 'pathname': '/foo/bar', 'lineno': 42, 'msg': 'Something happened', 'exc_info': None, 'levelname': logging.getLevelName(levelno), 'extra': None}, n['payload'])