CI: Add a scheduled job that runs the clip launcher fuzz tests with new seeds
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 56/100
Research direction
Read tracktion_ClipLauncherFuzz.test.cpp and the existing GitHub Actions workflows; first check how the fuzz test reads its existing seed environment variables and how TestRunner is built with Signalsmith enabled. Add the scheduled and manually triggered workflow, seed-range support, a bounded run, and actionable failure summaries. Done means the workflow runs the requested fuzz test with varying seeds and a timeout, and reports enough failure details to reproduce a seed locally.
Written by the indexing model from the issue text.
Description
Summary
tracktion_ClipLauncherFuzz.test.cpp (Tracktion/tracktion_engine#458) runs seeds 1 to 10 on every CI run, so CI only ever replays the same 10 scenarios. Running more seeds locally found real bugs that the default 10 didn't:
- stuck notes across graph rebuilds
- a click just before launched clips stop
- one-shots playing past their end
- MIDI events on block boundaries
- looped MIDI clips going silent after a resync
A scheduled job would keep exploring new scenarios without slowing down PR CI.
Task
- Add a scheduled workflow, e.g. nightly, plus
workflow_dispatchso it can be run by hand. It only needs to build TestRunner (Release, Linux is enough) and run-tc="Clip launcher fuzz*". - Run a different seed range each time, e.g. starting from the run number or the date. This needs a small change to the test: a start-seed environment variable alongside the existing
TE_CLIP_LAUNCHER_FUZZ_SEEDS(count) andTE_CLIP_LAUNCHER_FUZZ_SEED(single seed). - Size the run for a time budget. The four variants take about 4 s per seed in Release on a Mac, so 200 seeds is roughly 15 minutes.
- Build with Signalsmith time-stretching, as the audio checks only run with it (other stretchers change a clip's start).
- Set
timeout-minutes. - Make failures easy to act on. Each failure prints its seed, the clips and a timed schedule, so put those in the job summary, and consider notifying or opening an issue.
Notes
- A failure here may be a long-standing bug that a new seed happens to hit, not a regression in the latest commit. Reproduce it locally with
TE_CLIP_LAUNCHER_FUZZ_SEED=N. - Two known minor issues are tolerated by the tests:
- launched audio is resynced at an arrangement loop wrap, so the tests skip 64 frames after each wrap
- sinc resampling dips the level about 1.5% just before a loop point
Refs Tracktion/waveform_beta#1286
- Dominant language
- C++
- Stars
- 1.5k
- Forks
- 222
- Avg merge
- 15h 44m
- Merged PRs (30d)
- 33
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Tracktion/tracktion_engine
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Tracktion/tracktion_engine#475 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Tracktion/tracktion_engine#476 · 5 comments ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 22/100
Tracktion/tracktion_engine#474 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
Tracktion/tracktion_engine#473 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 42/100
Tracktion/tracktion_engine#401 · 1 comment ·
Maintainers usually reply within 1 day
All issues in Tracktion/tracktion_engine
Similar issues
-
v9.6.0: CMake incorrectly enforces presence of libevdevPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 65/100
mltframework/shotcut#1943 ·
Maintainers usually reply within 1 day
-
Rowan (2017) electron heating gives NaN for beta > beta_max; clip() then sets electrons to kel_minOpen
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
parthenon-hpc-lab/kharma#213 · 1 comment ·
Maintainers usually reply within 3 days
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
metasequoiaime/msime#9113 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
tone-3000/tone3000-plugin#257 · 1 comment ·
Maintainers usually reply within 1 day