Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_log.py 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. from __future__ import absolute_import
  2. import logging
  3. import sys
  4. from kombu.log import (
  5. NullHandler,
  6. get_logger,
  7. get_loglevel,
  8. safeify_format,
  9. Log,
  10. LogMixin,
  11. setup_logging,
  12. )
  13. from .case import Case, Mock, patch
  14. class test_NullHandler(Case):
  15. def test_emit(self):
  16. h = NullHandler()
  17. h.emit('record')
  18. class test_get_logger(Case):
  19. def test_when_string(self):
  20. l = get_logger('foo')
  21. self.assertIs(l, logging.getLogger('foo'))
  22. h1 = l.handlers[0]
  23. self.assertIsInstance(h1, NullHandler)
  24. def test_when_logger(self):
  25. l = get_logger(logging.getLogger('foo'))
  26. h1 = l.handlers[0]
  27. self.assertIsInstance(h1, NullHandler)
  28. def test_with_custom_handler(self):
  29. l = logging.getLogger('bar')
  30. handler = NullHandler()
  31. l.addHandler(handler)
  32. l = get_logger('bar')
  33. self.assertIs(l.handlers[0], handler)
  34. def test_get_loglevel(self):
  35. self.assertEqual(get_loglevel('DEBUG'), logging.DEBUG)
  36. self.assertEqual(get_loglevel('ERROR'), logging.ERROR)
  37. self.assertEqual(get_loglevel(logging.INFO), logging.INFO)
  38. class test_safe_format(Case):
  39. def test_formatting(self):
  40. fmt = 'The %r jumped %x over the %s'
  41. args = ['frog', 'foo', 'elephant']
  42. res = list(safeify_format(fmt, args))
  43. self.assertListEqual(res, ["'frog'", 'foo', 'elephant'])
  44. class test_LogMixin(Case):
  45. def setUp(self):
  46. self.log = Log('Log', Mock())
  47. self.logger = self.log.logger
  48. def test_debug(self):
  49. self.log.debug('debug')
  50. self.logger.log.assert_called_with(logging.DEBUG, 'Log - debug')
  51. def test_info(self):
  52. self.log.info('info')
  53. self.logger.log.assert_called_with(logging.INFO, 'Log - info')
  54. def test_warning(self):
  55. self.log.warn('warning')
  56. self.logger.log.assert_called_with(logging.WARN, 'Log - warning')
  57. def test_error(self):
  58. self.log.error('error', exc_info='exc')
  59. self.logger.log.assert_called_with(
  60. logging.ERROR, 'Log - error', exc_info='exc',
  61. )
  62. def test_critical(self):
  63. self.log.critical('crit', exc_info='exc')
  64. self.logger.log.assert_called_with(
  65. logging.CRITICAL, 'Log - crit', exc_info='exc',
  66. )
  67. def test_error_when_DISABLE_TRACEBACKS(self):
  68. from kombu import log
  69. log.DISABLE_TRACEBACKS = True
  70. try:
  71. self.log.error('error')
  72. self.logger.log.assert_called_with(logging.ERROR, 'Log - error')
  73. finally:
  74. log.DISABLE_TRACEBACKS = False
  75. def test_get_loglevel(self):
  76. self.assertEqual(self.log.get_loglevel('DEBUG'), logging.DEBUG)
  77. self.assertEqual(self.log.get_loglevel('ERROR'), logging.ERROR)
  78. self.assertEqual(self.log.get_loglevel(logging.INFO), logging.INFO)
  79. def test_is_enabled_for(self):
  80. self.logger.isEnabledFor.return_value = True
  81. self.assertTrue(self.log.is_enabled_for('DEBUG'))
  82. self.logger.isEnabledFor.assert_called_with(logging.DEBUG)
  83. def test_LogMixin_get_logger(self):
  84. self.assertIs(LogMixin().get_logger(),
  85. logging.getLogger('LogMixin'))
  86. def test_Log_get_logger(self):
  87. self.assertIs(Log('test_Log').get_logger(),
  88. logging.getLogger('test_Log'))
  89. def test_log_when_not_enabled(self):
  90. self.logger.isEnabledFor.return_value = False
  91. self.log.debug('debug')
  92. self.assertFalse(self.logger.log.called)
  93. def test_log_with_format(self):
  94. self.log.debug('Host %r removed', 'example.com')
  95. self.logger.log.assert_called_with(
  96. logging.DEBUG, 'Log - Host %s removed', "'example.com'",
  97. )
  98. class test_setup_logging(Case):
  99. @patch('logging.getLogger')
  100. def test_set_up_default_values(self, getLogger):
  101. logger = logging.getLogger.return_value = Mock()
  102. logger.handlers = []
  103. setup_logging()
  104. logger.setLevel.assert_called_with(logging.ERROR)
  105. self.assertTrue(logger.addHandler.called)
  106. ah_args, _ = logger.addHandler.call_args
  107. handler = ah_args[0]
  108. self.assertIsInstance(handler, logging.StreamHandler)
  109. self.assertIs(handler.stream, sys.__stderr__)
  110. @patch('logging.getLogger')
  111. @patch('kombu.log.WatchedFileHandler')
  112. def test_setup_custom_values(self, getLogger, WatchedFileHandler):
  113. logger = logging.getLogger.return_value = Mock()
  114. logger.handlers = []
  115. setup_logging(loglevel=logging.DEBUG, logfile='/var/logfile')
  116. logger.setLevel.assert_called_with(logging.DEBUG)
  117. self.assertTrue(logger.addHandler.called)
  118. self.assertTrue(WatchedFileHandler.called)
  119. @patch('logging.getLogger')
  120. def test_logger_already_setup(self, getLogger):
  121. logger = logging.getLogger.return_value = Mock()
  122. logger.handlers = [Mock()]
  123. setup_logging()
  124. self.assertFalse(logger.setLevel.called)