tidaldb/tidal-server/tests/support/mod.rs
jx12n 1265140e28 feat(m11): continuous correctness (m11p9) — fault classes, invariant checkers, soak gates, nightly pipeline
- fault-injection cargo feature (compiled OUT of prod): slow-fsync + disk-full
  WAL hooks in tidal/src/fault.rs, inert until armed, tier-3 builds with feature
- first-class invariant checkers (tests/support/invariants.rs): AckLedger
  no-acked-loss (now consumed by m11p3 gate), feed parity, single-leader-per-term,
  monotonic frontiers
- cluster_faults.rs tier-3 suite 4/4: disk-full degrade+recover, slow-fsync
  lag+converge, both-slow quorum 503, asymmetric partition no-split-brain
- tidal-stress soak gates: --json-summary + --max-p99-ms/--max-error-pct/
  --fail-on-knee → non-zero exit on regression
- Woodpecker cron nightly flow (chaos + gated soak), event-routed, not GH Actions
- guarantee-traceability.md: roadmap §2 guarantees → named tests (closes G-C
  apparatus; 30-day-green is a calendar criterion)
2026-06-13 15:23:59 -06:00

20 lines
900 B
Rust

//! Shared tier-3 test support for the multi-process cluster suites (m8p10).
//!
//! `multiproc` is the [`MultiProcCluster`] harness: it spawns ONE OS process per
//! region (the gap `cluster_e2e.rs` documents but cannot close — that harness
//! ran every region inside a single process), wires their topology so siblings
//! peer over real gRPC + forward over real HTTP, and exposes the polling
//! primitives (`wait_converged_all`, `wait_leader_agreed`) every tier-3 UAT
//! scenario needs.
//!
//! Each integration-test file that wants the harness declares `mod support;` and
//! `use support::multiproc::…;`. The module is `#[allow(dead_code)]` because each
//! test file only exercises a subset of the surface (Rust warns on the unused
//! remainder per-file, even though the suite as a whole uses all of it).
#![allow(dead_code)]
pub mod invariants;
pub mod multiproc;
pub mod partition;