|
|
|
@ -251,21 +251,27 @@ class RPCTestHandler:
@@ -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) |
|
|
|
|