- 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)
20 lines
900 B
Rust
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;
|