Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Unified Diff: Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py

Issue 1161863003: Add an additional content_shell per worker for running virtual tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@virtual_reference_flags
Patch Set: fix docstring for Driver.run_test() Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py b/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py
index 230eb71d742375681a142143b816527ef633cb54..af489270fa6f843e47d8a937d5d13939f8ba3b78 100644
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py
+++ b/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py
@@ -43,8 +43,12 @@ from webkitpy.layout_tests.models import testharness_results
_log = logging.getLogger(__name__)
-def run_single_test(port, options, results_directory, worker_name, driver, test_input, stop_when_done):
- runner = SingleTestRunner(port, options, results_directory, worker_name, driver, test_input, stop_when_done)
+def run_single_test(
+ port, options, results_directory, worker_name, primary_driver,
+ secondary_driver, test_input, stop_when_done):
+ runner = SingleTestRunner(
+ port, options, results_directory, worker_name, primary_driver,
+ secondary_driver, test_input, stop_when_done)
try:
return runner.run()
except DeviceFailure as e:
@@ -55,12 +59,14 @@ def run_single_test(port, options, results_directory, worker_name, driver, test_
class SingleTestRunner(object):
(ALONGSIDE_TEST, PLATFORM_DIR, VERSION_DIR, UPDATE) = ('alongside', 'platform', 'version', 'update')
- def __init__(self, port, options, results_directory, worker_name, driver, test_input, stop_when_done):
+ def __init__(self, port, options, results_directory, worker_name,
+ primary_driver, secondary_driver, test_input, stop_when_done):
self._port = port
self._filesystem = port.host.filesystem
self._options = options
self._results_directory = results_directory
- self._driver = driver
+ self._driver = primary_driver
+ self._reference_driver = primary_driver
self._timeout = test_input.timeout
self._worker_name = worker_name
self._test_name = test_input.test_name
@@ -69,6 +75,13 @@ class SingleTestRunner(object):
self._should_add_missing_baselines = test_input.should_add_missing_baselines
self._stop_when_done = stop_when_done
+ # If this is a virtual test that uses the default flags instead of the
+ # virtual flags for it's references, run it on the secondary driver so
+ # that the primary driver does not need to be restarted.
+ if (self._port.is_virtual_test(self._test_name) and
+ not self._port.lookup_virtual_reference_args(self._test_name)):
+ self._reference_driver = secondary_driver
+
if self._reference_files:
# Detect and report a test which has a wrong combination of expectation files.
# For example, if 'foo.html' has two expectation files, 'foo-expected.html' and
@@ -372,7 +385,7 @@ class SingleTestRunner(object):
reference_test_name = self._port.relative_test_filename(reference_filename)
reference_test_names.append(reference_test_name)
driver_input = DriverInput(reference_test_name, self._timeout, image_hash=None, should_run_pixel_test=True, args=args)
- reference_output = self._driver.run_test(driver_input, self._stop_when_done)
+ reference_output = self._reference_driver.run_test(driver_input, self._stop_when_done)
test_result = self._compare_output_with_reference(reference_output, test_output, reference_filename, expectation == '!=')
if (expectation == '!=' and test_result.failures) or (expectation == '==' and not test_result.failures):

Powered by Google App Engine
This is Rietveld 408576698