From 94d1acbcfd7939f8ed62f62fb7e7cf7cd3ee4a35 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 19 Jul 2018 19:16:07 +0200 Subject: [PATCH] run_in_headless_android_emulator: add support for reverse port forwarding --- etc/run_in_headless_android_emulator.py | 8 ++++++++ .../tools/wptrunner/wptrunner/browsers/servodriver.py | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/etc/run_in_headless_android_emulator.py b/etc/run_in_headless_android_emulator.py index 31421c0c702..1b7c63835ef 100755 --- a/etc/run_in_headless_android_emulator.py +++ b/etc/run_in_headless_android_emulator.py @@ -139,6 +139,14 @@ def forward_webdriver(adb, args): check_call(adb + ["forward", port, port]) sys.stderr.write("Forwarding WebDriver port %s to the emulator\n" % webdriver_port) + split = os.environ.get("EMULATOR_REVERSE_FORWARD_PORTS", "").split(",") + ports = [int(part) for part in split if part] + for port in ports: + port = "tcp:%s" % port + check_call(adb + ["reverse", port, port]) + if ports: + sys.stderr.write("Reverse-forwarding ports %s\n" % ", ".join(map(str, ports))) + def extract_arg(name, args): for _, arg in extract_args(name, args): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py index 3fc4eead7a3..74874fd6d2d 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py @@ -84,6 +84,7 @@ class ServoWebDriverBrowser(Browser): self.proc = None self.debug_info = debug_info self.hosts_path = write_hosts_file(server_config) + self.server_ports = server_config.ports if server_config else {} self.command = None self.user_stylesheets = user_stylesheets if user_stylesheets else [] @@ -94,6 +95,11 @@ class ServoWebDriverBrowser(Browser): env = os.environ.copy() env["HOST_FILE"] = self.hosts_path env["RUST_BACKTRACE"] = "1" + env["EMULATOR_REVERSE_FORWARD_PORTS"] = ",".join( + str(port) + for _protocol, ports in self.server_ports.items() + for port in ports + ) debug_args, command = browser_command( self.binary,