Title: [278332] trunk/Tools
Revision
278332
Author
jbed...@apple.com
Date
2021-06-01 16:23:21 -0700 (Tue, 01 Jun 2021)

Log Message

[run-webkit-tests] Move helper out of Port instance
https://bugs.webkit.org/show_bug.cgi?id=226344
<rdar://problem/78575542>

Reviewed by Dewei Zhu.

The "helper" is a popen object, which are not pickleable, and cannot
belong to an instantiated port object.

* Scripts/webkitpy/port/base.py:
(Port): Make helper class variable.
(Port.__init__):
(Port.stop_helper): All classes should share the same code to stop the helper process.
* Scripts/webkitpy/port/mac.py:
(MacPort.start_helper): Use class variable.
(MacPort.stop_helper): Moved to base class..

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (278331 => 278332)


--- trunk/Tools/ChangeLog	2021-06-01 22:36:56 UTC (rev 278331)
+++ trunk/Tools/ChangeLog	2021-06-01 23:23:21 UTC (rev 278332)
@@ -1,3 +1,22 @@
+2021-06-01  Jonathan Bedard  <jbed...@apple.com>
+
+        [run-webkit-tests] Move helper out of Port instance
+        https://bugs.webkit.org/show_bug.cgi?id=226344
+        <rdar://problem/78575542>
+
+        Reviewed by Dewei Zhu.
+
+        The "helper" is a popen object, which are not pickleable, and cannot
+        belong to an instantiated port object.
+
+        * Scripts/webkitpy/port/base.py:
+        (Port): Make helper class variable.
+        (Port.__init__):
+        (Port.stop_helper): All classes should share the same code to stop the helper process.
+        * Scripts/webkitpy/port/mac.py:
+        (MacPort.start_helper): Use class variable.
+        (MacPort.stop_helper): Moved to base class..
+
 2021-06-01  Fujii Hironori  <hironori.fu...@sony.com>
 
         Sync Tools/win/DLLLauncher/DLLLauncherMain.cpp with Source/_javascript_Core/shell/DLLLauncherMain.cpp

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py (278331 => 278332)


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py	2021-06-01 22:36:56 UTC (rev 278331)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py	2021-06-01 23:23:21 UTC (rev 278332)
@@ -575,7 +575,6 @@
             return False
 
         _log.debug("Restarting helper")
-        self._port.stop_helper()
         self._options.pixel_tests = True
         return self._port.start_helper(prefer_integrated_gpu=self._options.prefer_integrated_gpu)
 

Modified: trunk/Tools/Scripts/webkitpy/port/base.py (278331 => 278332)


--- trunk/Tools/Scripts/webkitpy/port/base.py	2021-06-01 22:36:56 UTC (rev 278331)
+++ trunk/Tools/Scripts/webkitpy/port/base.py	2021-06-01 23:23:21 UTC (rev 278332)
@@ -81,6 +81,8 @@
     DEVICE_TYPE = None
     DEFAULT_DEVICE_TYPES = []
 
+    helper = None
+
     @classmethod
     def determine_full_port_name(cls, host, options, port_name):
         """Return a fully-specified port name that can be used to construct objects."""
@@ -115,7 +117,6 @@
         self._config = port_config.Config(self._executive, self._filesystem, self.port_name)
         self.pretty_patch = PrettyPatch(self._executive, self.path_from_webkit_base(), self._filesystem)
 
-        self._helper = None
         self._http_server = None
         self._websocket_server = None
         self._websocket_secure_server = None
@@ -958,9 +959,16 @@
 
     def stop_helper(self):
         """Shut down the test helper if it is running. Do nothing if
-        it isn't, or it isn't available. If a port overrides start_helper()
-        it must override this routine as well."""
-        pass
+        it isn't, or it isn't available."""
+        if Port.helper:
+            _log.debug("Stopping LayoutTestHelper")
+            try:
+                Port.helper.stdin.write(b"x\n")
+                Port.helper.stdin.close()
+                Port.helper.wait()
+            except IOError as e:
+                _log.debug("IOError raised while stopping helper: %s" % str(e))
+            Port.helper = None
 
     def stop_http_server(self):
         """Shut down the http server if it is running. Do nothing if it isn't."""

Modified: trunk/Tools/Scripts/webkitpy/port/mac.py (278331 => 278332)


--- trunk/Tools/Scripts/webkitpy/port/mac.py	2021-06-01 22:36:56 UTC (rev 278331)
+++ trunk/Tools/Scripts/webkitpy/port/mac.py	2021-06-01 23:23:21 UTC (rev 278332)
@@ -37,6 +37,7 @@
 from webkitpy.common.system.executive import ScriptError
 from webkitpy.common.version_name_map import PUBLIC_TABLE, INTERNAL_TABLE
 from webkitpy.common.version_name_map import VersionNameMap
+from webkitpy.port.base import Port
 from webkitpy.port.config import apple_additions, Config
 from webkitpy.port.darwin import DarwinPort
 
@@ -245,6 +246,8 @@
         return min(supportable_instances, default_count)
 
     def start_helper(self, pixel_tests=False, prefer_integrated_gpu=False):
+        self.stop_helper()
+
         helper_path = self._path_to_helper()
         if not helper_path:
             _log.error("No path to LayoutTestHelper binary")
@@ -253,9 +256,9 @@
         arguments = [helper_path, '--install-color-profile']
         if prefer_integrated_gpu:
             arguments.append('--prefer-integrated-gpu')
-        self._helper = self._executive.popen(arguments,
+        Port.helper = self._executive.popen(arguments,
             stdin=self._executive.PIPE, stdout=self._executive.PIPE, stderr=None)
-        is_ready = self._helper.stdout.readline()
+        is_ready = Port.helper.stdout.readline()
         if not is_ready.startswith(b'ready'):
             _log.error("LayoutTestHelper could not start")
             return False
@@ -272,17 +275,6 @@
                 if e.exit_code != 1:
                     raise e
 
-    def stop_helper(self):
-        if self._helper:
-            _log.debug("Stopping LayoutTestHelper")
-            try:
-                self._helper.stdin.write(b"x\n")
-                self._helper.stdin.close()
-                self._helper.wait()
-            except IOError as e:
-                _log.debug("IOError raised while stopping helper: %s" % str(e))
-            self._helper = None
-
     def logging_patterns_to_strip(self):
         logging_patterns = []
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to