Repository navigation
Reduce time of longest CI tests - #4825
Merged
Merged
Conversation
Each of the 4 `--train-cover=steps=256,shrink*` commands trained 558 candidate dictionaries. Under MSan they took ~90 s each, 6 of the 26 min of clang-msan-testzstd. Shrinking is applied to every candidate, so a few candidates exercise it just as well: steps=7 trains 16 of them, and runs ~20x faster. The fastcover shrink tests were reduced the same way in 85a016e.
`fuzz.py regression` ran the 21 corpora one after another: msan-regression took 9 to 24 min on 4-CPU runners, depending on runner speed. Run one target per CPU, largest corpora first, since they take longest. Each target's output is printed with its command line when it completes. All targets run even if one fails, and failures are listed at the end. Locally, 4 CPUs, no sanitizer: 290 s -> 135 s.
`make test` ran its 9 test targets one after another, taking 14-20 min, about 7 of which are time-boxed fuzzers. make-test-32bit already runs `make -j test`, and takes 10-11 min.
They took ~20 of the job's 22-26 min, making it the longest job of dev-long-tests. They still run in the make-test* jobs, and in the 3 ASan + UBSan testzstd jobs.
Claude Code keeps per-checkout state there (local settings, agent worktrees). Nothing under .claude/ is tracked; ignoring it keeps it out of git status and out of accidental commits.
The uasan-%, asan-% and tsan-% rules don't pass -j, so these jobs built their testers serially, then ran fuzzer, zstreamtest and decodecorpus one after another. gcc-asan-ubsan-fuzz32 took 16 min: 10.3 for fuzzer, 3.1 for zstreamtest, 2.9 for builds. With -j, the testers build and run concurrently, as in the msan-fuzztest jobs, whose msan-% rule already passes -j.
The fuzzer unit tests take 4 to 12 min at -O0 under MSan, depending on the runner, and are what this job is for. The random fuzzing that follows (fuzzer 200 s, zstreamtest 2x 90 s) duplicates clang-msan-fuzz, which runs it longer, with --long-tests, on optimized code. Cut it to 60 s and 2x 30 s: ~2.3 min less on this job, the longest of dev-long-tests after the previous changes.
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.
make-test*jobs and the 3 ASan + UBSan testzstd jobs.fuzz.pyregression now runs targets in parallel, one per CPU. This also speeds up the 2 ASan regression jobs and commit.yml's regressiontest.make-testandmake-test-macos(14–20 min): usemake -j test, asmake-test-32bitalready does.