102 lines
3.1 KiB
Python
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")
|