mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-08 22:33:22 +00:00
ca1463a6c5
ci: run e2e smoke subset via nextest e2e-smoke profile (backlog#1149 ci-4) The e2e-tests job previously ran a single test (delete_marker_migration _semantics) out of ~400 in the e2e_test crate. Define a nextest profile.e2e-smoke whose default-filter selects 17 fast single-node dependency-free modules (63 tests) and run it in the job, reusing the downloaded debug binary. The profile is the single wiring mechanism for e2e tests in CI; admission criteria live in crates/e2e_test/README.md, and docs/testing/e2e-suite-inventory.md records authoritative per-module counts from cargo nextest list.
52 lines
2.2 KiB
Markdown
52 lines
2.2 KiB
Markdown
# e2e_test
|
||
|
||
End-to-end test suite for RustFS. Tests spawn a real `rustfs` binary (see
|
||
`src/common.rs`) and drive it with the AWS SDK.
|
||
|
||
> This README currently only documents the CI smoke subset (backlog#1149
|
||
> ci-4). The full contributor guide — how to add a case, fixture helpers,
|
||
> `#[ignore]` semantics, harness topologies — is tracked as backlog#1153
|
||
> infra-10 and will extend this file.
|
||
|
||
## CI smoke subset (`--profile e2e-smoke`)
|
||
|
||
A subset of this crate runs on every PR via the `e2e-tests` job:
|
||
|
||
```bash
|
||
cargo nextest run --profile e2e-smoke -p e2e_test
|
||
```
|
||
|
||
The selection lives in `.config/nextest.toml` under `[profile.e2e-smoke]`
|
||
(`default-filter`). That filter is the **single wiring mechanism** for e2e
|
||
tests in CI — extend it (or add a sibling profile) instead of adding new e2e
|
||
jobs to `ci.yml`.
|
||
|
||
### Admission criteria for the smoke subset
|
||
|
||
A test module may join the smoke filter only if every test in it is:
|
||
|
||
1. **Fast** — single-digit seconds per test; the whole subset must keep the
|
||
`e2e-tests` job ≤ 20 minutes.
|
||
2. **Single-node** — spawns its own server via
|
||
`RustFSTestEnvironment`/`start_rustfs_server` on a random port with an
|
||
isolated temp dir. No `RustFSTestClusterEnvironment`, no fixed ports.
|
||
3. **Dependency-free** — no pre-started server at `localhost:9000`, no Vault,
|
||
no fixed protocol ports. Tools that may be absent on the runner (e.g.
|
||
`awscurl`) are acceptable only when the test skips gracefully with a
|
||
visible log line (see `bucket_policy_check_test.rs`).
|
||
4. **Not `#[ignore]`** — ignored tests are activation work (backlog#1149
|
||
ci-13 / backlog#1148 ilm-3), not smoke candidates.
|
||
|
||
Note on `#[serial]`: nextest runs each test in its own process, so
|
||
`serial_test`'s in-process mutex does **not** serialize across tests there
|
||
(see the header of `.config/nextest.toml`). Smoke tests must therefore be
|
||
parallel-safe by construction (random port + isolated temp dir), which the
|
||
current subset is.
|
||
|
||
### Authoritative test inventory
|
||
|
||
`docs/testing/e2e-suite-inventory.md` records the per-module test counts as
|
||
listed by `cargo nextest list -p e2e_test`. Regenerate it when adding or
|
||
moving e2e tests so acceptance numbers in the test-strategy issues
|
||
(backlog#1147–#1155) stay auditable.
|