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

Unified Diff: Tools/Scripts/webkitpy/layout_tests/controllers/layout_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
« no previous file with comments | « no previous file | Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py b/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
index 86e1a0911b997943e77c43115fac4fe278b9c539..603758133aa49eab64c9508cb6aa3a8332b17371 100644
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
+++ b/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
@@ -28,7 +28,6 @@
import logging
import math
-import threading
import time
from webkitpy.common import message_pool
@@ -208,6 +207,7 @@ class LayoutTestRunner(object):
if remaining_tests:
self._shards_to_redo.append(TestShard(list_name, remaining_tests))
+
class Worker(object):
def __init__(self, caller, results_directory, options):
self._caller = caller
@@ -222,7 +222,8 @@ class Worker(object):
self._batch_size = None
self._batch_count = None
self._filesystem = None
- self._driver = None
+ self._primary_driver = None
+ self._secondary_driver = None
self._num_tests = 0
def __del__(self):
@@ -235,6 +236,8 @@ class Worker(object):
self._host = self._caller.host
self._filesystem = self._host.filesystem
self._port = self._host.port_factory.get(self._options.platform, self._options)
+ self._primary_driver = self._port.create_driver(self._worker_number)
+ self._secondary_driver = self._port.create_driver(self._worker_number)
self._batch_count = 0
self._batch_size = self._options.batch_size or 0
@@ -248,6 +251,9 @@ class Worker(object):
self._caller.stop_running()
return
+ # Kill the secondary driver at the end of each test shard.
+ self._kill_driver(self._secondary_driver, 'secondary')
Dirk Pranke 2015/06/03 19:03:40 Do we need to do this? Neither ojan nor I seemed t
joelo 2015/06/04 00:53:26 This was the only thing that gave option #2 (this
+
self._caller.post('finished_test_list', test_list_name)
def _update_test_input(self, test_input):
@@ -272,20 +278,11 @@ class Worker(object):
start = time.time()
device_failed = False
- if self._driver and self._driver.has_crashed():
- self._kill_driver()
- if not self._driver:
- self._driver = self._port.create_driver(self._worker_number)
-
- if not self._driver:
- # FIXME: Is this the best way to handle a device crashing in the middle of the test, or should we create
- # a new failure type?
- device_failed = True
- return device_failed
-
self._caller.post('started_test', test_input, test_timeout_sec)
- result = single_test_runner.run_single_test(self._port, self._options, self._results_directory,
- self._name, self._driver, test_input, stop_when_done)
+ result = single_test_runner.run_single_test(
+ self._port, self._options, self._results_directory, self._name,
+ self._primary_driver, self._secondary_driver, test_input,
+ stop_when_done)
result.shard_name = shard_name
result.worker_name = self._name
@@ -298,7 +295,8 @@ class Worker(object):
def stop(self):
_log.debug("%s cleaning up" % self._name)
- self._kill_driver()
+ self._kill_driver(self._primary_driver, "primary")
+ self._kill_driver(self._secondary_driver, "secondary")
def _timeout(self, test_input):
"""Compute the appropriate timeout value for a test."""
@@ -312,23 +310,25 @@ class Worker(object):
# FIXME: Can we just return the test_input.timeout now?
driver_timeout_sec = 3.0 * float(test_input.timeout) / 1000.0
- def _kill_driver(self):
+ def _kill_driver(self, driver, label):
# Be careful about how and when we kill the driver; if driver.stop()
# raises an exception, this routine may get re-entered via __del__.
- driver = self._driver
- self._driver = None
if driver:
- _log.debug("%s killing driver" % self._name)
+ _log.debug("%s killing %s driver" % (self._name, label))
driver.stop()
-
def _clean_up_after_test(self, test_input, result):
test_name = test_input.test_name
if result.failures:
# Check and kill the driver if we need to.
if any([f.driver_needs_restart() for f in result.failures]):
- self._kill_driver()
+ # FIXME: Need more information in failure reporting so
+ # we know which driver needs to be restarted. For now
+ # we kill both drivers.
+ self._kill_driver(self._primary_driver, "primary")
+ self._kill_driver(self._secondary_driver, "secondary")
+
# Reset the batch count since the shell just bounced.
self._batch_count = 0
« no previous file with comments | « no previous file | Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698