Skip to content

Commit

Permalink
gh-84461: Fix parallel testing on WebAssembly
Browse files Browse the repository at this point in the history
Emscripten and WASI have stubbed getpid() syscall that always returns
the same value. Use time and random value instead of pid to create a
unique working directory.
  • Loading branch information
tiran committed Jun 13, 2022
1 parent c5d0517 commit d8eaff4
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
7 changes: 6 additions & 1 deletion Lib/test/libregrtest/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,12 @@ def create_temp_dir(self):
# Define a writable temp dir that will be used as cwd while running
# the tests. The name of the dir includes the pid to allow parallel
# testing (see the -j option).
pid = os.getpid()
# Emscripten and WASI have stubbed getpid(), Emscripten has only
# milisecond clock resolution. Use time_ns() + randint() instead.
if sys.platform in {"emscripten", "wasi"}:
pid = time.time_ns() + random.randint(0, 1000000)
else:
pid = os.getpid()
if self.worker_test_name is not None:
test_cwd = 'test_python_worker_{}'.format(pid)
else:
Expand Down
4 changes: 2 additions & 2 deletions Tools/scripts/run_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ def main(regrtest_args):
args.append('-n') # Silence alerts under Windows
if not any(is_multiprocess_flag(arg) for arg in regrtest_args):
if cross_compile and hostrunner:
# For now use only one core for cross-compiled builds;
# For now use only two cores for cross-compiled builds;
# hostrunner can be expensive.
args.extend(['-j', '1'])
args.extend(['-j', '2'])
else:
args.extend(['-j', '0']) # Use all CPU cores
if not any(is_resource_use_flag(arg) for arg in regrtest_args):
Expand Down

0 comments on commit d8eaff4

Please sign in to comment.