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

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

Issue 1158323009: Revert of 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: Created 5 years, 6 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 603758133aa49eab64c9508cb6aa3a8332b17371..86e1a0911b997943e77c43115fac4fe278b9c539 100644
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
+++ b/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
@@ -28,6 +28,7 @@
import logging
import math
+import threading
import time
from webkitpy.common import message_pool
@@ -207,7 +208,6 @@
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,8 +222,7 @@
self._batch_size = None
self._batch_count = None
self._filesystem = None
- self._primary_driver = None
- self._secondary_driver = None
+ self._driver = None
self._num_tests = 0
def __del__(self):
@@ -236,8 +235,6 @@
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
@@ -251,9 +248,6 @@
self._caller.stop_running()
return
- # Kill the secondary driver at the end of each test shard.
- self._kill_driver(self._secondary_driver, 'secondary')
-
self._caller.post('finished_test_list', test_list_name)
def _update_test_input(self, test_input):
@@ -278,11 +272,20 @@
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._primary_driver, self._secondary_driver, test_input,
- stop_when_done)
+ result = single_test_runner.run_single_test(self._port, self._options, self._results_directory,
+ self._name, self._driver, test_input, stop_when_done)
result.shard_name = shard_name
result.worker_name = self._name
@@ -295,8 +298,7 @@
def stop(self):
_log.debug("%s cleaning up" % self._name)
- self._kill_driver(self._primary_driver, "primary")
- self._kill_driver(self._secondary_driver, "secondary")
+ self._kill_driver()
def _timeout(self, test_input):
"""Compute the appropriate timeout value for a test."""
@@ -310,12 +312,15 @@
# 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, driver, label):
+ def _kill_driver(self):
# 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 %s driver" % (self._name, label))
+ _log.debug("%s killing driver" % self._name)
driver.stop()
+
def _clean_up_after_test(self, test_input, result):
test_name = test_input.test_name
@@ -323,12 +328,7 @@
if result.failures:
# Check and kill the driver if we need to.
if any([f.driver_needs_restart() for f in result.failures]):
- # 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")
-
+ self._kill_driver()
# 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