Commit ef8afbd
committed
test(xmtp_mls): randomized bidi delivery fuzz against the live node
Two seeded fuzz tests run against the containerized backend, closing the
gap the scripted suite cannot: unscripted interleavings, and the real
server rather than a model of it.
- fuzz_server_honors_the_bidi_wave_contract: raw BidiConnection under
random publish/add/yank/remove churn; asserts always-ack, per-topic
wave cursor order, the live-lane hold for yanked topics (armed at the
wave's first tagged frame — stream-ordered, race-free), live frames
strictly above the cross-lane high-water, and completeness above the
lowest asked cursor against a final authoritative query.
- fuzz_transport_delivery_never_loses_above_the_floor: a real
BidiTransport whose wire runs through toxiproxy; random lease/yank/
unsubscribe/stall/suspend-resume schedules plus real TCP blips; asserts
per-lease exactly-once above its floor, completeness to the live edge
for every surviving lease, catch-up liveness, and recovery-chain union
completeness across backpressure drops (relinked from received state —
the durable-cursor recovery shape). Welcome topics ride the same
invariants; schedule telemetry is logged so dark levers are visible.
Seeds print at start and ride every assertion (XMTP_BIDI_FUZZ_SEED to
replay; XMTP_BIDI_FUZZ_ROUNDS to scale). nextest retries are disabled
for these tests — a retry would re-roll the seed and mask a finding.
Already earned its keep: caught the removes-wave/untagged-tombstone
collision and validated the deref-mid-replay fix, both in the tags PR.1 parent fe57383 commit ef8afbd
3 files changed
Lines changed: 1110 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
0 commit comments