Пример #1
0
    def test_config(self):
        debug_config = core.get_debug_logs_config(
            cfg_path=('tests', 'fixtures/config/debug.default.cfg'))
        debug_log_manager = DebugLogsManager().setup_logs(debug_config)

        file_logger = debug_log_manager.logs['de_sim.debug.testing.file']
        self.assertFalse(FastLogger(file_logger, 'debug').active)
        self.assertTrue(FastLogger(file_logger, 'info').active)

        console_logger = debug_log_manager.logs['de_sim.debug.testing.console']
        self.assertFalse(FastLogger(console_logger, 'debug').active)
        self.assertFalse(FastLogger(console_logger, 'info').active)
        self.assertTrue(FastLogger(console_logger, 'warning').active)

        debug_config = core.get_debug_logs_config()
        debug_log_manager = DebugLogsManager().setup_logs(debug_config)

        file_logger = debug_log_manager.logs['de_sim.debug.file']
        self.assertFalse(FastLogger(file_logger, 'debug').active)
Пример #2
0
class DefaultDebugLogsTest(unittest.TestCase):
    def setUp(self):
        log_config = ConfigManager(debug_logs_default_paths).get_config()
        self.debug_log_manager = DebugLogsManager()
        self.debug_log_manager.setup_logs(log_config)

    def test_file(self):
        logger = self.debug_log_manager.get_log('wc.debug.file')

        handler = next(iter(logger.handlers))
        filename = handler.fh.name

        prev_size = os.path.getsize(filename)

        msg = 'debug message'
        logger.debug(msg)

        with open(filename, 'r') as file:
            file.seek(prev_size)
            new_log = file.read()

        self.assertRegex(new_log,
                         r'^.+?; .+?; .+?; .+?:.+?:\d+; {:s}\n$'.format(msg))

        # test str(DebugLogsManager())
        self.assertIn(filename, str(self.debug_log_manager))
        self.assertIn('level', str(self.debug_log_manager))
        debug_log_manager = DebugLogsManager()
        self.assertEqual('No logs configured', str(debug_log_manager))

    def test_console(self):
        logger = self.debug_log_manager.get_log('wc.debug.console')

        msg = 'wc.debug.console message'

        # using redirect_stdout does not work with either nosetests or pytest; unclear why
        # if running with nosetests must use --nocapture, and not use --with-xunit
        # you can '> /dev/null' if stdout is bothersome
        with CaptureOutput() as capturer:
            logger.debug(msg)
            logged_line = capturer.get_text()
        self.assertRegex(logged_line,
                         r'^.+?; .+?; .+?; .+?:.+?:\d+; {:s}$'.format(msg))
Пример #3
0
def get_debug_logs(extra=None):
    """ Get debug logs

    Args:
        extra (:obj:`dict`, optional): additional configuration to override

    Returns:
        :obj:`wc_utils.debug_logs.core.DebugLogsManager`: a `DebugLogsManager`
    """
    config = get_debug_logs_config(extra)
    return DebugLogsManager().setup_logs(config)
Пример #4
0
    def test_file(self):
        debug_config = {
            'handlers': {
                'file': {
                    'class': 'FileHandler',
                    'filename': self._temp_log_file,
                    'level': 'debug',
                },
            },
            'loggers': {
                '__test__.file': {
                    'template':
                    '{timestamp}; {name:s}; {level:s}; {source}:{function:s}:{line:d}; {sim_time:2.1f}; {message:s}',
                    'handler': 'file',
                    'additional_context': {
                        'sim_time': 1.5
                    },
                },
            },
        }

        # setup test logger
        debug_log_manager = DebugLogsManager()
        debug_log_manager.setup_logs(debug_config)

        # get logger
        logger = debug_log_manager.get_log('__test__.file')

        # write message
        msg = 'debug message'
        logger.debug(msg)

        # assert log file created
        self.assertTrue(os.path.isfile(self._temp_log_file))

        # assert message saved to file
        with open(self._temp_log_file, 'r') as file:
            log = file.read()
        self.assertRegex(log,
                         r'^.+?; .+?; .+?:.+?:\d+; 1.5; {:s}\n$'.format(msg))
Пример #5
0
    def test_console(self):
        # configure test logger
        debug_config = {
            'handlers': {
                'stream': {
                    'class': 'StdOutHandler',
                    'level': 'debug',
                },
            },
            'loggers': {
                '__test__.stream': {
                    'template':
                    '{timestamp}; {name:s}; {level:s}; {source}:{function:s}:{line:d}; {sim_time:f}; {message:s}',
                    'handler': 'stream',
                    'additional_context': {
                        'sim_time': 1.5
                    },
                },
            },
        }

        # setup test logger
        debug_log_manager = DebugLogsManager()
        debug_log_manager.setup_logs(debug_config)

        # get console logger
        logger = debug_log_manager.get_log('__test__.stream')

        # override stream
        next(iter(logger.handlers)).stream = self.stream

        # output message
        msg = 'debug message'
        sim_time = 2.5
        logger.debug(msg, sim_time=sim_time)

        # check message is correct
        self.assertRegex(
            self.stream.getvalue(),
            r'^.+?; .+?; .+?:.+?:\d+; {:f}; {:s}\n$'.format(sim_time, msg))
Пример #6
0
    def test_file(self):
        logger = self.debug_log_manager.get_log('wc.debug.file')

        handler = next(iter(logger.handlers))
        filename = handler.fh.name

        prev_size = os.path.getsize(filename)

        msg = 'debug message'
        logger.debug(msg)

        with open(filename, 'r') as file:
            file.seek(prev_size)
            new_log = file.read()

        self.assertRegex(new_log,
                         r'^.+?; .+?; .+?; .+?:.+?:\d+; {:s}\n$'.format(msg))

        # test str(DebugLogsManager())
        self.assertIn(filename, str(self.debug_log_manager))
        self.assertIn('level', str(self.debug_log_manager))
        debug_log_manager = DebugLogsManager()
        self.assertEqual('No logs configured', str(debug_log_manager))
Пример #7
0
""" Setup simulation example configuration

:Author: Arthur Goldberg <*****@*****.**>
:Date: 2016-10-03
:Copyright: 2016-2020, Karr Lab
:License: MIT
"""

from .config import core
from wc_utils.debug_logs.core import DebugLogsManager

# setup debug logs
config = core.get_debug_logs_config()
logs = DebugLogsManager().setup_logs(config)
Пример #8
0
 def setUp(self):
     log_config = ConfigManager(debug_logs_default_paths).get_config()
     self.debug_log_manager = DebugLogsManager()
     self.debug_log_manager.setup_logs(log_config)
Пример #9
0
 def test_undefined_log(self):
     debug_log_manager = DebugLogsManager()
     debug_log_manager.setup_logs({})
     with self.assertRaisesRegex(ValueError, "' not found in logs '"):
         debug_log_manager.get_log('not_exists')
Пример #10
0
 def test_no_logs(self):
     debug_log_manager = DebugLogsManager()
     with self.assertRaisesRegex(ValueError, "^No log initialized.$"):
         debug_log_manager.get_log('')