def setUp(self): self.patch(junebug.logging_service, 'LogFile', DummyLogFile) self.logger = LogPublisher() self.logpath = self.mktemp() self.service = JunebugLoggerService( 'worker-id', self.logpath, 1000000, 7, logger=self.logger)
class TestJunebugLoggerService(JunebugTestBase): def setUp(self): self.patch(junebug.logging_service, 'LogFile', DummyLogFile) self.logger = LogPublisher() self.logpath = self.mktemp() self.service = JunebugLoggerService( 'worker-id', self.logpath, 1000000, 7, logger=self.logger) def assert_log(self, log, expected): '''Assert that a log matches what is expected.''' log = json.loads(log) timestamp = log.pop('timestamp') self.assertTrue(isinstance(timestamp, float)) self.assertEqual(log, expected) @inlineCallbacks def test_logfile_parameters(self): '''When the logfile is created, it should be created with the correct parameters.''' yield self.service.startService() logfile = self.service.logfile self.assertEqual(logfile.worker_id, 'worker-id') self.assertEqual(logfile.path, self.logpath) self.assertEqual(logfile.rotateLength, 1000000) self.assertEqual(logfile.maxRotatedFiles, 7) @inlineCallbacks def test_logging(self): '''The logging service should write logs to the logfile when the service is running.''' self.logger.msg("Hello") self.assertFalse(hasattr(self.service, 'logfile')) yield self.service.startService() logfile = self.service.logfile self.logger.msg("Hello", logLevel=logging.WARN, system='worker-id') [log] = logfile.logs self.assert_log(log, { 'level': logging.WARN, 'logger': 'worker-id', 'message': 'Hello', }) yield self.service.stopService() self.assertEqual(len(logfile.logs), 1) self.logger.msg("Foo", logLevel=logging.WARN) self.assertEqual(len(logfile.logs), 1) @inlineCallbacks def test_stop_not_running(self): '''If stopService is called when the service is not running, there should be no exceptions raised.''' yield self.service.stopService() self.assertFalse(self.service.running) @inlineCallbacks def test_start_stop(self): '''Stopping the service after it has been started should result in properly closing the logfile.''' self.assertFalse(self.service.registered()) yield self.service.startService() self.assertEqual(self.service.logfile.closed_count, 0) self.assertTrue(self.service.registered()) yield self.service.stopService() self.assertFalse(self.service.registered()) self.assertEqual(self.service.logfile.closed_count, 1)