Changeset 228133 in webkit
- Timestamp:
- Feb 5, 2018 3:10:58 PM (6 years ago)
- Location:
- trunk/Tools
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r228131 r228133 1 2018-02-05 Daniel Bates <dabates@apple.com> 2 3 REGRESSION (r217572): run-webkit-tests exits without emitting newline character 4 https://bugs.webkit.org/show_bug.cgi?id=182360 5 6 Rubber-stamped by Aakash Jain. 7 8 Fixes an annoyance where run-webkit-tests always exits without printing a newline character. 9 In the terminal this looks like: 10 11 $ Tools/Scripts/run-webkit-tests 12 Expected to fail, but passed: (7) 13 ... 14 Stopping WebSocket server ...$ 15 16 This bug was caused by code added in r217572 to stop all run-webkit-tests started servers (e.g. an HTTP 17 server) from an at-exit handler. When run-webkit-tests runs successfully (i.e. without error or 18 control-C interruption) we would stop all such servers twice: once as part of ending the test 19 run and once from the at-exit handler. The latter never prints a trailing newline character hence 20 the state of the terminal (as depicted above). Instead LayoutTestRunner.stop_servers() should only 21 stop servers that it started in LayoutTestRunner.start_servers(). 22 23 * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py: 24 (LayoutTestRunner.__init__): 25 (LayoutTestRunner.start_servers): 26 (LayoutTestRunner.stop_servers): 27 Only start servers that run-webkit-tests has not already started and only stop servers that 28 run-webkit-tests started. 29 30 * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py: 31 (LayoutTestRunnerTests.test_servers_started.is_websocket_server_running): 32 (LayoutTestRunnerTests.test_servers_started): 33 (LayoutTestRunnerTests.test_servers_started.is_websocket_servers_running): Deleted. 34 Update due to rename below. 35 36 * Scripts/webkitpy/layout_tests/servers/websocket_server.py: 37 (is_web_socket_server_running): Added. 38 (PyWebSocket.is_running): Deleted. 39 40 * Scripts/webkitpy/port/base.py: 41 (Port.is_http_server_running): Check if we already started the server ourself. 42 (Port.is_websocket_server_running): Formerly named is_websocket_servers_running. Modified 43 to check if we already started the server ourself. Take a similar approach as the other 44 Port.is_*_running methods and only check if an existing WebSocket server is running on the 45 non-secure server port. This is a simple heuristic and should be sufficient in practice. 46 (Port.is_wpt_server_running): Check if we already started the server ourself. 47 (Port.is_websocket_servers_running): Deleted; renamed to is_websocket_server_running(). 48 1 49 2018-02-05 Daniel Bates <dabates@apple.com> 2 50 -
trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
r225733 r228133 80 80 self._retrying = False 81 81 self._current_run_results = None 82 self._did_start_http_server = False 83 self._did_start_websocket_server = False 84 self._did_start_wpt_server = False 82 85 83 86 if ((self._needs_http and self._options.http) or self._needs_web_platform_test_server) and self._port.get_option("start_http_servers_if_needed"): … … 191 194 192 195 def start_servers(self): 193 if self._needs_http and not self._ port.is_http_server_running():196 if self._needs_http and not self._did_start_http_server and not self._port.is_http_server_running(): 194 197 self._printer.write_update('Starting HTTP server ...') 195 198 self._port.start_http_server() 196 if self._needs_websockets and not self._port.is_websocket_servers_running(): 199 self._did_start_http_server = True 200 if self._needs_websockets and not self._did_start_websocket_server and not self._port.is_websocket_server_running(): 197 201 self._printer.write_update('Starting WebSocket server ...') 198 202 self._port.start_websocket_server() 199 if self._needs_web_platform_test_server and not self._port.is_wpt_server_running(): 203 self._did_start_websocket_server = True 204 if self._needs_web_platform_test_server and not self._did_start_wpt_server and not self._port.is_wpt_server_running(): 200 205 self._printer.write_update('Starting Web Platform Test server ...') 201 206 self._port.start_web_platform_test_server() 207 self._did_start_wpt_server = True 202 208 203 209 def stop_servers(self): 204 if self._ needs_http:210 if self._did_start_http_server: 205 211 self._printer.write_update('Stopping HTTP server ...') 206 212 self._port.stop_http_server() 207 if self._needs_websockets: 213 self._did_start_http_server = False 214 if self._did_start_websocket_server: 208 215 self._printer.write_update('Stopping WebSocket server ...') 209 216 self._port.stop_websocket_server() 210 if self._needs_web_platform_test_server: 217 self._did_start_websocket_server = False 218 if self._did_start_wpt_server: 211 219 self._printer.write_update('Stopping Web Platform Test server ...') 212 220 self._port.stop_web_platform_test_server() 221 self._did_start_wpt_server = False 213 222 214 223 def handle(self, name, source, *args): -
trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py
r226820 r228133 163 163 return self.http_started and not self.http_stopped 164 164 165 def is_websocket_server s_running():165 def is_websocket_server_running(): 166 166 return self.websocket_started and not self.websocket_stopped 167 167 … … 178 178 port.stop_web_platform_test_server = stop_web_platform_test_server 179 179 port.is_http_server_running = is_http_server_running 180 port.is_websocket_server s_running = is_websocket_servers_running180 port.is_websocket_server_running = is_websocket_server_running 181 181 port.is_wpt_server_running = is_wpt_server_running 182 182 -
trunk/Tools/Scripts/webkitpy/layout_tests/servers/websocket_server.py
r225733 r228133 30 30 """A class to help start/stop the PyWebSocket server used by layout tests.""" 31 31 32 import errno33 32 import logging 34 33 import os 35 import socket36 34 import sys 37 35 import time 38 36 39 from webkitpy.layout_tests.servers import http_server 40 from webkitpy.layout_tests.servers import http_server_base 37 from webkitpy.layout_tests.servers import http_server, http_server_base 41 38 42 39 _log = logging.getLogger(__name__) … … 108 105 else: 109 106 self._log_prefix = _WS_LOG_NAME 110 111 def is_running(self):112 s = socket.socket()113 try:114 s.connect(('localhost', self._port))115 except IOError as e:116 if e.errno not in (errno.ECONNREFUSED, errno.ECONNRESET):117 raise118 return False119 finally:120 s.close()121 return True122 107 123 108 def ports_to_forward(self): … … 191 176 self._wsout.close() 192 177 self._wsout = None 178 179 180 def is_web_socket_server_running(): 181 return http_server_base.HttpServerBase._is_running_on_port(PyWebSocket.DEFAULT_WS_PORT) -
trunk/Tools/Scripts/webkitpy/port/base.py
r227427 r228133 975 975 976 976 def is_http_server_running(self): 977 if self._http_server: 978 return True 977 979 return http_server_base.is_http_server_running() 978 980 979 def is_websocket_servers_running(self): 980 if self._websocket_secure_server and self._websocket_server: 981 return self._websocket_secure_server.is_running() and self._websocket_server.is_running() 982 elif self._websocket_server: 983 return self._websocket_server.is_running() 984 return False 981 def is_websocket_server_running(self): 982 if self._websocket_server: 983 return True 984 return websocket_server.is_web_socket_server_running() 985 985 986 986 def is_wpt_server_running(self): 987 if self._web_platform_test_server: 988 return True 987 989 return web_platform_test_server.is_wpt_server_running(self) 988 990
Note: See TracChangeset
for help on using the changeset viewer.