- Revision
- 216955
- Author
- jbed...@apple.com
- Date
- 2017-05-16 16:19:18 -0700 (Tue, 16 May 2017)
Log Message
webkitpy: Start servers before setting-up for testing
https://bugs.webkit.org/show_bug.cgi?id=172176
<rdar://problem/32225538>
Reviewed by Alexey Proskuryakov.
On-device testing requires that servers are started before ports set-up their
test environments.
* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
(LayoutTestRunner.__init__): Start servers when initializing LayoutTestRunner.
(LayoutTestRunner.run_tests): Move the starting of servers to the initializer.
* Scripts/webkitpy/layout_tests/controllers/manager.py:
(Manager.__init__): Delay construction of the test runner until we can determine
if servers need to be started.
(Manager.run): Determine if servers need to be started and construct the test runner.
(Manager._run_tests): Move the determination of servers to run into Manager.run.
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (216954 => 216955)
--- trunk/Tools/ChangeLog 2017-05-16 23:10:45 UTC (rev 216954)
+++ trunk/Tools/ChangeLog 2017-05-16 23:19:18 UTC (rev 216955)
@@ -1,3 +1,23 @@
+2017-05-16 Jonathan Bedard <jbed...@apple.com>
+
+ webkitpy: Start servers before setting-up for testing
+ https://bugs.webkit.org/show_bug.cgi?id=172176
+ <rdar://problem/32225538>
+
+ Reviewed by Alexey Proskuryakov.
+
+ On-device testing requires that servers are started before ports set-up their
+ test environments.
+
+ * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
+ (LayoutTestRunner.__init__): Start servers when initializing LayoutTestRunner.
+ (LayoutTestRunner.run_tests): Move the starting of servers to the initializer.
+ * Scripts/webkitpy/layout_tests/controllers/manager.py:
+ (Manager.__init__): Delay construction of the test runner until we can determine
+ if servers need to be started.
+ (Manager.run): Determine if servers need to be started and construct the test runner.
+ (Manager._run_tests): Move the determination of servers to run into Manager.run.
+
2017-05-16 Adrian Perez de Castro <ape...@igalia.com>
Unreviewed, adding myself to contributors.json
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py (216954 => 216955)
--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py 2017-05-16 23:10:45 UTC (rev 216954)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py 2017-05-16 23:19:18 UTC (rev 216955)
@@ -61,33 +61,35 @@
class LayoutTestRunner(object):
- def __init__(self, options, port, printer, results_directory, test_is_slow_fn):
+ def __init__(self, options, port, printer, results_directory, test_is_slow_fn, needs_http=False, needs_websockets=False, needs_web_platform_test_server=False):
self._options = options
self._port = port
self._printer = printer
self._results_directory = results_directory
self._test_is_slow = test_is_slow_fn
+ self._needs_http = needs_http
+ self._needs_websockets = needs_websockets
+ self._needs_web_platform_test_server = needs_web_platform_test_server
+
self._sharder = Sharder(self._port.split_test)
self._filesystem = self._port.host.filesystem
self._expectations = None
self._test_inputs = []
- self._needs_http = None
- self._needs_websockets = None
- self._needs_web_platform_test_server = None
self._retrying = False
self._current_run_results = None
+ if (self._needs_http and self._options.http) or self._needs_web_platform_test_server:
+ self.start_servers()
+
def get_worker_count(self, test_inputs, child_process_count):
all_shards = self._sharder.shard_tests(test_inputs, child_process_count, self._options.fully_parallel)
return min(child_process_count, len(all_shards))
- def run_tests(self, expectations, test_inputs, tests_to_skip, num_workers, needs_http, needs_websockets, needs_web_platform_test_server, retrying):
+ def run_tests(self, expectations, test_inputs, tests_to_skip, num_workers, retrying):
self._expectations = expectations
self._test_inputs = test_inputs
- self._needs_http = needs_http
- self._needs_websockets = needs_websockets
- self._needs_web_platform_test_server = needs_web_platform_test_server
+
self._retrying = retrying
# FIXME: rename all variables to test_run_results or some such ...
@@ -107,9 +109,6 @@
self._printer.write_update('Sharding tests ...')
all_shards = self._sharder.shard_tests(test_inputs, int(self._options.child_processes), self._options.fully_parallel)
- if (self._needs_http and self._options.http) or self._needs_web_platform_test_server:
- self.start_servers()
-
self._printer.print_workers_and_shards(num_workers, len(all_shards))
if self._options.dry_run:
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py (216954 => 216955)
--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py 2017-05-16 23:10:45 UTC (rev 216954)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py 2017-05-16 23:19:18 UTC (rev 216955)
@@ -85,7 +85,7 @@
self.LAYOUT_TESTS_DIRECTORY = 'LayoutTests'
self._results_directory = self._port.results_directory()
self._finder = LayoutTestFinder(self._port, self._options)
- self._runner = LayoutTestRunner(self._options, self._port, self._printer, self._results_directory, self._test_is_slow)
+ self._runner = None
test_options_json_path = self._port.path_from_webkit_base(self.LAYOUT_TESTS_DIRECTORY, "tests-options.json")
self._tests_options = json.loads(self._filesystem.read_text_file(test_options_json_path)) if self._filesystem.exists(test_options_json_path) else {}
@@ -233,6 +233,12 @@
retry_results = None
enabled_pixel_tests_in_retry = False
+ needs_http = any((self._is_http_test(test) and not self._needs_web_platform_test(test)) for test in tests_to_run)
+ needs_web_platform_test_server = any(self._needs_web_platform_test(test) for test in tests_to_run)
+ needs_websockets = any(self._is_websocket_test(test) for test in tests_to_run)
+ self._runner = LayoutTestRunner(self._options, self._port, self._printer, self._results_directory, self._test_is_slow,
+ needs_http=needs_http, needs_web_platform_test_server=needs_web_platform_test_server, needs_websockets=needs_websockets)
+
if default_device_tests:
_log.info('')
_log.info("Running %s", pluralize(len(tests_to_run), "test"))
@@ -318,13 +324,9 @@
return test_run_results.RunDetails(exit_code, summarized_results, initial_results, retry_results, enabled_pixel_tests_in_retry)
def _run_tests(self, tests_to_run, tests_to_skip, repeat_each, iterations, num_workers, retrying):
- needs_http = any((self._is_http_test(test) and not self._needs_web_platform_test(test)) for test in tests_to_run)
- needs_web_platform_test_server = any(self._needs_web_platform_test(test) for test in tests_to_run)
- needs_websockets = any(self._is_websocket_test(test) for test in tests_to_run)
-
test_inputs = self._get_test_inputs(tests_to_run, repeat_each, iterations)
- return self._runner.run_tests(self._expectations, test_inputs, tests_to_skip, num_workers, needs_http, needs_websockets, needs_web_platform_test_server, retrying)
+ return self._runner.run_tests(self._expectations, test_inputs, tests_to_skip, num_workers, retrying)
def _clean_up_run(self):
_log.debug("Flushing stdout")