# 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: ```text 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: ```powershell 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: ```powershell $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-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.