Repository navigation
tests: shard the ownership manifest-controls test 4 ways so Debug/ASan stop timing out (CR-196) - #445
Merged
Merged
Conversation
test_selected_window_ownership_manifest_controls took 126-132 s on the loaded
pool box (180 s budget) and hit the timeout in Debug and sanitizers (run
39172376128). The module is pure Python and ~39 checker subprocess runs; the
same loader-discovered cases now run as four CTest entries
test_selected_window_ownership_manifest_controls_shard_{1..4}of4, each with the
same 180 s TIMEOUT, so no timeout is raised and no assertion, fixture or the
checker changes.
tests/ownership/test_manifest_checker.py gains --shard I/N (sorted
ManifestCheckerTests ids at positions [I-1::N], plus a cheap partition guard
case run in every shard that proves, for N=1..8, the shards are disjoint and
cover every case); without --shard the module behaves as before (preflight
and scripts/test_private_fixture_reads.py run it unsharded). CMake, docs/ci.md,
tests/ownership/README.md, the ci_verify floor note and the CHANGELOG say so.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…il closed The independent read of f539b76 found that unittest.main(module=None, defaultTest=ids, argv=[prog]) ignores defaultTest and falls back to discovery, so each CTest shard ran zero tests (exit 0 before Python 3.12, exit 5 from 3.12). The ids now go into argv, where unittest loads them by name, and the sharded entry point exits 1 unless the number of tests it ran equals the number it selected (and all passed); an empty shard is refused. The CMake headroom comment now uses the heaviest shard (15 of the 39 checker runs, an estimate, about 2.4x on sanitizers) instead of the average, and the README states what a shard checks. Cases, assertions, fixtures, the checker and the 180 s timeout are untouched. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
luisleo526
added a commit
that referenced
this pull request
Oct 19, 2026
…375795a) into the notes fix Brings engine main (the #445 test sharding) and the merge commit made on the pull request, and keeps the notes-only commit c4b0bd0 on top, so the branch head is a fast-forward of the pull request head. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CR-196. Engine main CI has been RED since 10-18 22:28 on one test: test_selected_window_ownership_manifest_controls (tests/ownership/test_manifest_checker.py, 31 cases, ~39 checker subprocess runs, pure Python) hit ctest's 180 s TIMEOUT on the loaded pool box in Verify (Debug) and Verify (sanitizers) (run 39172376128); it already took 126-132 s in Release there.
Fix: the SAME module is registered as 4 ctest rows test_selected_window_ownership_manifest_controls_shard_{1..4}of4 (--shard I/N, stable sorted-id shards). Same cases, same assertions, same fixtures, same checker, same TIMEOUT 180. A guard class (run in every shard) proves for N=1..8 that the shards are disjoint and cover every case. The sharded entry exits 1 unless testsRun == the number selected (an empty shard is refused); unsharded behaviour is byte-identical.
Proof:
Notes: the 10-18 00:01 macOS Verify (Debug) failure was unrelated: ctest 938/938, the failing stage was abi-prior-fetch, a transient 'RPC failed; curl 56 Connection reset' with no retry (to CR-195). ci_verify floors still met (release 653 rows vs floor 603; kernel 343 vs 306).
🤖 Generated with Claude Code