mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-16 01:48:21 +00:00
ci: run e2e smoke subset via nextest e2e-smoke profile (#4674)
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.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# 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.
|
||||
|
||||
Reference in New Issue
Block a user