def testVerbosity(self): child_source = build_logging.LogSource(enums.Verbosity.VERBOSE) self.assertEquals(enums.Verbosity.VERBOSE, child_source.verbosity) child_source = build_logging.LogSource() self.assertEquals(enums.Verbosity.NORMAL, child_source.verbosity) child_source = build_logging.LogSource() parent_source = build_logging.LogSource(enums.Verbosity.VERBOSE) parent_source.add_child(child_source) self.assertEquals(enums.Verbosity.VERBOSE, child_source.verbosity) self.assertEquals(enums.Verbosity.VERBOSE, parent_source.verbosity)
def testLogBasedOnVerbosity(self): log_source = build_logging.LogSource() log_source.verbosity = enums.Verbosity.SILENT with patch('anvil.util.timer') as mock_timer: mock_timer.side_effect = [1] log_source.log_debug('debug') log_source.log_info('info') log_source.log_warning('warning') log_source.log_error('error') expected = [(enums.LogLevel.ERROR, 1, None, '[ERROR] error')] self.assertListEqual(expected, log_source.buffered_messages) log_source = build_logging.LogSource() log_source.verbosity = enums.Verbosity.NORMAL with patch('anvil.util.timer') as mock_timer: mock_timer.side_effect = [1, 2, 3] log_source.log_debug('debug') log_source.log_info('info') log_source.log_warning('warning') log_source.log_error('error') expected = [(enums.LogLevel.INFO, 1, None, '[INFO] info'), (enums.LogLevel.WARNING, 2, None, '[WARNING] warning'), (enums.LogLevel.ERROR, 3, None, '[ERROR] error')] self.assertListEqual(expected, log_source.buffered_messages) log_source = build_logging.LogSource() log_source.verbosity = enums.Verbosity.VERBOSE with patch('anvil.util.timer') as mock_timer: mock_timer.side_effect = [1, 2, 3, 4] log_source.log_debug('debug') log_source.log_info('info', 'test') log_source.log_warning('warning', 'test') log_source.log_error('error') expected = [(enums.LogLevel.DEBUG, 1, None, '[DEBUG] debug'), (enums.LogLevel.INFO, 2, 'test', '[INFO] info'), (enums.LogLevel.WARNING, 3, 'test', '[WARNING] warning'), (enums.LogLevel.ERROR, 4, None, '[ERROR] error')] self.assertListEqual(expected, log_source.buffered_messages) log_source = build_logging.LogSource() # Inherit should default to normal of no parent exists. log_source.verbosity = enums.Verbosity.INHERIT with patch('anvil.util.timer') as mock_timer: mock_timer.side_effect = [1, 2, 3] log_source.log_debug('debug') log_source.log_info('info') log_source.log_warning('warning') log_source.log_error('error') expected = [(enums.LogLevel.INFO, 1, None, '[INFO] info'), (enums.LogLevel.WARNING, 2, None, '[WARNING] warning'), (enums.LogLevel.ERROR, 3, None, '[ERROR] error')] self.assertListEqual(expected, log_source.buffered_messages)
def testChildMessagesDetected(self): child_source = build_logging.LogSource(enums.Verbosity.INHERIT) parent_source = build_logging.LogSource(enums.Verbosity.VERBOSE) log_sink = MagicMock() parent_source.add_log_sink(log_sink) parent_source.add_child(child_source) with patch('anvil.util.timer') as mock_timer: mock_timer.side_effect = [1] child_source.log_debug('debug', 'foo') expected = [ call.log((enums.LogLevel.DEBUG, 1, 'foo', '[DEBUG] debug')) ] self.assertEquals(expected, log_sink.mock_calls)
def testMessagesSentToLogSink(self): log_source = build_logging.LogSource(enums.Verbosity.VERBOSE) with patch('anvil.util.timer') as mock_timer: mock_timer.side_effect = [1, 2, 3, 4] log_source.log_debug('debug', 'bar') log_source.log_info('info', 'bar') log_source.log_warning('warning', 'foo') log_source.log_error('error', 'foo') log_sink = MagicMock() log_source.add_log_sink(log_sink) expected = [ call.log((enums.LogLevel.DEBUG, 1, 'bar', '[DEBUG] debug')), call.log((enums.LogLevel.INFO, 2, 'bar', '[INFO] info')), call.log((enums.LogLevel.WARNING, 3, 'foo', '[WARNING] warning')), call.log((enums.LogLevel.ERROR, 4, 'foo', '[ERROR] error')) ] self.assertEquals(expected, log_sink.mock_calls) log_sink.mock_calls = [] with patch('anvil.util.timer') as mock_timer: mock_timer.side_effect = [5] log_source.log_debug('debug', 'bar') expected = [ call.log((enums.LogLevel.DEBUG, 5, 'bar', '[DEBUG] debug')) ] self.assertEquals(expected, log_sink.mock_calls)
def testNoDuplicateLogSinks(self): log_sink = MagicMock() log_source = build_logging.LogSource() log_source.add_log_sink(log_sink) log_source.add_log_sink(log_sink) self.assertEquals(1, len(log_source.log_sinks))