Skip to content

Commit 150c4a8

Browse files
yezhizhenservo-wpt-sync
authored andcommitted
- Use requests to clean resources
- Add retry Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
1 parent 4afe301 commit 150c4a8

File tree

1 file changed

+25
-19
lines changed

1 file changed

+25
-19
lines changed

tools/wptrunner/wptrunner/browsers/servodriver.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# mypy: allow-untyped-defs
22

3-
from http.client import HTTPConnection, ResponseNotReady
43
import os
4+
import requests
55
import tempfile
66
import time
77

@@ -81,6 +81,7 @@ def write_hosts_file(config):
8181

8282
class ServoWebDriverBrowser(WebDriverBrowser):
8383
init_timeout = 300 # Large timeout for cases where we're booting an Android emulator
84+
shutdown_retry = 5
8485

8586
def __init__(self, logger, binary, debug_info=None, webdriver_host="127.0.0.1",
8687
server_config=None, binary_args=None,
@@ -134,33 +135,38 @@ def is_alive(self):
134135
if not super().is_alive():
135136
return False
136137
try:
137-
conn = HTTPConnection(self.host, self.port)
138-
conn.request("GET", "/status")
139-
res = conn.getresponse()
138+
requests.get(f"http://{self.host}:{self.port}/status", timeout=5)
140139
except Exception:
141-
self.logger.info("Servo has shutted down normally.")
140+
self.logger.debug("Servo has shut down normally.")
142141
return False
143142

144143
return True
145144

146145
def stop(self, force=False):
146+
retry_cnt = 0
147147
while self.is_alive():
148148
self.logger.info("Trying to shut down gracefully by extension command")
149-
while True:
150-
try:
151-
conn = HTTPConnection(self.host, self.port)
152-
conn.request("DELETE", "/session/dummy-session-id/servo/shutdown")
153-
res = conn.getresponse()
154-
self.logger.info(f"Got response status for shutdown command: {res.status}")
155-
except ResponseNotReady:
156-
self.logger.info(f"Shutdown request not sent yet, retrying...")
157-
continue
158-
except Exception as e:
159-
self.logger.info(f"Servo browser already shut down: {e}")
160-
return
161-
# Successfully sent the shutdown command
149+
try:
150+
requests.delete(
151+
f"http://{self.host}:{self.port}/session/dummy-session-id/servo/shutdown",
152+
timeout=5
153+
)
154+
except requests.exceptions.ConnectionError:
155+
self.logger.debug("Browser already shut down (connection refused)")
162156
break
163-
time.sleep(0.1)
157+
except requests.exceptions.RequestException as e:
158+
self.logger.debug(f"Request exception: {e}")
159+
break
160+
except requests.exceptions.Timeout:
161+
self.logger.debug("Request timed out")
162+
break
163+
164+
retry_cnt += 1
165+
if retry_cnt >= self.shutdown_retry:
166+
self.logger.debug("Max retry exceeded.")
167+
break
168+
time.sleep(1)
169+
super().stop(force=force)
164170

165171
def find_wpt_prefs(self, logger):
166172
default_path = os.path.join("resources", "wpt-prefs.json")

0 commit comments

Comments
 (0)