docs(testing): populate testing pyramid, naming, serial/nextest rules Fill the docs/testing/README.md skeleton (backlog#1153 infra-11): - Test taxonomy table for all eight layers (unit / ecstore black-box / e2e / s3s-e2e / S3 compatibility / chaos / fuzz / bench) with a verified entry command and a qualitative "when it runs" per layer; the event x timeout x required-status matrix stays owned by docs/testing/ci-gates.md (ci-15), linked not duplicated. - Naming conventions section with the migration-gate reserved substrings (data_movement / rebalance / decommission / source_cleanup / delete_marker) linking the infra-12 count-floor guard, closing that task's docs cross-link. - Serial execution & nextest rules: nextest as a hard dependency with the RUSTFS_ALLOW_CARGO_TEST_FALLBACK escape hatch and the runner-semantics difference (folds the infra-14 README half), why #[serial] is a no-op under nextest, and the default/ci/e2e-smoke/e2e-repl-nightly profiles. - A time-control placeholder for infra-4 to fill. The pre-existing flake-policy section (ci-10) is preserved verbatim. Add pointers from CLAUDE.md and CONTRIBUTING.md.
2.0 KiB
RustFS — CLAUDE.md
S3-compatible object store in Rust, derived from MinIO. Erasure-coded, multi-pool, supports ILM tiering/lifecycle.
Agent rules (change style, verification, PR conventions, scoped per-crate guidance) live in AGENTS.md — follow it. This file only adds what Claude Code needs on top: commands and pointers.
Commands
cargo build --release --bin rustfs # production binary
cargo check -p <crate> # fast type-check one crate
cargo test -p <crate> # test one crate
cargo fmt --all # format (required before PR)
make pre-commit # fast gate: fmt + arch checks + quick-check (NO clippy/tests)
make pre-pr # full pre-PR gate: fmt + arch checks + clippy + tests
make build-docker BUILD_OS=ubuntu22.04
Docker build note:
buildx buildwithout--loadkeeps the image in the buildx cache only —docker runwill use a stale local image. The Makefile already includes--load; if you suspect a stale binary, add--no-cacheto thebuildx buildinvocation inside.config/make/build-docker.mak.
Where to look (do not duplicate here)
- Crate membership:
Cargo.toml[workspace].members - Architecture, layering, crate map: ARCHITECTURE.md
- Migration guardrails & readiness contracts: docs/architecture/
- CI gates:
.github/workflows/ci.yml(source of truth; never copy its steps into docs) - Test-layer taxonomy, per-layer entry commands, serial/nextest rules, flake policy: docs/testing/README.md
- Tier/ILM transition debugging (xl.meta inspection, versionId tracing): docs/operations/tier-ilm-debugging.md
Domain conventions worth knowing up front
Repo-wide domain invariants (dual internal metadata keys, defensive UUID reads, unversioned tier buckets) live in AGENTS.md under "Cross-Cutting Domain Invariants" — read them before touching metadata or tiering code.