test_log.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import unittest
  2. import sys
  3. import logging
  4. import multiprocessing
  5. from StringIO import StringIO
  6. from celery.log import setup_logger, emergency_error
  7. class TestLog(unittest.TestCase):
  8. def _assertLog(self, logger, logmsg, loglevel=logging.ERROR):
  9. # Save old handlers
  10. old_handler = logger.handlers[0]
  11. logger.removeHandler(old_handler)
  12. sio = StringIO()
  13. siohandler = logging.StreamHandler(sio)
  14. logger.addHandler(siohandler)
  15. logger.log(loglevel, logmsg)
  16. logger.removeHandler(siohandler)
  17. # Reset original handlers
  18. logger.addHandler(old_handler)
  19. return sio.getvalue().strip()
  20. def assertDidLogTrue(self, logger, logmsg, reason, loglevel=None):
  21. val = self._assertLog(logger, logmsg, loglevel=loglevel)
  22. return self.assertEqual(val, logmsg, reason)
  23. def assertDidLogFalse(self, logger, logmsg, reason, loglevel=None):
  24. val = self._assertLog(logger, logmsg, loglevel=loglevel)
  25. return self.assertFalse(val, reason)
  26. def test_setup_logger(self):
  27. logger = setup_logger(loglevel=logging.ERROR, logfile=None)
  28. self.assertTrue(logger.handlers[0].stream is sys.stderr,
  29. "setup_logger logs to stderr without logfile argument.")
  30. self.assertTrue(logger._process_aware,
  31. "setup_logger() returns process aware logger.")
  32. self.assertDidLogTrue(logger, "Logging something",
  33. "Logger logs error when loglevel is ERROR",
  34. loglevel=logging.ERROR)
  35. self.assertDidLogFalse(logger, "Logging something",
  36. "Logger doesn't info when loglevel is ERROR",
  37. loglevel=logging.INFO)
  38. def test_emergency_error(self):
  39. sio = StringIO()
  40. emergency_error(sio, "Testing emergency error facility")
  41. self.assertEquals(sio.getvalue().rpartition(":")[2].strip(),
  42. "Testing emergency error facility")