Skip to content

Commit 3f79c00

Browse files
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

.github/corpus/pricing/max_price

18 Bytes
Binary file not shown.

.github/corpus/pricing/min_price

18 Bytes
Binary file not shown.
18 Bytes
Binary file not shown.

.github/corpus/pricing/zero_price

18 Bytes
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dddddddddddddddddddddddddddddddd
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

18 Bytes
Binary file not shown.
18 Bytes
Binary file not shown.
9 Bytes
Binary file not shown.
9 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)