adb: don't hardcode ports in test_adb.
If we get unlucky and something else (or ourselves, in another thread) beats us to listening on our hardcoded ports, we can deadlock. Bug: http://b//149829737 Test: ./test_adb.py Change-Id: I8f14004a6b2e77366abad6e88786ea8941629020
This commit is contained in:
parent
4bd1f92e0b
commit
e8829c6bfc
1 changed files with 9 additions and 14 deletions
|
@ -33,6 +33,11 @@ import time
|
|||
import unittest
|
||||
import warnings
|
||||
|
||||
def find_open_port():
|
||||
# Find an open port.
|
||||
with socket.socket() as s:
|
||||
s.bind(("localhost", 0))
|
||||
return s.getsockname()[1]
|
||||
|
||||
@contextlib.contextmanager
|
||||
def fake_adbd(protocol=socket.AF_INET, port=0):
|
||||
|
@ -126,10 +131,7 @@ def adb_server():
|
|||
This creates an ADB server and returns the port it's listening on.
|
||||
"""
|
||||
|
||||
port = 5038
|
||||
# Kill any existing server on this non-default port.
|
||||
subprocess.check_output(["adb", "-P", str(port), "kill-server"],
|
||||
stderr=subprocess.STDOUT)
|
||||
port = find_open_port()
|
||||
read_pipe, write_pipe = os.pipe()
|
||||
|
||||
if sys.platform == "win32":
|
||||
|
@ -224,10 +226,7 @@ class ServerTest(unittest.TestCase):
|
|||
# adb server, this also tests whether multiple instances of the adb
|
||||
# server conflict on adb.log.
|
||||
|
||||
port = 5038
|
||||
# Kill any existing server on this non-default port.
|
||||
subprocess.check_output(["adb", "-P", str(port), "kill-server"],
|
||||
stderr=subprocess.STDOUT)
|
||||
port = find_open_port()
|
||||
|
||||
try:
|
||||
# We get warnings for unclosed files for the subprocess's pipes,
|
||||
|
@ -289,12 +288,8 @@ class ServerTest(unittest.TestCase):
|
|||
"""
|
||||
Tests that the server can start up on ::1 and that it's accessible
|
||||
"""
|
||||
server_port = 5037
|
||||
# Kill any existing server on this non-default port.
|
||||
subprocess.check_output(
|
||||
["adb", "-P", str(server_port), "kill-server"],
|
||||
stderr=subprocess.STDOUT,
|
||||
)
|
||||
|
||||
server_port = find_open_port()
|
||||
try:
|
||||
subprocess.check_output(
|
||||
["adb", "-L", "tcp:[::1]:{}".format(server_port), "server"],
|
||||
|
|
Loading…
Reference in a new issue