Merge "Moves root logger instantiation to the runner."
This commit is contained in:
@@ -156,7 +156,9 @@ class memoized(object):
|
|||||||
self.__name__ = func.func_name
|
self.__name__ = func.func_name
|
||||||
|
|
||||||
def __call__(self, *args):
|
def __call__(self, *args):
|
||||||
self._start_logging(cclogging.get_object_namespace(args[0]))
|
log_name = "{0}.{1}".format(
|
||||||
|
cclogging.get_object_namespace(args[0]), self.__name__)
|
||||||
|
self._start_logging(log_name)
|
||||||
if not isinstance(args, collections.Hashable):
|
if not isinstance(args, collections.Hashable):
|
||||||
# uncacheable. a list, for instance.
|
# uncacheable. a list, for instance.
|
||||||
# better to not cache than blow up.
|
# better to not cache than blow up.
|
||||||
@@ -181,12 +183,6 @@ class memoized(object):
|
|||||||
"""Return the function's docstring."""
|
"""Return the function's docstring."""
|
||||||
return self.func.__doc__
|
return self.func.__doc__
|
||||||
|
|
||||||
# Because the root log is initialized in the base test fixture, and because
|
|
||||||
# datalist generators are run before that test fixture is initialized,
|
|
||||||
# it is neccessary to add a log handler to the root logger so that logs
|
|
||||||
# get logged. Once the root log handler initialization is moved
|
|
||||||
# upstream of the base test fixture initialization, this code can be
|
|
||||||
# removed.
|
|
||||||
def _start_logging(self, log_file_name):
|
def _start_logging(self, log_file_name):
|
||||||
setattr(self.func, '_log_handler', cclogging.setup_new_cchandler(
|
setattr(self.func, '_log_handler', cclogging.setup_new_cchandler(
|
||||||
log_file_name))
|
log_file_name))
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import re
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from cafe.drivers.base import FixtureReporter
|
from cafe.drivers.base import FixtureReporter
|
||||||
from cafe.common.reporting.cclogging import init_root_log_handler
|
|
||||||
|
|
||||||
|
|
||||||
class BaseTestFixture(unittest.TestCase):
|
class BaseTestFixture(unittest.TestCase):
|
||||||
@@ -75,8 +74,6 @@ class BaseTestFixture(unittest.TestCase):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
super(BaseTestFixture, cls).setUpClass()
|
super(BaseTestFixture, cls).setUpClass()
|
||||||
# TODO: Move root log handler initialization to the runner!
|
|
||||||
init_root_log_handler()
|
|
||||||
cls._reporter = FixtureReporter(cls)
|
cls._reporter = FixtureReporter(cls)
|
||||||
cls.fixture_log = cls._reporter.logger.log
|
cls.fixture_log = cls._reporter.logger.log
|
||||||
cls._reporter.start()
|
cls._reporter.start()
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ from inspect import isclass
|
|||||||
from multiprocessing import Process, Manager
|
from multiprocessing import Process, Manager
|
||||||
from re import search
|
from re import search
|
||||||
from traceback import print_exc
|
from traceback import print_exc
|
||||||
|
from cafe.common.reporting.cclogging import init_root_log_handler
|
||||||
from cafe.common.reporting.cclogging import log_results
|
from cafe.common.reporting.cclogging import log_results
|
||||||
from cafe.common.reporting.reporter import Reporter
|
from cafe.common.reporting.reporter import Reporter
|
||||||
from cafe.configurator.managers import TestEnvManager
|
from cafe.configurator.managers import TestEnvManager
|
||||||
@@ -673,6 +673,7 @@ class UnittestRunner(object):
|
|||||||
self.test_env.test_data_directory = (
|
self.test_env.test_data_directory = (
|
||||||
self.test_env.test_data_directory or self.cl_args.data_directory)
|
self.test_env.test_data_directory or self.cl_args.data_directory)
|
||||||
self.test_env.finalize()
|
self.test_env.finalize()
|
||||||
|
init_root_log_handler()
|
||||||
self.product = self.cl_args.product
|
self.product = self.cl_args.product
|
||||||
self.test_repo = (
|
self.test_repo = (
|
||||||
self.test_env.engine_config_interface.default_test_repo)
|
self.test_env.engine_config_interface.default_test_repo)
|
||||||
|
|||||||
@@ -134,7 +134,12 @@ class ConfigParserDataSource(DataSource):
|
|||||||
try:
|
try:
|
||||||
return self._data_source.get(self._section_name, item_name)
|
return self._data_source.get(self._section_name, item_name)
|
||||||
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
|
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
|
||||||
|
if default is None:
|
||||||
self._log.error(str(e))
|
self._log.error(str(e))
|
||||||
|
else:
|
||||||
|
msg = "{0}. Using default value '{1}' instead".format(
|
||||||
|
str(e), default)
|
||||||
|
self._log.warning(msg)
|
||||||
return default
|
return default
|
||||||
|
|
||||||
def get_raw(self, item_name, default=None):
|
def get_raw(self, item_name, default=None):
|
||||||
@@ -142,7 +147,12 @@ class ConfigParserDataSource(DataSource):
|
|||||||
return self._data_source.get(
|
return self._data_source.get(
|
||||||
self._section_name, item_name, raw=True)
|
self._section_name, item_name, raw=True)
|
||||||
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
|
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
|
||||||
|
if default is None:
|
||||||
self._log.error(str(e))
|
self._log.error(str(e))
|
||||||
|
else:
|
||||||
|
msg = "{0}. Using default value '{1}' instead".format(
|
||||||
|
str(e), default)
|
||||||
|
self._log.warning(msg)
|
||||||
return default
|
return default
|
||||||
|
|
||||||
def get_boolean(self, item_name, default=None):
|
def get_boolean(self, item_name, default=None):
|
||||||
@@ -150,7 +160,12 @@ class ConfigParserDataSource(DataSource):
|
|||||||
try:
|
try:
|
||||||
return self._data_source.getboolean(self._section_name, item_name)
|
return self._data_source.getboolean(self._section_name, item_name)
|
||||||
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
|
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
|
||||||
|
if default is None:
|
||||||
self._log.error(str(e))
|
self._log.error(str(e))
|
||||||
|
else:
|
||||||
|
msg = "{0}. Using default value '{1}' instead".format(
|
||||||
|
str(e), default)
|
||||||
|
self._log.warning(msg)
|
||||||
return default
|
return default
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user