mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-06 03:59:14 +00:00
9d10d69a6d
* test(odm): drive the migration cases from an env-named source The ODM e2e suite only ever migrates from the in-process fake source, so path-style addressing, region handling, ETag shape and list pagination on real implementations stay untested. OdmInteropEnv resolves the source from RUSTFS_ODM_INTEROP_*, seeding into a per-run source_prefix so a shared real bucket can host concurrent runs and every seeded key is removed afterwards. A named provider with a missing variable is an error, never a silent fallback to the fake source. interop_test holds the four cases that run against either source, and the e2e-odm-interop profile is the lane that selects them; e2e-full excludes them, so its committed selection is unchanged. wait_until_odm_engaged replaces the fake source's journal probe for the readiness wait, since a real source keeps no journal. * ci(odm): add the scheduled provider interop lane on-demand-migration-interop.yml runs the interop cases against a pinned MinIO container with a 5,000-object backfill - past the fake source's 4,096 version and journal caps - and the three-case minimum against AWS, R2 and GCS when their ODM_INTEROP_* secrets exist, skipping with a summary note when they do not. Each provider gets one JSON report merging the per-case entries with the nextest JUnit, which stays authoritative for what ran. Report-only and never required: it depends on third-party endpoints and on secrets a fork does not have.
41 lines
1.8 KiB
Rust
41 lines
1.8 KiB
Rust
// Copyright 2024 RustFS Team
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
//! On-demand migration (ODM) end-to-end suite (rustfs/backlog#2147).
|
|
//!
|
|
//! `common` is the shared environment: one RustFS under test, one programmable
|
|
//! fake S3 source, admin-API wrappers, seeding and local-state assertions.
|
|
//! `harness_self_test` proves the harness itself; `get_basic_test` covers the
|
|
//! GET read-through (rustfs/backlog#2156) and `backfill_test` the background
|
|
//! backfill job (ODM-12, rustfs/backlog#2159); `list_through_test` covers the
|
|
//! optional merged `ListObjectsV2` (ODM-17, rustfs/backlog#2164). The fault, concurrency,
|
|
//! interaction and real-source matrix is rustfs/backlog#2158; its lane split
|
|
//! lives in `.config/nextest.toml` (fault / concurrency / real source run
|
|
//! nightly, the rest in the merge lane). `interop_test` is the provider
|
|
//! interoperability lane (ODM-20, rustfs/backlog#2167): the same case bodies
|
|
//! against the fake source locally and against a real provider named by the
|
|
//! environment in `.github/workflows/on-demand-migration-interop.yml`.
|
|
|
|
pub mod common;
|
|
|
|
mod backfill_test;
|
|
mod concurrency_test;
|
|
mod fault_test;
|
|
mod get_basic_test;
|
|
mod harness_self_test;
|
|
mod interaction_test;
|
|
mod interop_test;
|
|
mod list_through_test;
|
|
mod real_source_test;
|