diff options
author | MarcoFalke <falke.marco@gmail.com> | 2016-09-17 11:47:51 +0200 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2016-09-17 11:49:43 +0200 |
commit | dddd04f979392a8c69cc11f5c54d817702eeed3e (patch) | |
tree | 8b73d4fd56fb99b617f760e914bade8e2a1e8915 /qa/pull-tester/rpc-tests.py | |
parent | 1e5799c52535a3fc20e885916f1e7ed33ecc7f46 (diff) |
[qa] Refactor RPCTestHandler to prevent TimeoutExpired
Diffstat (limited to 'qa/pull-tester/rpc-tests.py')
-rwxr-xr-x | qa/pull-tester/rpc-tests.py | 14 |
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) |