Commit 3f79c00
feat(fuzz): coverage-guided fuzz testing pipeline with cargo-fuzz (#460)
* feat(fuzz): add cargo-fuzz crate with 4 coverage-guided targets
- subscription: full lifecycle fuzzing (create_plan → subscribe →
charge → pause → resume → cancel)
- pricing: boundary price values, refund math, charge timing
- rate_limit: per-function rate-limit enforcement windows
- state_machine: illegal state transitions (double-cancel,
charge-while-paused, etc.)
- utils: shared helpers for byte parsing, env setup, time management
- .gitignore for cargo-fuzz artifacts and corpus directories
- seed corpus files for all 4 targets with edge-case inputs
Each target parses raw bytes from libFuzzer into a command stream
and catches panics to keep fuzzing on invalid inputs.
* feat(ci): rewrite fuzz CI with cargo-fuzz matrix, corpus cache, crash triage
- 4-target matrix (subscription, pricing, rate_limit, state_machine)
running in parallel
- nightly toolchain + cargo-fuzz installation
- seed corpus copied from .github/corpus/ and cached between runs
- 30-minute run per target with AddressSanitizer
- crash artifacts uploaded on failure with 14-day retention
- corpus uploaded weekly for coverage continuity
- scheduled weekly run (Monday 06:00 UTC)
- explicit error notification with local reproduction command
---------
Co-authored-by: Kefas Kingsley <kefasiceking@gmail.com>1 parent 7ed9012 commit 3f79c00
22 files changed
Lines changed: 663 additions & 40 deletions
File tree
- .github
- corpus
- pricing
- rate_limit
- state_machine
- subscription
- workflows
- contracts/fuzz
- fuzz_targets
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
0 commit comments