Merge "Moves root logger instantiation to the runner."

This commit is contained in:
Jenkins
2014-05-30 20:50:52 +00:00
committed by Gerrit Code Review
4 changed files with 23 additions and 14 deletions

View File

@@ -156,7 +156,9 @@ class memoized(object):
self.__name__ = func.func_name
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):
# uncacheable. a list, for instance.
# better to not cache than blow up.
@@ -181,12 +183,6 @@ class memoized(object):
"""Return the function's docstring."""
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):
setattr(self.func, '_log_handler', cclogging.setup_new_cchandler(
log_file_name))

View File

@@ -24,7 +24,6 @@ import re
import unittest
from cafe.drivers.base import FixtureReporter
from cafe.common.reporting.cclogging import init_root_log_handler
class BaseTestFixture(unittest.TestCase):
@@ -75,8 +74,6 @@ class BaseTestFixture(unittest.TestCase):
@classmethod
def setUpClass(cls):
super(BaseTestFixture, cls).setUpClass()
# TODO: Move root log handler initialization to the runner!
init_root_log_handler()
cls._reporter = FixtureReporter(cls)
cls.fixture_log = cls._reporter.logger.log
cls._reporter.start()

View File

@@ -27,7 +27,7 @@ from inspect import isclass
from multiprocessing import Process, Manager
from re import search
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.reporter import Reporter
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 or self.cl_args.data_directory)
self.test_env.finalize()
init_root_log_handler()
self.product = self.cl_args.product
self.test_repo = (
self.test_env.engine_config_interface.default_test_repo)

View File

@@ -134,7 +134,12 @@ class ConfigParserDataSource(DataSource):
try:
return self._data_source.get(self._section_name, item_name)
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
self._log.error(str(e))
if default is None:
self._log.error(str(e))
else:
msg = "{0}. Using default value '{1}' instead".format(
str(e), default)
self._log.warning(msg)
return default
def get_raw(self, item_name, default=None):
@@ -142,7 +147,12 @@ class ConfigParserDataSource(DataSource):
return self._data_source.get(
self._section_name, item_name, raw=True)
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
self._log.error(str(e))
if default is None:
self._log.error(str(e))
else:
msg = "{0}. Using default value '{1}' instead".format(
str(e), default)
self._log.warning(msg)
return default
def get_boolean(self, item_name, default=None):
@@ -150,7 +160,12 @@ class ConfigParserDataSource(DataSource):
try:
return self._data_source.getboolean(self._section_name, item_name)
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError) as e:
self._log.error(str(e))
if default is None:
self._log.error(str(e))
else:
msg = "{0}. Using default value '{1}' instead".format(
str(e), default)
self._log.warning(msg)
return default