e3eeba4650
Phase 1 of resilience testing design doc implementation: - New musicfs-test-utils crate with FaultyOrigin, FaultyCasStore, fixtures - Failpoints instrumented in musicfs-cas/store.rs - 16 resilience tests (13 RED for missing features, 3 GREEN for existing) - 3 Docker/Toxiproxy network tests (RED until docker-compose up) - docker-compose.yml for Toxiproxy + MinIO + SFTP test infrastructure Tests properly fail-first (TDD): check_all() sequential, no health timeout, missing corruption detection, no passthrough mode, etc.
40 lines
1.2 KiB
TOML
40 lines
1.2 KiB
TOML
[package]
|
|
name = "musicfs-test-utils"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
description = "Test utilities and fixtures for MusicFS resilience testing"
|
|
|
|
[dependencies]
|
|
musicfs-core = { path = "../musicfs-core" }
|
|
musicfs-origins = { path = "../musicfs-origins" }
|
|
musicfs-cas = { path = "../musicfs-cas" }
|
|
musicfs-cache = { path = "../musicfs-cache" }
|
|
|
|
async-trait.workspace = true
|
|
tokio = { workspace = true, features = ["full", "sync", "time"] }
|
|
tracing.workspace = true
|
|
thiserror.workspace = true
|
|
parking_lot.workspace = true
|
|
tempfile.workspace = true
|
|
bytes.workspace = true
|
|
|
|
# Fault injection
|
|
fail = { version = "0.5", optional = true }
|
|
rlimit = { version = "0.10", optional = true }
|
|
nix = { version = "0.29", optional = true, features = ["signal", "process"] }
|
|
|
|
# Docker/network tests
|
|
noxious-client = { version = "1.0", optional = true }
|
|
reqwest = { version = "0.11", optional = true, default-features = false, features = ["rustls-tls"] }
|
|
|
|
[features]
|
|
default = []
|
|
failpoints = ["fail/failpoints"]
|
|
process-tests = ["nix"]
|
|
resource-limits = ["rlimit"]
|
|
docker-tests = ["noxious-client", "reqwest"]
|
|
full = ["failpoints", "process-tests", "resource-limits", "docker-tests"]
|
|
|
|
[dev-dependencies]
|
|
tokio-test = "0.4"
|