Files
rustfs/crates
Zhengchao An 96e5699568 test(ilm): self-managed lifecycle expiry e2e + backdated-mtime helper (backlog#1148 ilm-3) (#4710)
Convert the two reliant lifecycle expiry tests from #[ignore] + a hardcoded
localhost:9000 server to self-managed RustFSTestEnvironment tests (random port,
isolated temp dir) and wire them into the PR e2e-smoke subset.

Time control is chosen per test and documented in-module:
- test_lifecycle_expiry_backdated_mtime: mod_time back-dating via the internal
  source-replication backdoor (new put_object_with_backdated_mtime helper) so a
  Days=1 rule is already due, with RUSTFS_ILM_PROCESS_TIME=1 shrinking the
  rounding boundary. Asserts the backdated matching-prefix object expires and a
  non-matching-prefix object with the same backdating survives (isolates the
  prefix filter). Proves the backdoor does not trip the replication gate.
- test_lifecycle_versioned_current_version_expiry_creates_delete_marker:
  RUSTFS_ILM_DEBUG_DAY_SECS=2 (ilm-5) accelerates the day length; asserts a
  latest delete marker is created, the original data version is retained and
  still readable by version id.
- test_lifecycle_zero_day_expiry: Days=0 immediate expiry; matching object
  deleted, non-matching survives.

All three use RUSTFS_SCANNER_CYCLE=1 so the scanner runs every second; tests poll
for the terminal state instead of sleeping fixed wall-clock. Ignore count for
reliant/lifecycle.rs goes 2 -> 0.

CI wiring: added a distinct 'test(/^reliant::lifecycle::/)' clause to the
existing profile.e2e-smoke default-filter in .config/nextest.toml (the single
sanctioned e2e wiring mechanism per crates/e2e_test/README.md; no new e2e job).

Refs rustfs/backlog#1148 (ilm-3), rustfs/backlog#1155
2026-07-11 15:40:29 +00:00
..