Skip to content

Commit 6ded97d

Browse files
authored
Read grpc_device_server port from any line of server output when running system_tests (#2006)
* Get server port from json * Brad's fix. Read lines until server port discovered
1 parent 51b6b31 commit 6ded97d

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/shared/system_test_utilities.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
import pathlib
33
import pytest
4+
import re
45
import subprocess
56
import threading
67
import time
@@ -11,11 +12,17 @@ def __init__(self):
1112
server_exe = self._get_grpc_server_exe()
1213
self._proc = subprocess.Popen([str(server_exe)], stdout=subprocess.PIPE)
1314

14-
# Read/parse first line of output; discard the rest
15+
# Read/parse output until we find the port number or the process exits; discard the rest.
1516
try:
16-
first_line = self._proc.stdout.readline()
17-
assert first_line.startswith(b"Server listening on port "), f"Unrecognized output: {first_line}"
18-
self.server_port = int(first_line.replace(b"Server listening on port ", b"").strip())
17+
self.server_port = None
18+
while self.server_port is None and self._proc.poll() is None:
19+
line = self._proc.stdout.readline()
20+
match = re.search(rb"Server listening on port (\d+)", line)
21+
if match:
22+
self.server_port = int(match.group(1))
23+
24+
if self._proc.poll() is not None:
25+
raise RuntimeError(f"Server exited with return code {self._proc.returncode}")
1926

2027
self._stdout_thread = threading.Thread(target=self._discard_output, args=(self._proc.stdout,), daemon=True)
2128
self._stdout_thread.start()

0 commit comments

Comments
 (0)