Merge commit '267ddf8efe36cc799c4c31772a8883ea332ef55b' into version-5.4.0

This commit is contained in:
Kris Nuttycombe 2023-01-26 09:30:33 -07:00
commit 069159b8c1
1 changed files with 23 additions and 8 deletions

View File

@ -286,9 +286,18 @@ def main():
tests_to_run = split_list[args.rpcgroup] tests_to_run = split_list[args.rpcgroup]
else: else:
tests_to_run = test_list tests_to_run = test_list
run_tests(tests_to_run, config["environment"]["SRCDIR"], config["environment"]["BUILDDIR"], config["environment"]["EXEEXT"], args.jobs, args.coverage, passon_args) all_passed = run_tests(
RPCTestHandler,
tests_to_run,
config["environment"]["SRCDIR"],
config["environment"]["BUILDDIR"],
config["environment"]["EXEEXT"],
args.jobs,
args.coverage,
passon_args)
sys.exit(not all_passed)
def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=False, args=[]): def run_tests(test_handler, test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=False, args=[]):
BOLD = ("","") BOLD = ("","")
if os.name == 'posix': if os.name == 'posix':
# primitive formatting on supported # primitive formatting on supported
@ -320,7 +329,7 @@ def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=Fal
time_sum = 0 time_sum = 0
time0 = time.time() time0 = time.time()
job_queue = RPCTestHandler(jobs, tests_dir, test_list, flags) job_queue = test_handler(jobs, tests_dir, test_list, flags)
max_len_name = len(max(test_list, key=len)) max_len_name = len(max(test_list, key=len))
results = BOLD[1] + "%s | %s | %s\n\n" % ("TEST".ljust(max_len_name), "PASSED", "DURATION") + BOLD[0] results = BOLD[1] + "%s | %s | %s\n\n" % ("TEST".ljust(max_len_name), "PASSED", "DURATION") + BOLD[0]
@ -346,7 +355,7 @@ def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=Fal
print("Cleaning up coverage data") print("Cleaning up coverage data")
coverage.cleanup() coverage.cleanup()
sys.exit(not all_passed) return all_passed
class RPCTestHandler: class RPCTestHandler:
""" """
@ -366,6 +375,13 @@ class RPCTestHandler:
self.portseed_offset = int(time.time() * 1000) % 625 self.portseed_offset = int(time.time() * 1000) % 625
self.jobs = [] self.jobs = []
def start_test(self, args, stdout, stderr):
return subprocess.Popen(
args,
universal_newlines=True,
stdout=stdout,
stderr=stderr)
def get_next(self): def get_next(self):
while self.num_running < self.num_jobs and self.test_list: while self.num_running < self.num_jobs and self.test_list:
# Add tests # Add tests
@ -376,10 +392,9 @@ class RPCTestHandler:
log_stderr = tempfile.SpooledTemporaryFile(max_size=2**16) log_stderr = tempfile.SpooledTemporaryFile(max_size=2**16)
self.jobs.append((t, self.jobs.append((t,
time.time(), time.time(),
subprocess.Popen((self.tests_dir + t).split() + self.flags + port_seed, self.start_test((self.tests_dir + t).split() + self.flags + port_seed,
universal_newlines=True, log_stdout,
stdout=log_stdout, log_stderr),
stderr=log_stderr),
log_stdout, log_stdout,
log_stderr)) log_stderr))
# Run serial scripts on their own. We always run these first, # Run serial scripts on their own. We always run these first,