mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-24 05:06:28 +00:00
ci(s3-tests): add mint workflow, multi-node sweep, and API coverage tool (#4206)
Follow-ups to the compatibility harness rework: - Weekly full sweep now runs as a matrix over both topologies: single node and the 4-node distributed cluster. Manual dispatch keeps the test-mode input. - New mint workflow (weekly + dispatch) runs MinIO Mint against RustFS: functional suites of real client SDKs and tools (awscli, mc, aws-sdk-*, minio-*, s3cmd, ...), catching client-specific signing and streaming edge cases that boto3-only ceph/s3-tests cannot. Report-only for test failures with a per-suite summary table; fails only when mint produces no results. - New scripts/s3-tests/api_coverage.py quantifies API surface coverage by diffing the s3s S3 trait (at the Cargo.toml pinned revision) against the methods overridden in impl S3 for FS, distinguishing NotImplemented defaults from delegating defaults (e.g. post_object). Current state: 76/101 operations covered (75 overridden, 1 delegated). Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -457,6 +457,30 @@ Keeping both workflows on this script means local runs, the PR gate, and the
|
||||
scheduled sweep always execute tests the same way (same pinned s3-tests
|
||||
revision, same config template, same user provisioning).
|
||||
|
||||
A third workflow, **mint** (`.github/workflows/mint.yml`), complements ceph
|
||||
s3-tests with MinIO Mint: the functional suites of many real client SDKs and
|
||||
tools (awscli, mc, aws-sdk-java/go/php/ruby, minio-go/java/js/py, s3cmd, ...).
|
||||
It runs weekly, is report-only for test failures, and publishes a per-suite
|
||||
pass/fail table in the job summary.
|
||||
|
||||
## Companion Tools
|
||||
|
||||
- `report_compat.py` — diffs a junit.xml result against the classification
|
||||
lists; run automatically at the end of `run.sh`, and used by the weekly
|
||||
sweep to gate on whitelist regressions only (`--fail-on-regression`).
|
||||
- `api_coverage.py` — quantifies S3 API surface coverage by comparing the
|
||||
s3s `S3` trait (at the revision pinned in Cargo.toml) against the methods
|
||||
RustFS overrides in `impl S3 for FS`:
|
||||
|
||||
```bash
|
||||
python3 scripts/s3-tests/api_coverage.py # summary + missing ops
|
||||
python3 scripts/s3-tests/api_coverage.py --output api-coverage.md
|
||||
```
|
||||
|
||||
- `compare_dual_targets.py` — sends one signed S3 request to two endpoints
|
||||
(e.g. RustFS and MinIO) and diffs status, headers, and body; useful when
|
||||
triaging a behavioral difference found by the suites above.
|
||||
|
||||
## See Also
|
||||
|
||||
- [GitHub Actions Workflow](../../.github/workflows/e2e-s3tests.yml)
|
||||
|
||||
Reference in New Issue
Block a user