gh-129694: Add --parallel-threads TSAN job to CI (gh-129696)

For now, this just adds a single test suite to the TSAN CI to be run
with `--parallel-threads`.
This commit is contained in:
Sam Gross 2025-02-06 10:19:00 -05:00 committed by GitHub
parent 55f17b77c3
commit 555dc50c81
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 23 additions and 1 deletions

View file

@ -74,6 +74,9 @@ jobs:
run: make pythoninfo
- name: Tests
run: ./python -m test --tsan -j4
- name: Parallel tests
if: fromJSON(inputs.free-threading)
run: ./python -m test --tsan-parallel --parallel-threads=4 -j4
- name: Display TSAN logs
if: always()
run: find "${GITHUB_WORKSPACE}" -name 'tsan_log.*' | xargs head -n 1000

View file

@ -168,6 +168,7 @@ class Namespace(argparse.Namespace):
self.pgo = False
self.pgo_extended = False
self.tsan = False
self.tsan_parallel = False
self.worker_json = None
self.start = None
self.timeout = None
@ -351,6 +352,9 @@ def _create_parser():
help='enable extended PGO training (slower training)')
group.add_argument('--tsan', dest='tsan', action='store_true',
help='run a subset of test cases that are proper for the TSAN test')
group.add_argument('--tsan-parallel', action='store_true',
help='run a subset of test cases that are appropriate '
'for TSAN with `--parallel-threads=N`')
group.add_argument('--fail-env-changed', action='store_true',
help='if a test file alters the environment, mark '
'the test as failed')

View file

@ -20,7 +20,7 @@ from .results import TestResults, EXITCODE_INTERRUPTED
from .runtests import RunTests, HuntRefleak
from .setup import setup_process, setup_test_dir
from .single import run_single_test, PROGRESS_MIN_TIME
from .tsan import setup_tsan_tests
from .tsan import setup_tsan_tests, setup_tsan_parallel_tests
from .utils import (
StrPath, StrJSON, TestName, TestList, TestTuple, TestFilter,
strip_py_suffix, count, format_duration,
@ -60,6 +60,7 @@ class Regrtest:
self.pgo: bool = ns.pgo
self.pgo_extended: bool = ns.pgo_extended
self.tsan: bool = ns.tsan
self.tsan_parallel: bool = ns.tsan_parallel
# Test results
self.results: TestResults = TestResults()
@ -195,6 +196,9 @@ class Regrtest:
if self.tsan:
setup_tsan_tests(self.cmdline_args)
if self.tsan_parallel:
setup_tsan_parallel_tests(self.cmdline_args)
exclude_tests = set()
if self.exclude:
for arg in self.cmdline_args:

View file

@ -28,7 +28,18 @@ TSAN_TESTS = [
'test_free_threading.test_slots',
]
# Tests that should be run with `--parallel-threads=N` under TSAN. These tests
# typically do not use threads, but are run multiple times in parallel by
# the regression test runner with the `--parallel-threads` option enabled.
TSAN_PARALLEL_TESTS = [
'test_abc',
]
def setup_tsan_tests(cmdline_args) -> None:
if not cmdline_args:
cmdline_args[:] = TSAN_TESTS[:]
def setup_tsan_parallel_tests(cmdline_args) -> None:
if not cmdline_args:
cmdline_args[:] = TSAN_PARALLEL_TESTS[:]