summaryrefslogtreecommitdiffstats
path: root/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py')
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py59
1 files changed, 16 insertions, 43 deletions
diff --git a/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py b/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
index 7ddd7b0..83b2215 100644
--- a/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
+++ b/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
@@ -40,13 +40,13 @@ import thread
import threading
import time
-from webkitpy.layout_tests.layout_package.single_test_runner import SingleTestRunner
+from webkitpy.layout_tests.layout_package import worker_mixin
_log = logging.getLogger("webkitpy.layout_tests.layout_package."
"dump_render_tree_thread")
-class TestShellThread(threading.Thread):
+class TestShellThread(threading.Thread, worker_mixin.WorkerMixin):
def __init__(self, port, options, worker_number, worker_name,
filename_list_queue, result_queue):
"""Initialize all the local state for this DumpRenderTree thread.
@@ -130,6 +130,7 @@ class TestShellThread(threading.Thread):
def run(self):
"""Delegate main work to a helper method and watch for uncaught
exceptions."""
+
self._covered_run()
def _covered_run(self):
@@ -175,23 +176,16 @@ class TestShellThread(threading.Thread):
If test_runner is not None, then we call test_runner.UpdateSummary()
with the results of each test."""
- single_test_runner = SingleTestRunner(self._options, self._port,
- self._name, self._worker_number)
-
- batch_size = self._options.batch_size
- batch_count = 0
- # Append tests we're running to the existing tests_run.txt file.
- # This is created in run_webkit_tests.py:_PrepareListsAndPrintOutput.
- tests_run_filename = self._port._filesystem.join(self._options.results_directory,
- "tests_run%d.txt" % self._worker_number)
- tests_run_file = self._port._filesystem.open_text_file_for_writing(tests_run_filename, append=False)
+ # Initialize the real state of the WorkerMixin now that we're executing
+ # in the child thread. Technically, we could have called this during
+ # __init__(), but we wait until now to match Worker.run().
+ self.safe_init(self._port)
while True:
if self._canceled:
_log.debug('Testing cancelled')
- tests_run_file.close()
- single_test_runner.cleanup()
+ self.cleanup()
return
if len(self._filename_list) is 0:
@@ -204,16 +198,15 @@ class TestShellThread(threading.Thread):
self._current_group, self._filename_list = \
self._filename_list_queue.get_nowait()
except Queue.Empty:
- tests_run_file.close()
- single_test_runner.cleanup()
+ self.cleanup()
return
if self._current_group == "tests_to_http_lock":
self._http_lock_wait_begin = time.time()
- single_test_runner.start_servers_with_lock()
+ self.start_servers_with_lock()
self._http_lock_wait_end = time.time()
- elif single_test_runner.has_http_lock:
- single_test_runner.stop_servers_with_lock()
+ elif self._has_http_lock:
+ self.stop_servers_with_lock()
self._num_tests_in_current_group = len(self._filename_list)
self._current_group_start_time = time.time()
@@ -221,33 +214,13 @@ class TestShellThread(threading.Thread):
test_input = self._filename_list.pop()
# We have a url, run tests.
- batch_count += 1
self._num_tests += 1
- timeout = single_test_runner.timeout(test_input)
- result = single_test_runner.run_test(test_input, timeout)
-
- tests_run_file.write(test_input.filename + "\n")
- test_name = self._port.relative_test_filename(test_input.filename)
- if result.failures:
- # Check and kill DumpRenderTree if we need to.
- if any([f.should_kill_dump_render_tree() for f in result.failures]):
- single_test_runner.kill_dump_render_tree()
- # Reset the batch count since the shell just bounced.
- batch_count = 0
-
- # Print the error message(s).
- _log.debug("%s %s failed:" % (self._name, test_name))
- for f in result.failures:
- _log.debug("%s %s" % (self._name, f.message()))
- else:
- _log.debug("%s %s passed" % (self._name, test_name))
- self._result_queue.put(result.dumps())
+ result = self.run_test_with_timeout(test_input, self.timeout(test_input))
- if batch_size > 0 and batch_count >= batch_size:
- # Bounce the shell and reset count.
- single_test_runner.kill_dump_render_tree()
- batch_count = 0
+ self.clean_up_after_test(test_input, result)
+ self._test_results.append(result)
+ self._result_queue.put(result.dumps())
if test_runner:
test_runner.update_summary(result_summary)