aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-09-19 16:51:35 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2016-09-19 16:51:47 +0200
commitc40dd70d0da717da7c3f67075914876e2e5e8337 (patch)
tree9dac6c0baa623a6641ccd9261d641e265f66e350
parentf07424a6716c1fc37dc7a4d66d8efcdbba975852 (diff)
parentdddd04f979392a8c69cc11f5c54d817702eeed3e (diff)
Merge #8750: [qa] Refactor RPCTestHandler to prevent TimeoutExpired
dddd04f [qa] Refactor RPCTestHandler to prevent TimeoutExpired (MarcoFalke)
-rwxr-xr-xqa/pull-tester/rpc-tests.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/qa/pull-tester/rpc-tests.py b/qa/pull-tester/rpc-tests.py
index 771f6c7a0f..9e187b019b 100755
--- a/qa/pull-tester/rpc-tests.py
+++ b/qa/pull-tester/rpc-tests.py
@@ -251,21 +251,27 @@ class RPCTestHandler:
self.num_running += 1
t = self.test_list.pop(0)
port_seed = ["--portseed=%s" % len(self.test_list)]
+ log_stdout = tempfile.SpooledTemporaryFile(max_size=2**16)
+ log_stderr = tempfile.SpooledTemporaryFile(max_size=2**16)
self.jobs.append((t,
time.time(),
subprocess.Popen((RPC_TESTS_DIR + t).split() + self.flags + port_seed,
universal_newlines=True,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)))
+ stdout=log_stdout,
+ stderr=log_stderr),
+ log_stdout,
+ log_stderr))
if not self.jobs:
raise IndexError('pop from empty list')
while True:
# Return first proc that finishes
time.sleep(.5)
for j in self.jobs:
- (name, time0, proc) = j
+ (name, time0, proc, log_out, log_err) = j
if proc.poll() is not None:
- (stdout, stderr) = proc.communicate(timeout=3)
+ log_out.seek(0), log_err.seek(0)
+ [stdout, stderr] = [l.read().decode('utf-8') for l in (log_out, log_err)]
+ log_out.close(), log_err.close()
passed = stderr == "" and proc.returncode == 0
self.num_running -= 1
self.jobs.remove(j)