Skip to content

Commit c40dd70

Browse files
committed
Merge #8750: [qa] Refactor RPCTestHandler to prevent TimeoutExpired
dddd04f [qa] Refactor RPCTestHandler to prevent TimeoutExpired (MarcoFalke)
2 parents f07424a + dddd04f commit c40dd70

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

qa/pull-tester/rpc-tests.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -251,21 +251,27 @@ def get_next(self):
251251
self.num_running += 1
252252
t = self.test_list.pop(0)
253253
port_seed = ["--portseed=%s" % len(self.test_list)]
254+
log_stdout = tempfile.SpooledTemporaryFile(max_size=2**16)
255+
log_stderr = tempfile.SpooledTemporaryFile(max_size=2**16)
254256
self.jobs.append((t,
255257
time.time(),
256258
subprocess.Popen((RPC_TESTS_DIR + t).split() + self.flags + port_seed,
257259
universal_newlines=True,
258-
stdout=subprocess.PIPE,
259-
stderr=subprocess.PIPE)))
260+
stdout=log_stdout,
261+
stderr=log_stderr),
262+
log_stdout,
263+
log_stderr))
260264
if not self.jobs:
261265
raise IndexError('pop from empty list')
262266
while True:
263267
# Return first proc that finishes
264268
time.sleep(.5)
265269
for j in self.jobs:
266-
(name, time0, proc) = j
270+
(name, time0, proc, log_out, log_err) = j
267271
if proc.poll() is not None:
268-
(stdout, stderr) = proc.communicate(timeout=3)
272+
log_out.seek(0), log_err.seek(0)
273+
[stdout, stderr] = [l.read().decode('utf-8') for l in (log_out, log_err)]
274+
log_out.close(), log_err.close()
269275
passed = stderr == "" and proc.returncode == 0
270276
self.num_running -= 1
271277
self.jobs.remove(j)

0 commit comments

Comments
 (0)