mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 08:18:18 +00:00
cd51d66321
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.
45 lines
2.0 KiB
Markdown
45 lines
2.0 KiB
Markdown
# 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](AGENTS.md) — follow it. This file only adds
|
|
what Claude Code needs on top: commands and pointers.
|
|
|
|
## Commands
|
|
|
|
```bash
|
|
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 build` without `--load` keeps the image in
|
|
> the buildx cache only — `docker run` will use a stale local image. The
|
|
> Makefile already includes `--load`; if you suspect a stale binary, add
|
|
> `--no-cache` to the `buildx build` invocation 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](ARCHITECTURE.md)
|
|
- Migration guardrails & readiness contracts: [docs/architecture/](docs/architecture/README.md)
|
|
- 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](docs/testing/README.md)
|
|
- Tier/ILM transition debugging (xl.meta inspection, versionId tracing):
|
|
[docs/operations/tier-ilm-debugging.md](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](AGENTS.md) under
|
|
"Cross-Cutting Domain Invariants" — read them before touching metadata or
|
|
tiering code.
|