diff --git a/wptrunner/browsers/b2g.py b/wptrunner/browsers/b2g.py index 1679606713eabc..93e28b83679676 100644 --- a/wptrunner/browsers/b2g.py +++ b/wptrunner/browsers/b2g.py @@ -41,7 +41,7 @@ def browser_kwargs(test_environment, **kwargs): "no_backup": kwargs.get("b2g_no_backup", False)} -def executor_kwargs(test_type, http_server_url, **kwargs): +def executor_kwargs(test_type, http_server_url, cache_manager, **kwargs): timeout_multiplier = kwargs["timeout_multiplier"] if timeout_multiplier is None: timeout_multiplier = 2 @@ -49,6 +49,10 @@ def executor_kwargs(test_type, http_server_url, **kwargs): executor_kwargs = {"http_server_url": http_server_url, "timeout_multiplier": timeout_multiplier, "close_after_done": False} + + if test_type == "reftest": + executor_kwargs["cache_manager"] = cache_manager + return executor_kwargs diff --git a/wptrunner/browsers/chrome.py b/wptrunner/browsers/chrome.py index 92c58e3cb919ef..f99f2db2faf4bd 100644 --- a/wptrunner/browsers/chrome.py +++ b/wptrunner/browsers/chrome.py @@ -28,10 +28,11 @@ def browser_kwargs(**kwargs): "webdriver_binary": kwargs["webdriver_binary"]} -def executor_kwargs(test_type, http_server_url, **kwargs): +def executor_kwargs(test_type, http_server_url, cache_manager, **kwargs): from selenium.webdriver import DesiredCapabilities - executor_kwargs = base_executor_kwargs(test_type, http_server_url, **kwargs) + executor_kwargs = base_executor_kwargs(test_type, http_server_url, + cache_manager, **kwargs) executor_kwargs["close_after_done"] = True executor_kwargs["capabilities"] = dict(DesiredCapabilities.CHROME.items() + {"chromeOptions": diff --git a/wptrunner/browsers/firefox.py b/wptrunner/browsers/firefox.py index a11df67508a7c4..bb900aab7bcb3c 100644 --- a/wptrunner/browsers/firefox.py +++ b/wptrunner/browsers/firefox.py @@ -45,8 +45,9 @@ def browser_kwargs(**kwargs): "ca_certificate_path": kwargs["ssl_env"].ca_cert_path()} -def executor_kwargs(test_type, http_server_url, **kwargs): - executor_kwargs = base_executor_kwargs(test_type, http_server_url, **kwargs) +def executor_kwargs(test_type, http_server_url, cache_manager, **kwargs): + executor_kwargs = base_executor_kwargs(test_type, http_server_url, + cache_manager, **kwargs) executor_kwargs["close_after_done"] = True return executor_kwargs diff --git a/wptrunner/browsers/servo.py b/wptrunner/browsers/servo.py index afcc0be147d7ef..e8652da29b3c7c 100644 --- a/wptrunner/browsers/servo.py +++ b/wptrunner/browsers/servo.py @@ -30,8 +30,9 @@ def browser_kwargs(**kwargs): "interactive": kwargs["interactive"]} -def executor_kwargs(test_type, http_server_url, **kwargs): - rv = base_executor_kwargs(test_type, http_server_url, **kwargs) +def executor_kwargs(test_type, http_server_url, cache_manager, **kwargs): + rv = base_executor_kwargs(test_type, http_server_url, + cache_manager, **kwargs) rv["pause_after_test"] = kwargs["pause_after_test"] return rv diff --git a/wptrunner/environment.py b/wptrunner/environment.py index 7da5c456bd7364..4ef21399219801 100644 --- a/wptrunner/environment.py +++ b/wptrunner/environment.py @@ -4,6 +4,7 @@ import json import os +import multiprocessing import socket import sys import time @@ -97,8 +98,11 @@ def __init__(self, test_paths, ssl_env, pause_after_test, options): self.test_server_port = options.pop("test_server_port", True) self.options = options if options is not None else {} + self.cache_manager = multiprocessing.Manager() + def __enter__(self): self.ssl_env.__enter__() + self.cache_manager.__enter__() self.setup_server_logging() self.setup_routes() self.config = self.load_config() @@ -107,6 +111,7 @@ def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): + self.cache_manager.__exit__(exc_type, exc_val, exc_tb) self.ssl_env.__exit__(exc_type, exc_val, exc_tb) for scheme, servers in self.servers.iteritems(): diff --git a/wptrunner/executors/base.py b/wptrunner/executors/base.py index 264cefcec61fe7..d10c20e3ea7a5c 100644 --- a/wptrunner/executors/base.py +++ b/wptrunner/executors/base.py @@ -7,15 +7,13 @@ import os import traceback from abc import ABCMeta, abstractmethod -from multiprocessing import Manager from ..testrunner import Stop here = os.path.split(__file__)[0] -cache_manager = Manager() -def executor_kwargs(test_type, http_server_url, **kwargs): +def executor_kwargs(test_type, http_server_url, cache_manager, **kwargs): timeout_multiplier = kwargs["timeout_multiplier"] if timeout_multiplier is None: timeout_multiplier = 1 diff --git a/wptrunner/wptrunner.py b/wptrunner/wptrunner.py index 06bbfd7fbb893b..b1b9704e9ab6f9 100644 --- a/wptrunner/wptrunner.py +++ b/wptrunner/wptrunner.py @@ -158,6 +158,7 @@ def run_tests(config, test_paths, product, **kwargs): executor_cls = executor_classes.get(test_type) executor_kwargs = get_executor_kwargs(test_type, base_server, + test_environment.cache_manager, **kwargs) if executor_cls is None: