Skip to content

Commit e6919c8

Browse files
authored
Limit testsuite parallelism to number of tests (emscripten-core#10890)
This means that we never start more processes that we have tests to run. This was happening on my machine which would start 56 processes when I run just 2 tests.
1 parent 1ed6dd5 commit e6919c8

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

tests/parallel_runner.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@ class ParallelTestSuite(unittest.BaseTestSuite):
3939
Creates worker threads, manages the task queue, and combines the results.
4040
"""
4141

42-
def __init__(self):
42+
def __init__(self, max_cores):
4343
super(ParallelTestSuite, self).__init__()
4444
self.processes = None
4545
self.result_queue = None
46+
self.max_cores = max_cores
4647

4748
def run(self, result):
4849
test_queue = self.create_test_queue()
@@ -73,10 +74,11 @@ def reversed_tests(self):
7374
return tests[::-1]
7475

7576
def init_processes(self, test_queue):
77+
use_cores = min(self.max_cores, num_cores())
78+
print('Using %s parallel test processes' % use_cores)
7679
self.processes = []
7780
self.result_queue = multiprocessing.Queue()
78-
self.dedicated_temp_dirs = [tempfile.mkdtemp() for x in range(num_cores())]
79-
print('Using %s parallel test processes' % len(self.dedicated_temp_dirs))
81+
self.dedicated_temp_dirs = [tempfile.mkdtemp() for x in range(use_cores)]
8082
for temp_dir in self.dedicated_temp_dirs:
8183
p = multiprocessing.Process(target=g_testing_thread,
8284
args=(test_queue, self.result_queue, temp_dir))

tests/runner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1948,7 +1948,7 @@ def suite_for_module(module, tests):
19481948
has_multiple_tests = len(tests) > 1
19491949
has_multiple_cores = parallel_runner.num_cores() > 1
19501950
if suite_supported and has_multiple_tests and has_multiple_cores:
1951-
return parallel_runner.ParallelTestSuite()
1951+
return parallel_runner.ParallelTestSuite(len(tests))
19521952
return unittest.TestSuite()
19531953

19541954

0 commit comments

Comments
 (0)