pgbouncemgr/tests/test_logger.py

102 lines
3.1 KiB
Python

# -*- 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")