зеркало из https://github.com/mozilla/gecko-dev.git
Backed out 2 changesets (bug 1419826) for web-platform-tests-reftests failures. r=backout a=backout on a CLOSED TREE
Backed out changeset b3e4c5744eff (bug 1419826) Backed out changeset 3a7a93bf138e (bug 1419826)
This commit is contained in:
Родитель
5c93b047f9
Коммит
e2431736b7
|
@ -73,9 +73,6 @@ emitted:
|
||||||
where the test list is not known upfront an empty dict or list may
|
where the test list is not known upfront an empty dict or list may
|
||||||
be passed (dict).
|
be passed (dict).
|
||||||
|
|
||||||
``name``
|
|
||||||
An optional string to identify the suite by.
|
|
||||||
|
|
||||||
``run_info``
|
``run_info``
|
||||||
An optional dictionary describing the properties of the
|
An optional dictionary describing the properties of the
|
||||||
build and test environment. This contains the information provided
|
build and test environment. This contains the information provided
|
||||||
|
@ -154,17 +151,6 @@ emitted:
|
||||||
``message``
|
``message``
|
||||||
Text of the log message.
|
Text of the log message.
|
||||||
|
|
||||||
``logger_shutdown``
|
|
||||||
This is a special action that gets implicitly logged from the logger's
|
|
||||||
destructor, when exiting the context manager or by calling
|
|
||||||
:meth:`StructuredLogger.shutdown`.
|
|
||||||
|
|
||||||
``name``
|
|
||||||
Name of the logger being shutdown.
|
|
||||||
|
|
||||||
``component``
|
|
||||||
Component name of the logger being shutdown.
|
|
||||||
|
|
||||||
Testsuite Protocol
|
Testsuite Protocol
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
@ -218,13 +204,12 @@ StructuredLogger Objects
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
.. automodule:: mozlog.structuredlog
|
.. automodule:: mozlog.structuredlog
|
||||||
:members: set_default_logger, get_default_logger, LoggerShutdownError
|
:members: set_default_logger, get_default_logger
|
||||||
|
|
||||||
.. autoclass:: StructuredLogger
|
.. autoclass:: StructuredLogger
|
||||||
:members: add_handler, remove_handler, handlers, suite_start,
|
:members: add_handler, remove_handler, handlers, suite_start,
|
||||||
suite_end, test_start, test_status, test_end,
|
suite_end, test_start, test_status, test_end,
|
||||||
process_output, critical, error, warning, info, debug,
|
process_output, critical, error, warning, info, debug
|
||||||
shutdown
|
|
||||||
|
|
||||||
.. autoclass:: StructuredLogFileLike
|
.. autoclass:: StructuredLogFileLike
|
||||||
:members:
|
:members:
|
||||||
|
@ -362,16 +347,6 @@ Log to stdout::
|
||||||
logger.test_end("test-id-1", "OK")
|
logger.test_end("test-id-1", "OK")
|
||||||
logger.suite_end()
|
logger.suite_end()
|
||||||
|
|
||||||
Log with a context manager::
|
|
||||||
|
|
||||||
from mozlog.structuredlog import StructuredLogger
|
|
||||||
from mozlog.handlers import StreamHandler
|
|
||||||
from mozlog.formatters import JSONFormatter
|
|
||||||
|
|
||||||
with StructuredLogger("my-test-suite") as logger:
|
|
||||||
logger.add_handler(StreamHandler(sys.stdout,
|
|
||||||
JSONFormatter()))
|
|
||||||
logger.info("This is an info message")
|
|
||||||
|
|
||||||
Populate an ``argparse.ArgumentParser`` with logging options, and
|
Populate an ``argparse.ArgumentParser`` with logging options, and
|
||||||
create a logger based on the value of those options, defaulting to
|
create a logger based on the value of those options, defaulting to
|
||||||
|
|
|
@ -45,6 +45,9 @@ class TbplFormatter(BaseFormatter):
|
||||||
else:
|
else:
|
||||||
self.buffer = None
|
self.buffer = None
|
||||||
|
|
||||||
|
def __call__(self, data):
|
||||||
|
return getattr(self, data["action"])(data)
|
||||||
|
|
||||||
def _format_subtests(self, component, subtract_context=False):
|
def _format_subtests(self, component, subtract_context=False):
|
||||||
count = self.subtests_count
|
count = self.subtests_count
|
||||||
if subtract_context:
|
if subtract_context:
|
||||||
|
|
|
@ -19,7 +19,6 @@ from .logtypes import log_action, convertor_registry
|
||||||
Allowed actions, and subfields:
|
Allowed actions, and subfields:
|
||||||
suite_start
|
suite_start
|
||||||
tests - List of test names
|
tests - List of test names
|
||||||
name - Name for the suite
|
|
||||||
|
|
||||||
suite_end
|
suite_end
|
||||||
|
|
||||||
|
@ -110,10 +109,6 @@ def log_actions():
|
||||||
return set(convertor_registry.keys())
|
return set(convertor_registry.keys())
|
||||||
|
|
||||||
|
|
||||||
class LoggerShutdownError(Exception):
|
|
||||||
"""Raised when attempting to log after logger.shutdown() has been called."""
|
|
||||||
|
|
||||||
|
|
||||||
class LoggerState(object):
|
class LoggerState(object):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -154,7 +149,6 @@ class StructuredLogger(object):
|
||||||
|
|
||||||
self._state = self._logger_states[name]
|
self._state = self._logger_states[name]
|
||||||
self._component_state = self._state.component_states[component]
|
self._component_state = self._state.component_states[component]
|
||||||
self._has_shutdown = False
|
|
||||||
|
|
||||||
def add_handler(self, handler):
|
def add_handler(self, handler):
|
||||||
"""Add a handler to the current logger"""
|
"""Add a handler to the current logger"""
|
||||||
|
@ -232,9 +226,6 @@ class StructuredLogger(object):
|
||||||
self._handle_log(log_data)
|
self._handle_log(log_data)
|
||||||
|
|
||||||
def _handle_log(self, data):
|
def _handle_log(self, data):
|
||||||
if self._has_shutdown:
|
|
||||||
raise LoggerShutdownError("{} action received after shutdown.".format(data['action']))
|
|
||||||
|
|
||||||
with self._lock:
|
with self._lock:
|
||||||
if self.component_filter:
|
if self.component_filter:
|
||||||
data = self.component_filter(data)
|
data = self.component_filter(data)
|
||||||
|
@ -278,7 +269,6 @@ class StructuredLogger(object):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@log_action(TestList("tests"),
|
@log_action(TestList("tests"),
|
||||||
Unicode("name", default=None, optional=True),
|
|
||||||
Dict(Any, "run_info", default=None, optional=True),
|
Dict(Any, "run_info", default=None, optional=True),
|
||||||
Dict(Any, "version_info", default=None, optional=True),
|
Dict(Any, "version_info", default=None, optional=True),
|
||||||
Dict(Any, "device_info", default=None, optional=True),
|
Dict(Any, "device_info", default=None, optional=True),
|
||||||
|
@ -287,7 +277,6 @@ class StructuredLogger(object):
|
||||||
"""Log a suite_start message
|
"""Log a suite_start message
|
||||||
|
|
||||||
:param dict tests: Test identifiers that will be run in the suite, keyed by group name.
|
:param dict tests: Test identifiers that will be run in the suite, keyed by group name.
|
||||||
:param str name: Optional name to identify the suite.
|
|
||||||
:param dict run_info: Optional information typically provided by mozinfo.
|
:param dict run_info: Optional information typically provided by mozinfo.
|
||||||
:param dict version_info: Optional target application version information provided
|
:param dict version_info: Optional target application version information provided
|
||||||
by mozversion.
|
by mozversion.
|
||||||
|
@ -463,28 +452,6 @@ class StructuredLogger(object):
|
||||||
"""
|
"""
|
||||||
self._log_data("assertion_count", data)
|
self._log_data("assertion_count", data)
|
||||||
|
|
||||||
def __enter__(self):
|
|
||||||
return self
|
|
||||||
|
|
||||||
def __exit__(self, exc, val, tb):
|
|
||||||
self.shutdown()
|
|
||||||
|
|
||||||
def __del__(self):
|
|
||||||
self.shutdown()
|
|
||||||
|
|
||||||
def shutdown(self):
|
|
||||||
"""Shutdown the logger.
|
|
||||||
|
|
||||||
This logs a 'logger_shutdown' action after which any further
|
|
||||||
attempts to use the logger will raise a :exc:`LoggerShutdownError`.
|
|
||||||
|
|
||||||
This function is also called implicitly from the destructor or
|
|
||||||
when exiting the context manager.
|
|
||||||
"""
|
|
||||||
if not self._has_shutdown:
|
|
||||||
self._log_data('logger_shutdown', {'name': self.name, 'component': self.component})
|
|
||||||
self._has_shutdown = True
|
|
||||||
|
|
||||||
|
|
||||||
def _log_func(level_name):
|
def _log_func(level_name):
|
||||||
@log_action(Unicode("message"),
|
@log_action(Unicode("message"),
|
||||||
|
|
|
@ -111,9 +111,8 @@ class TestStatusHandler(BaseStructuredTest):
|
||||||
class TestStructuredLog(BaseStructuredTest):
|
class TestStructuredLog(BaseStructuredTest):
|
||||||
|
|
||||||
def test_suite_start(self):
|
def test_suite_start(self):
|
||||||
self.logger.suite_start(["test"], "logtest")
|
self.logger.suite_start(["test"])
|
||||||
self.assert_log_equals({"action": "suite_start",
|
self.assert_log_equals({"action": "suite_start",
|
||||||
"name": "logtest",
|
|
||||||
"tests": {"default": ["test"]}})
|
"tests": {"default": ["test"]}})
|
||||||
self.logger.suite_end()
|
self.logger.suite_end()
|
||||||
|
|
||||||
|
@ -397,47 +396,6 @@ class TestStructuredLog(BaseStructuredTest):
|
||||||
"level": "INFO",
|
"level": "INFO",
|
||||||
"message": "line 4"})
|
"message": "line 4"})
|
||||||
|
|
||||||
def test_logger_shutdown(self):
|
|
||||||
with self.assertRaises(KeyError):
|
|
||||||
self.logger.log_raw({"action": "logger_shutdown", "name": "test", "component": None})
|
|
||||||
|
|
||||||
# explicit shutdown
|
|
||||||
self.logger.info("line 1")
|
|
||||||
self.assert_log_equals({"action": "log",
|
|
||||||
"level": "INFO",
|
|
||||||
"message": "line 1"})
|
|
||||||
self.logger.shutdown()
|
|
||||||
self.assert_log_equals({"action": "logger_shutdown",
|
|
||||||
"name": "test",
|
|
||||||
"component": None})
|
|
||||||
with self.assertRaises(structuredlog.LoggerShutdownError):
|
|
||||||
self.logger.info("bad log")
|
|
||||||
with self.assertRaises(structuredlog.LoggerShutdownError):
|
|
||||||
self.logger.log_raw({"action": "log", "level": "info", "message": "bad log"})
|
|
||||||
|
|
||||||
# context manager shutdown
|
|
||||||
with structuredlog.StructuredLogger("test") as log:
|
|
||||||
log.add_handler(self.handler)
|
|
||||||
log.info("line 2")
|
|
||||||
self.assert_log_equals({"action": "log",
|
|
||||||
"level": "INFO",
|
|
||||||
"message": "line 2"})
|
|
||||||
self.assert_log_equals({"action": "logger_shutdown",
|
|
||||||
"name": "test",
|
|
||||||
"component": None})
|
|
||||||
|
|
||||||
# destructor shutdown
|
|
||||||
self.logger = structuredlog.StructuredLogger("test")
|
|
||||||
self.logger.add_handler(self.handler)
|
|
||||||
self.logger.info("line 3")
|
|
||||||
self.assert_log_equals({"action": "log",
|
|
||||||
"level": "INFO",
|
|
||||||
"message": "line 3"})
|
|
||||||
del self.logger
|
|
||||||
self.assert_log_equals({"action": "logger_shutdown",
|
|
||||||
"name": "test",
|
|
||||||
"component": None})
|
|
||||||
|
|
||||||
|
|
||||||
class TestTypeConversions(BaseStructuredTest):
|
class TestTypeConversions(BaseStructuredTest):
|
||||||
|
|
||||||
|
@ -489,7 +447,7 @@ class TestTypeConversions(BaseStructuredTest):
|
||||||
"message": "test",
|
"message": "test",
|
||||||
"level": "INFO"})
|
"level": "INFO"})
|
||||||
|
|
||||||
self.logger.suite_start([], run_info={})
|
self.logger.suite_start([], {})
|
||||||
self.assert_log_equals({"action": "suite_start",
|
self.assert_log_equals({"action": "suite_start",
|
||||||
"tests": {"default": []},
|
"tests": {"default": []},
|
||||||
"run_info": {}})
|
"run_info": {}})
|
||||||
|
|
|
@ -201,7 +201,7 @@ def run_tests(config, test_paths, product, **kwargs):
|
||||||
logger.info("Repetition %i / %i" % (repeat_count, repeat))
|
logger.info("Repetition %i / %i" % (repeat_count, repeat))
|
||||||
|
|
||||||
unexpected_count = 0
|
unexpected_count = 0
|
||||||
logger.suite_start(test_loader.test_ids, run_info=run_info)
|
logger.suite_start(test_loader.test_ids, run_info)
|
||||||
for test_type in kwargs["test_types"]:
|
for test_type in kwargs["test_types"]:
|
||||||
logger.info("Running %s tests" % test_type)
|
logger.info("Running %s tests" % test_type)
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче