Title: [216955] trunk/Tools
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")
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to