* ci: bring previously-uncovered integration tests into CI (#9281 follow-up)
Six integration test packages had _test.go files but no GitHub workflow
running them. The s3-sse-tests CI gap that let #8908's UploadPartCopy bug
(and the four cross-SSE copy bugs in #9281) ship undetected was an
instance of this same pattern. This change wires three of them into CI
and removes a fourth that was deadcode:
test/multi_master/ NEW workflow: multi-master-tests.yml
- 3-node master raft cluster failover/recovery (5 tests, ~65s)
test/testutil/ (run alongside multi_master)
- port-allocator regression test
test/s3/etag/ NEW workflow: s3-etag-acl-tests.yml
- PutObject ETag format regression for #7768 (must be pure MD5 hex,
not "<md5>-N" composite, for AWS Java SDK v2 compatibility)
test/s3/acl/ (same workflow as etag)
- object-ACL behavior on versioned buckets
test/s3/catalog_trino/ DELETED (deadcode)
- Single-file copy of test/s3tables/catalog_trino/trino_catalog_test.go
from a 2024 commit that was never iterated, while the
test/s3tables/ counterpart has been actively maintained (and IS
in CI via s3-tables-tests.yml's trino-iceberg-catalog-tests job).
Both workflows trigger only on changes to relevant code paths and use the
existing simple "build weed → run go test" pattern (no per-test-dir
Makefile boilerplate). The S3 workflow starts a single `weed mini`
shared by etag and acl, which keeps the job under 2 minutes on a fresh
runner.
Two tests remain knowingly uncovered:
test/s3/basic/ — order-dependent state across tests (TestListObjectV2
expects a bucket created by an earlier test, etc.) and uses the
deprecated aws-sdk-go v1. Treated as sample programs, not a
regression suite. Fixing them is out of scope for this PR.
test/s3/catalog_trino/ — see "DELETED" above.
Verified locally:
- go test -v -timeout=8m ./test/multi_master/... ./test/testutil/...
PASS (5 multi_master + 1 testutil tests, 64s)
- weed mini + go test ./test/s3/etag/... + go test ./test/s3/acl/...
PASS (8 etag + 5 acl tests, ~6s after server startup)
* ci: fix log-collector glob for multi-master tests (review feedback on #9283)
test/multi_master/cluster.go creates per-test temp dirs via
os.MkdirTemp("", "seaweedfs_multi_master_it_"), so the glob has to
match that prefix. The previous version looked for MasterCluster* /
TestLeader* / TestTwoMasters* / TestAllMasters* which never matches —
the failure-artifact upload would have been empty on a real failure.
Switch the find to /tmp/seaweedfs_multi_master_it_* (maxdepth 1) so it
actually picks up the per-node master*.log files under
<baseDir>/logs/.
Found by coderabbitai review on PR #9283.