mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 16:28:15 +00:00
aabda41ae5
* build: upgrade Rust baseline to 1.96.0 * ci: pin Rust workflows to 1.96.0 * remove * ci: pin setup action to Rust 1.96.0 * build: pin toolchain to Rust 1.96.0
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.96.0 test -p rustfs-rio-v2 --test minio_generated_fixtures -- --ignored
Scope
The current fixture test covers the full default capture matrix:
sse-s3-singlepart-64ksse-s3-multipart-8msse-kms-singlepart-64ksse-kms-multipart-8msse-c-singlepart-64ksse-c-multipart-8m
It checks that:
- raw
xl.metacan be parsed throughrustfs-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
HEADresponses round-trip the expected customer algorithm and customer-key MD5
These tests do not yet validate full plaintext reconstruction from MinIO-written encrypted data.