Changeset 278624 in webkit
- Timestamp:
- Jun 8, 2021, 12:58:00 PM (5 years ago)
- Location:
- trunk/Tools
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
Scripts/webkitpy/common/system/executive.py (modified) (2 diffs)
-
Scripts/webkitpy/port/base.py (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r278621 r278624 1 2021-06-08 Fujii Hironori <Hironori.Fujii@sony.com> 2 3 run-webkit-tests: TaskPool reports PicklingError for Windows Python 4 https://bugs.webkit.org/show_bug.cgi?id=226710 5 6 Reviewed by Jonathan Bedard. 7 8 Since r278454 changed run-webkit-tests to use TaskPool, 9 run-webkit-tests reported PicklingError for Windows Python. It 10 couldn't pickle Port object. This issue happened on multi-core PC, 11 but on single CPU tester bot machines. 12 13 WrappedPopen couldn't be pickled because it was defined as an 14 inner class. It should be defined at the top-level. 15 16 The instance variables _web_platform_test_server, 17 _websocket_server_temporary_directory, and 18 _websocket_secure_server of Port object aren't pickleable. Make 19 them class variables. 20 21 * Scripts/webkitpy/common/system/executive.py: 22 (WrappedPopen): 23 (Executive.WrappedPopen): 24 * Scripts/webkitpy/port/base.py: 25 (Port): 26 (Port.__init__): 27 (Port.ports_to_forward): 28 (Port.is_websocket_server_running): 29 (Port.is_wpt_server_running): 30 (Port.start_websocket_server): 31 (Port.start_web_platform_test_server): 32 (Port.stop_websocket_server): 33 (Port.stop_web_platform_test_server): 34 1 35 2021-06-08 Antti Koivisto <antti@apple.com> 2 36 -
trunk/Tools/Scripts/webkitpy/common/system/executive.py
r276374 r278624 82 82 83 83 84 class WrappedPopen(object): 85 def __init__(self, popen): 86 for attribute in dir(popen): 87 if attribute.startswith('__'): 88 continue 89 setattr(self, attribute, getattr(popen, attribute)) 90 91 def __enter__(self): 92 return self 93 94 def __exit__(self, *args): 95 self.wait() 96 97 84 98 class Executive(AbstractExecutive): 85 99 PIPE = subprocess.PIPE 86 100 STDOUT = subprocess.STDOUT 87 88 class WrappedPopen(object):89 def __init__(self, popen):90 for attribute in dir(popen):91 if attribute.startswith('__'):92 continue93 setattr(self, attribute, getattr(popen, attribute))94 95 def __enter__(self):96 return self97 98 def __exit__(self, *args):99 self.wait()100 101 101 102 def __init__(self): … … 535 536 result = subprocess.Popen(string_args, env=env, **kwargs) 536 537 if not callable(getattr(result, "__enter__", None)) and not callable(getattr(result, "__exit__", None)): 537 return self.WrappedPopen(result)538 return WrappedPopen(result) 538 539 return result 539 540 -
trunk/Tools/Scripts/webkitpy/port/base.py
r278454 r278624 83 83 84 84 helper = None 85 _web_platform_test_server = None 86 _websocket_secure_server = None 87 _websocket_server = None 85 88 86 89 @classmethod … … 119 122 120 123 self._http_server = None 121 self._websocket_server = None122 self._websocket_secure_server = None123 self._web_platform_test_server = None124 124 self._image_differ = None 125 125 self._server_process_constructor = server_process.ServerProcess # overridable for testing … … 864 864 if self._http_server: 865 865 ports.extend(self._http_server.ports_to_forward()) 866 if self._websocket_server:867 ports.extend( self._websocket_server.ports_to_forward())868 if self._websocket_server:869 ports.extend( self._websocket_secure_server.ports_to_forward())870 if self._web_platform_test_server:871 ports.extend( self._web_platform_test_server.ports_to_forward())866 if Port._websocket_server: 867 ports.extend(Port._websocket_server.ports_to_forward()) 868 if Port._websocket_server: 869 ports.extend(Port._websocket_secure_server.ports_to_forward()) 870 if Port._web_platform_test_server: 871 ports.extend(Port._web_platform_test_server.ports_to_forward()) 872 872 return ports 873 873 … … 895 895 896 896 def is_websocket_server_running(self): 897 if self._websocket_server:897 if Port._websocket_server: 898 898 return True 899 899 return websocket_server.is_web_socket_server_running() 900 900 901 901 def is_wpt_server_running(self): 902 if self._web_platform_test_server:902 if Port._web_platform_test_server: 903 903 return True 904 904 return web_platform_test_server.is_wpt_server_running(self) … … 908 908 909 909 Ports can stub this out if they don't need a websocket server to be running.""" 910 assert not self._websocket_server, 'Already running a websocket server.'910 assert not Port._websocket_server, 'Already running a websocket server.' 911 911 912 912 server = websocket_server.PyWebSocket(self, self.results_directory()) 913 913 server.start() 914 self._websocket_server = server914 Port._websocket_server = server 915 915 916 916 websocket_server_temporary_directory = self._filesystem.mkdtemp(prefix='webkitpy-websocket-server') 917 self._websocket_server_temporary_directory = websocket_server_temporary_directory917 Port._websocket_server_temporary_directory = websocket_server_temporary_directory 918 918 919 919 pem_file = self._filesystem.join(self.layout_tests_dir(), "http", "conf", "webkit-httpd.pem") … … 924 924 self._filesystem.write_text_file(private_key_file, pem.private_key) 925 925 926 secure_server = self._websocket_secure_server = websocket_server.PyWebSocket(self, self.results_directory(),926 secure_server = Port._websocket_secure_server = websocket_server.PyWebSocket(self, self.results_directory(), 927 927 use_tls=True, port=websocket_server.PyWebSocket.DEFAULT_WSS_PORT, private_key=private_key_file, certificate=certificate_file) 928 928 secure_server.start() 929 self._websocket_secure_server = secure_server929 Port._websocket_secure_server = secure_server 930 930 931 931 def start_web_platform_test_server(self, additional_dirs=None, number_of_servers=None): 932 assert not self._web_platform_test_server, 'Already running a Web Platform Test server.'933 934 self._web_platform_test_server = web_platform_test_server.WebPlatformTestServer(self, "wptwk")935 self._web_platform_test_server.start()932 assert not Port._web_platform_test_server, 'Already running a Web Platform Test server.' 933 934 Port._web_platform_test_server = web_platform_test_server.WebPlatformTestServer(self, "wptwk") 935 Port._web_platform_test_server.start() 936 936 937 937 def web_platform_test_server_doc_root(self): … … 972 972 def stop_websocket_server(self): 973 973 """Shut down the websocket server if it is running. Do nothing if it isn't.""" 974 if self._websocket_server:975 self._websocket_server.stop()976 self._websocket_server = None977 if self._websocket_secure_server:978 self._websocket_secure_server.stop()979 self._websocket_secure_server = None980 if self._websocket_server_temporary_directory:981 self._filesystem.rmtree(str( self._websocket_server_temporary_directory))974 if Port._websocket_server: 975 Port._websocket_server.stop() 976 Port._websocket_server = None 977 if Port._websocket_secure_server: 978 Port._websocket_secure_server.stop() 979 Port._websocket_secure_server = None 980 if Port._websocket_server_temporary_directory: 981 self._filesystem.rmtree(str(Port._websocket_server_temporary_directory)) 982 982 983 983 def stop_web_platform_test_server(self): 984 if self._web_platform_test_server:985 self._web_platform_test_server.stop()986 self._web_platform_test_server = None984 if Port._web_platform_test_server: 985 Port._web_platform_test_server.stop() 986 Port._web_platform_test_server = None 987 987 988 988 def exit_code_from_summarized_results(self, unexpected_results):
Note:
See TracChangeset
for help on using the changeset viewer.