예제 #1
0
    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)
예제 #2
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')
예제 #3
0
    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())
예제 #4
0
    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))
예제 #5
0
    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))
예제 #6
0
    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")
예제 #7
0
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
예제 #8
0
 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))