[PR #285] [MERGED] fix(test): pull MinIO test image from quay.io #317

Closed
opened 2026-10-29 14:22:08 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/kvcache-ai/AgentENV/pull/285
Author: @huajq
Created: 9/14/2026
Status: ✅ Merged
Merged: 9/14/2026
Merged by: @yingdi-shan

Base: main ← Head: fix/minio-test-image


📝 Commits (1)

  • e5a7328 fix(test): restore MinIO-backed OSS test containers

📊 Changes

3 files changed (+18 additions, -15 deletions)

View changed files

📝 Cargo.lock (+0 -10)
📝 crates/test-support/Cargo.toml (+0 -1)
📝 crates/test-support/src/minio.rs (+18 -4)

📄 Description

What

Fix the shared MinIO test fixture (MinioFixture::start() in
crates/test-support/src/minio.rs) so MinIO-backed OSS tests can start and use
a container again:

  • pull the image from quay.io/minio/minio with a pinned release tag;
  • wait for the startup banner on stderr instead of stdout;
  • set the root credentials explicitly.

Why

The minio/minio repository was removed from Docker Hub entirely, and the
testcontainers-modules 0.11 MinIO module pins
minio/minio:RELEASE.2022-02-07T08-17-33Z, which no longer resolves, so every
MinIO-backed OSS test fails to pull its container. A second incompatibility
surfaces once the image source is fixed: current MinIO images print the
startup banner (including the API: line the module's readiness probe
matches) to stderr, so the module's stdout wait never fires and every
container startup times out.

All affected tests share this single fixture
(storage/overlaybd/tests/oss_backend_minio.rs,
crates/e2e-tests/tests/snapshot_oss_e2e_test.rs), so one change unblocks both
suites.

No linked issue.

Scope and non-goals

Includes only the test fixture. Switching to a different S3-compatible
container (e.g. s3mock, rustfs) was considered and intentionally excluded:
keeping real MinIO preserves multipart/range/credential behavior fidelity with
a minimal diff. No production code changes.

Design and behavior changes

  • Replace the testcontainers-modules MinIO module with a GenericImage
    (image/tag, env, cmd, readiness probe all explicit) and drop the now-unused
    testcontainers-modules dependency.
  • Pin quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z (verified as a
    multi-arch manifest list on quay.io) instead of latest for deterministic
    tests.
  • Readiness probe: message_on_stderr("API:"), matching the current image's
    log behavior; tag is pinned so the match is deterministic.
  • Set MINIO_ROOT_USER/MINIO_ROOT_PASSWORD explicitly to the same
    minioadmin/minioadmin values the fixture already uses for its S3 client;
    current MinIO images no longer default these credentials.

Compatibility and operations

  • Public API or generated protocol: N/A (test-only change).
  • Configuration or defaults: N/A.
  • Snapshot manifest, artifact layout, or storage format: N/A.
  • Upgrade and rollback: N/A.
  • Host requirements, permissions, ports, or dependencies: test runs now pull
    the container from quay.io instead of Docker Hub; hosts running these suites
    need outbound access to quay.io. As before, MinIO rejects writes with
    XMinioStorageFull when the host drive holding its data directory is nearly
    full, so hosts need some free disk headroom; this is pre-existing MinIO
    behavior, unchanged by this PR.

Validation

  • make fmt
  • make clippy
  • make test-unit
  • Relevant Rust integration tests
  • make -C services test (required when services/ changes)
  • Generated clients/server regenerated with the documented make target
  • Documentation updated
  • Benchmarks or performance comparison completed

Commands and results (Linux host with Docker):

make fmt
  PASS
cargo clippy -p agentenv-test-support --all-targets -- -D warnings
  PASS
cargo test -p overlaybd --test oss_backend_minio -- --ignored
  7 passed; 0 failed
cargo test -p agentenv-e2e-tests --test snapshot_oss_e2e_test -- --ignored
  5 passed; 0 failed

Skipped checks and reasons:

Workspace-wide make clippy and make test-unit were not run; the change is
confined to one test-support file and passed targeted clippy and the workspace
format check. No services/ or generated-code changes, and documentation
generically refers to "Docker/MinIO-backed" tests, so no doc update was needed.

Risks and reviewer notes

Test-only; no runtime risk. If CI or developer machines cannot reach quay.io,
container pulls will fail the same way they do now with Docker Hub; mirroring
the image into an internal registry would be a follow-up ops decision rather
than part of this fix.

Checklist

  • The PR contains one coherent change and no unrelated formatting or refactoring.
  • New behavior is covered by tests, or I explained why testing is impractical.
  • Logs and examples contain no credentials, tokens, or private registry
    information. (minioadmin/minioadmin are MinIO's public well-known local
    test defaults.)
  • I did not manually edit generated code without updating its source and regenerating it.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/kvcache-ai/AgentENV/pull/285 **Author:** [@huajq](https://github.com/huajq) **Created:** 9/14/2026 **Status:** ✅ Merged **Merged:** 9/14/2026 **Merged by:** [@yingdi-shan](https://github.com/yingdi-shan) **Base:** `main` ← **Head:** `fix/minio-test-image` --- ### 📝 Commits (1) - [`e5a7328`](https://github.com/kvcache-ai/AgentENV/commit/e5a732855726cf16352080a4c87872df4bb2e40b) fix(test): restore MinIO-backed OSS test containers ### 📊 Changes **3 files changed** (+18 additions, -15 deletions) <details> <summary>View changed files</summary> 📝 `Cargo.lock` (+0 -10) 📝 `crates/test-support/Cargo.toml` (+0 -1) 📝 `crates/test-support/src/minio.rs` (+18 -4) </details> ### 📄 Description ## What Fix the shared MinIO test fixture (`MinioFixture::start()` in `crates/test-support/src/minio.rs`) so MinIO-backed OSS tests can start and use a container again: - pull the image from `quay.io/minio/minio` with a pinned release tag; - wait for the startup banner on **stderr** instead of stdout; - set the root credentials explicitly. ## Why The `minio/minio` repository was removed from Docker Hub entirely, and the testcontainers-modules 0.11 MinIO module pins `minio/minio:RELEASE.2022-02-07T08-17-33Z`, which no longer resolves, so every MinIO-backed OSS test fails to pull its container. A second incompatibility surfaces once the image source is fixed: current MinIO images print the startup banner (including the `API:` line the module's readiness probe matches) to **stderr**, so the module's stdout wait never fires and every container startup times out. All affected tests share this single fixture (`storage/overlaybd/tests/oss_backend_minio.rs`, `crates/e2e-tests/tests/snapshot_oss_e2e_test.rs`), so one change unblocks both suites. ## Related issue No linked issue. ## Scope and non-goals Includes only the test fixture. Switching to a different S3-compatible container (e.g. s3mock, rustfs) was considered and intentionally excluded: keeping real MinIO preserves multipart/range/credential behavior fidelity with a minimal diff. No production code changes. ## Design and behavior changes - Replace the `testcontainers-modules` MinIO module with a `GenericImage` (image/tag, env, cmd, readiness probe all explicit) and drop the now-unused `testcontainers-modules` dependency. - Pin `quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z` (verified as a multi-arch manifest list on quay.io) instead of `latest` for deterministic tests. - Readiness probe: `message_on_stderr("API:")`, matching the current image's log behavior; tag is pinned so the match is deterministic. - Set `MINIO_ROOT_USER`/`MINIO_ROOT_PASSWORD` explicitly to the same minioadmin/minioadmin values the fixture already uses for its S3 client; current MinIO images no longer default these credentials. ## Compatibility and operations - Public API or generated protocol: N/A (test-only change). - Configuration or defaults: N/A. - Snapshot manifest, artifact layout, or storage format: N/A. - Upgrade and rollback: N/A. - Host requirements, permissions, ports, or dependencies: test runs now pull the container from quay.io instead of Docker Hub; hosts running these suites need outbound access to quay.io. As before, MinIO rejects writes with `XMinioStorageFull` when the host drive holding its data directory is nearly full, so hosts need some free disk headroom; this is pre-existing MinIO behavior, unchanged by this PR. ## Validation - [x] `make fmt` - [ ] `make clippy` - [ ] `make test-unit` - [x] Relevant Rust integration tests - [ ] `make -C services test` (required when `services/` changes) - [ ] Generated clients/server regenerated with the documented `make` target - [ ] Documentation updated - [ ] Benchmarks or performance comparison completed Commands and results (Linux host with Docker): ```text make fmt PASS cargo clippy -p agentenv-test-support --all-targets -- -D warnings PASS cargo test -p overlaybd --test oss_backend_minio -- --ignored 7 passed; 0 failed cargo test -p agentenv-e2e-tests --test snapshot_oss_e2e_test -- --ignored 5 passed; 0 failed ``` Skipped checks and reasons: Workspace-wide `make clippy` and `make test-unit` were not run; the change is confined to one test-support file and passed targeted clippy and the workspace format check. No `services/` or generated-code changes, and documentation generically refers to "Docker/MinIO-backed" tests, so no doc update was needed. ## Risks and reviewer notes Test-only; no runtime risk. If CI or developer machines cannot reach quay.io, container pulls will fail the same way they do now with Docker Hub; mirroring the image into an internal registry would be a follow-up ops decision rather than part of this fix. ## Checklist - [x] The PR contains one coherent change and no unrelated formatting or refactoring. - [x] New behavior is covered by tests, or I explained why testing is impractical. - [x] Logs and examples contain no credentials, tokens, or private registry information. (minioadmin/minioadmin are MinIO's public well-known local test defaults.) - [x] I did not manually edit generated code without updating its source and regenerating it. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-29 14:22:08 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/AgentENV#317
No description provided.