def run_step(logger, iterations, restart_after_iteration, kwargs_extras, **kwargs): import wptrunner kwargs = copy.deepcopy(kwargs) if restart_after_iteration: kwargs["repeat"] = iterations else: kwargs["rerun"] = iterations kwargs["pause_after_test"] = False kwargs.update(kwargs_extras) handler = LogActionFilter( LogLevelFilter(StreamHandler(sys.stdout, TbplFormatter()), "WARNING"), ["log", "process_output"]) # There is a public API for this in the next mozlog initial_handlers = logger._state.handlers logger._state.handlers = [] with open("raw.log", "wb") as log: # Setup logging for wptrunner that keeps process output and # warning+ level logs only logger.add_handler(handler) logger.add_handler(StreamHandler(log, JSONFormatter())) wptrunner.run_tests(**kwargs) logger._state.handlers = initial_handlers with open("raw.log", "rb") as log: results, inconsistent = process_results(log, iterations) return results, inconsistent, iterations
def run_step(logger, iterations, restart_after_iteration, kwargs_extras, **kwargs): import wptrunner kwargs = copy.deepcopy(kwargs) if restart_after_iteration: kwargs["repeat"] = iterations else: kwargs["rerun"] = iterations kwargs["pause_after_test"] = False kwargs.update(kwargs_extras) def wrap_handler(x): if not kwargs["verify_log_full"]: x = LogLevelFilter(x, "WARNING") x = LogActionFilter(x, ["log", "process_output"]) return x initial_handlers = logger._state.handlers logger._state.handlers = [ wrap_handler(handler) for handler in initial_handlers ] log = io.BytesIO() # Setup logging for wptrunner that keeps process output and # warning+ level logs only logger.add_handler(StreamHandler(log, JSONFormatter())) wptrunner.run_tests(**kwargs) logger._state.handlers = initial_handlers logger._state.running_tests = set() logger._state.suite_started = False log.seek(0) results, inconsistent, slow = process_results(log, iterations) return results, inconsistent, slow, iterations
def run_step(logger, iterations, restart_after_iteration, kwargs_extras, **kwargs): import wptrunner kwargs = copy.deepcopy(kwargs) if restart_after_iteration: kwargs["repeat"] = iterations else: kwargs["rerun"] = iterations kwargs["pause_after_test"] = False kwargs.update(kwargs_extras) handler = LogActionFilter( LogLevelFilter( StreamHandler( sys.stdout, TbplFormatter() ), "WARNING"), ["log", "process_output"]) # There is a public API for this in the next mozlog initial_handlers = logger._state.handlers logger._state.handlers = [] with open("raw.log", "wb") as log: # Setup logging for wptrunner that keeps process output and # warning+ level logs only logger.add_handler(handler) logger.add_handler(StreamHandler(log, JSONFormatter())) wptrunner.run_tests(**kwargs) logger._state.handlers = initial_handlers with open("raw.log", "rb") as log: results, inconsistent = process_results(log, iterations) return results, inconsistent, iterations
def unstable(self, tests): logger.debug("Running with %i tests" % len(tests)) self.test_loader.tests = {self.test_type: tests} stdout, stderr = sys.stdout, sys.stderr sys.stdout = StringIO() sys.stderr = StringIO() with tempfile.NamedTemporaryFile() as f: args = self.kwargs.copy() args["log_raw"] = [f] args["capture_stdio"] = False wptrunner.setup_logging(args, {}) wptrunner.run_tests(test_loader=self.test_loader, **args) wptrunner.logger.remove_handler(wptrunner.logger.handlers[0]) is_unstable = self.log_is_unstable(f) sys.stdout, sys.stderr = stdout, stderr logger.debug("Result was unstable with chunk removed" if is_unstable else "stable") return is_unstable
def run_step(logger, iterations, restart_after_iteration, kwargs_extras, **kwargs): import wptrunner kwargs = copy.deepcopy(kwargs) if restart_after_iteration: kwargs["repeat"] = iterations else: kwargs["rerun"] = iterations kwargs["pause_after_test"] = False kwargs.update(kwargs_extras) def wrap_handler(x): if not kwargs["verify_log_full"]: x = LogLevelFilter(x, "WARNING") x = LogActionFilter(x, ["log", "process_output"]) return x initial_handlers = logger._state.handlers logger._state.handlers = [wrap_handler(handler) for handler in initial_handlers] log = io.BytesIO() # Setup logging for wptrunner that keeps process output and # warning+ level logs only logger.add_handler(StreamHandler(log, JSONFormatter())) wptrunner.run_tests(**kwargs) logger._state.handlers = initial_handlers logger._state.running_tests = set() logger._state.suite_started = False log.seek(0) results, inconsistent, slow = process_results(log, iterations) return results, inconsistent, slow, iterations