Files
rustfs/crates/rio-v2/tests
cxymds e11fcfbd08 fix(rebalance): converge multipart data movement retries (#6057)
* fix(rebalance): converge multipart data movement retries

* fix(rebalance): harden multipart retry replacement

* fix(rebalance): isolate internal multipart uploads

* test(ecstore): adapt metadata mutation fixtures

* fix(rebalance): preserve transition metadata semantics

* refactor(ecstore): reuse internal metadata matcher

* Revert "refactor(ecstore): reuse internal metadata matcher"

This reverts commit c87ca0328f.

* refactor(rebalance): reuse data movement log constants

* fix(rebalance): isolate migration-owned state

* fix(rebalance): preserve pre-gate retry compatibility
2026-08-13 06:12:26 +00:00
..

rio-v2 Fixture Tests

This directory holds interoperability tests for rustfs-rio-v2.

Generated MinIO fixtures

The integration test minio_generated_fixtures.rs reads raw MinIO backend data generated by crates/rio-v2/tests/minio_fixture_lab/lab.py.

Default fixture root:

crates/rio-v2/tests/fixtures/minio-generated

The generated MinIO fixture data is intentionally not checked in and these tests are ignored by default, so they are not part of automated CI runs.

To generate or expand fixtures locally, use:

uv run python .\minio_fixture_lab\lab.py capture-matrix `
  --root .\rustfs\crates\rio-v2\tests\fixtures\minio-generated `
  --minio-binary .\rustfs\tmp\minio.darwin-arm64.RELEASE.2025-09-07T16-13-09Z `
  --endpoint https://127.0.0.1:19000 `
  --disk-count 1

Or point the tests at another generated root:

$env:RUSTFS_MINIO_FIXTURE_ROOT = '.\rustfs\tmp\minio-fixture-lab-smoke'
cargo +1.97.1 test -p rustfs-rio-v2 --test minio_generated_fixtures -- --ignored

Scope

The current fixture test covers the full default capture matrix:

  • sse-s3-singlepart-64k
  • sse-s3-multipart-8m
  • sse-kms-singlepart-64k
  • sse-kms-multipart-8m
  • sse-c-singlepart-64k
  • sse-c-multipart-8m

It checks that:

  • raw xl.meta can be parsed through rustfs-filemeta
  • singlepart and multipart fixture structures are recognized
  • SSE-S3, SSE-KMS, and SSE-C metadata markers survive capture
  • KMS key ids are derived from each fixture's own manifest.json, so local static-KMS runs are not tied to one hard-coded key name
  • SSE-C HEAD responses round-trip the expected customer algorithm and customer-key MD5

These tests do not yet validate full plaintext reconstruction from MinIO-written encrypted data.