def test_replay(self): # Swap out the stderr stream handler for this test test_handler = logging.handlers.MemoryHandler(capacity=1000) test_handler.setLevel( logger._SetupTerraLogger.default_stderr_handler_level) self._logs.root_logger.handlers = [ test_handler if h is self._logs.stderr_handler else h for h in self._logs.root_logger.handlers ] self._logs.stderr_handler = test_handler test_logger = logger.getLogger(f'{__name__}.test_replay') message1 = str(uuid.uuid4()) message2 = str(uuid.uuid4()) message3 = str(uuid.uuid4()) test_logger.error(message1) test_logger.debug1(message2) test_logger.debug2(message3) self.assertEqual(str(test_handler.buffer).count(message1), 1) self.assertEqual(str(test_handler.buffer).count(message2), 0) self.assertEqual(str(test_handler.buffer).count(message3), 0) settings.configure({ 'processing_dir': self.temp_dir.name, 'logging': { 'level': 'debug1' } }) self.assertEqual(str(test_handler.buffer).count(message1), 2) self.assertEqual(str(test_handler.buffer).count(message2), 1) self.assertEqual(str(test_handler.buffer).count(message3), 0)
def test_funcName(self): stream = io.StringIO() test_logger = logger.getLogger(f'{__name__}.test_funcName') formatter = logging.Formatter('%(filename)s:%(funcName)s %(msg)s') handler = logging.StreamHandler(stream) handler.setFormatter(formatter) handler.setLevel(logger.DEBUG2) test_logger.logger.addHandler(handler) test_logger.setLevel(logger.DEBUG2) test_logger.debug2('hiya') self.assertEqual(stream.getvalue(), f'{os.path.basename(__file__)}:test_funcName hiya\n')
def test_funcName_stackinfo(self): stream = io.StringIO() test_logger = logger.getLogger(f'{__name__}.test_funcName') formatter = logging.Formatter('%(filename)s:%(funcName)s %(msg)s') handler = logging.StreamHandler(stream) handler.setFormatter(formatter) handler.setLevel(logger.DEBUG2) test_logger.logger.addHandler(handler) test_logger.setLevel(logger.DEBUG2) test_logger.debug2('byeee', stack_info=True) self.assertNotIn(logger._srcfiles[0], stream.getvalue()) self.assertNotIn(logger._srcfiles[1], stream.getvalue()) self.assertIn( f'{os.path.basename(__file__)}:test_funcName_stackinfo byeee\n', stream.getvalue())
def test_hostname(self): test_logger = logger.getLogger(f'{__name__}.test_hostname') record = test_logger.makeRecord(__name__, logger.ERROR, __file__, 0, "Hiya", (), None) self.assertTrue(test_logger.filter(record)) self.assertTrue(self._logs.stderr_handler.filter(record)) self.assertIn(f'({platform.node()}:preconfig)', self._logs.stderr_handler.format(record)) settings._setup() record = test_logger.makeRecord(__name__, logger.ERROR, __file__, 0, "Hiya", (), None) self.assertTrue(test_logger.filter(record)) self.assertTrue(self._logs.stderr_handler.filter(record)) self.assertIn(f'({platform.node()}:controller)', self._logs.stderr_handler.format(record))
def test_handler_logging_context(self): test_logger = logger.getLogger( f'{__name__}.test_handler_logging_context') test_logger.setLevel(logging.INFO) handler_default = logging.handlers.MemoryHandler(1000) handler_swap = logging.handlers.MemoryHandler(1000) test_logger.logger.addHandler(handler_default) # Test normal case message1 = str(uuid.uuid4()) test_logger.info(message1) self.assertIn(message1, str(handler_default.buffer)) # The actual test message2 = str(uuid.uuid4()) with logger.HandlerLoggingContext(test_logger, [handler_swap]): test_logger.info(message2) self.assertNotIn(message2, str(handler_default.buffer)) self.assertIn(message2, str(handler_swap.buffer))
def test_formatter(self): settings.configure({ 'processing_dir': self.temp_dir.name, 'logging': { 'format': 'foo {asctime} {msg}', 'date_format': 'bar', 'style': '{' } }) # This doesn't get formatted # with self.assertLogs(__name__, logger.ERROR) as cm: # logger.getLogger(__name__).error('Hi') test_logger = logger.getLogger(f'{__name__}.test_formatter') record = logging.LogRecord(__name__, logger.ERROR, __file__, 0, "Hiya", (), None) self.assertTrue(test_logger.filter(record)) self.assertTrue(self._logs.stderr_handler.filter(record)) self.assertEqual(self._logs.stderr_handler.format(record), "foo bar Hiya")
import os import threading import platform import tempfile import atexit import weakref from shutil import rmtree import filelock from vsi.tools.dir_util import is_dir_empty from terra import settings from terra.executor import Executor from terra.logger import getLogger logger = getLogger(__name__) class ResourceError(Exception): ''' Exception thrown when no more resources are available ''' class ProcessLocalStorage: ''' Processor local storage class ''' resource_id = None instance_id = None lock = None
def test_debug3(self): message = str(uuid.uuid4()) with self.assertLogs(level=logger.DEBUG3) as cm: logger.getLogger(f'{__name__}.test_debug3').debug3(message) self.assertIn(message, str(cm.output))