# -*- coding: utf-8 -*- import unittest from pgbouncemgr.logger import * class LoggerTests(unittest.TestCase): def test_Logger_CanBeEmpty(self): """A NULL-logger is a logger that does sink all the messages that come in. No messages are written or collected whatsoever.""" logger = Logger() send_logs(logger) self.assertTrue(len(logger) == 0) def test_Logger_WritesToAllTargets(self): logger = Logger() logger.append(MemoryLog()) logger.append(MemoryLog()) send_logs(logger) self.assertEqual([ [ ['DEBUG', 'Debug me'], ['INFO', 'Inform me'], ['WARNING', 'Warn me'], ['ERROR', 'Break me'] ], [ ['DEBUG', 'Debug me'], ['INFO', 'Inform me'], ['WARNING', 'Warn me'], ['ERROR', 'Break me'] ] ], logger) class SyslogLargetTests(unittest.TestCase): def test_GivenInvalidFacility_ExceptionIsRaised(self): with self.assertRaises(SyslogLogException) as context: SyslogLog("my app", "LOG_WRONG") self.assertIn("Invalid syslog facility provided", str(context.exception)) self.assertIn("'LOG_WRONG'", str(context.exception)) def test_GivenValidFacility_LogTargetIsCreated(self): SyslogLog("my app", "LOG_LOCAL0") class ConsoleLogTargetTests(unittest.TestCase): def test_CanCreateSilentConsoleLogger(self): console = ConsoleLog(False, False) self.assertFalse(console.verbose_enabled) self.assertFalse(console.debug_enabled) def test_CanCreateVerboseConsoleLogger(self): console = ConsoleLog(True, False) self.assertTrue(console.verbose_enabled) self.assertFalse(console.debug_enabled) def test_CanCreateDebuggingConsoleLogger(self): console = ConsoleLog(False, True) self.assertTrue(console.verbose_enabled) self.assertTrue(console.debug_enabled) def test_CanCreateVerboseDebuggingConsoleLogger(self): """Basically the same as a debugging console logger, since the debug flag enables the verbose flag as well.""" console = ConsoleLog(True, True) self.assertTrue(console.verbose_enabled) self.assertTrue(console.debug_enabled) class FormatExTests(unittest.TestCase): def test_SimpleException(self): exception = Exception("It crashed!") msg = format_ex(exception) self.assertEqual("Exception: It crashed!", msg) def test_ComplexException(self): exception = Exception( "It crashed!\n" + "The error was around line 10\n" + " \t A. memory broken? \r\n" + " \t B. cpu broken?\r\n" + "\n") msg = format_ex(exception) self.assertEqual( "Exception: It crashed! The error was around line 10 / " + "A. memory broken? / B. cpu broken?", msg) def send_logs(logger): logger.debug("Debug me") logger.info("Inform me") logger.warning("Warn me") logger.error("Break me")