Skip to content

Commit

Permalink
Merge #29497: test: simplify test_runner.py
Browse files Browse the repository at this point in the history
0831b54 test: simplify test_runner.py (tdb3)

Pull request description:

  Implements the simplifications to test_runner.py proposed by sipa in PR #23995.

  Remove the num_running variable as it can be implied by the length of the jobs list.

  Remove the i variable as it can be implied by the length of the test_results list.

  Instead of counting results to determine if finished, make the queue object itself
  responsible (by looking at running jobs and jobs left).

ACKs for top commit:
  mzumsande:
    re-ACK 0831b54
  davidgumberg:
    reACK 0831b54
  marcofleon:
    re-ACK 0831b54

Tree-SHA512: e5473e68d49cd779b29d97635329283ae7195412cb1e92461675715ca7eedb6519a1a93ba28d40ca6f015d270f7bcd3e77cef279d9cd655155ab7805b49638f1
  • Loading branch information
fanquake committed Mar 14, 2024
2 parents 55c6323 + 0831b54 commit 6850d72
Showing 1 changed file with 6 additions and 8 deletions.
14 changes: 6 additions & 8 deletions test/functional/test_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -614,14 +614,12 @@ def run_tests(*, test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=
max_len_name = len(max(test_list, key=len))
test_count = len(test_list)
all_passed = True
i = 0
while i < test_count:
while not job_queue.done():
if failfast and not all_passed:
break
for test_result, testdir, stdout, stderr, skip_reason in job_queue.get_next():
test_results.append(test_result)
i += 1
done_str = "{}/{} - {}{}{}".format(i, test_count, BOLD[1], test_result.name, BOLD[0])
done_str = f"{len(test_results)}/{test_count} - {BOLD[1]}{test_result.name}{BOLD[0]}"
if test_result.status == "Passed":
logging.debug("%s passed, Duration: %s s" % (done_str, test_result.time))
elif test_result.status == "Skipped":
Expand Down Expand Up @@ -706,14 +704,15 @@ def __init__(self, *, num_tests_parallel, tests_dir, tmpdir, test_list, flags, u
self.tmpdir = tmpdir
self.test_list = test_list
self.flags = flags
self.num_running = 0
self.jobs = []
self.use_term_control = use_term_control

def done(self):
return not (self.jobs or self.test_list)

def get_next(self):
while self.num_running < self.num_jobs and self.test_list:
while len(self.jobs) < self.num_jobs and self.test_list:
# Add tests
self.num_running += 1
test = self.test_list.pop(0)
portseed = len(self.test_list)
portseed_arg = ["--portseed={}".format(portseed)]
Expand Down Expand Up @@ -757,7 +756,6 @@ def get_next(self):
skip_reason = re.search(r"Test Skipped: (.*)", stdout).group(1)
else:
status = "Failed"
self.num_running -= 1
self.jobs.remove(job)
if self.use_term_control:
clearline = '\r' + (' ' * dot_count) + '\r'
Expand Down

0 comments on commit 6850d72

Please sign in to comment.