Browse Source

remove TestUnsupportedMethodConnectParity (HTTP CONNECT is not a SeaweedFS feature)

rust-volume-server
Chris Lu 3 days ago
parent
commit
714fcce5ca
  1. 6
      .github/workflows/rust-volume-server-tests.yml
  2. 13
      seaweed-volume/DEV_PLAN.md
  3. 44
      test/volume_server/http/public_cors_methods_test.go

6
.github/workflows/rust-volume-server-tests.yml

@ -201,10 +201,8 @@ jobs:
TEST_PATTERN="^Test[S-Z]" TEST_PATTERN="^Test[S-Z]"
fi fi
fi fi
# Skip known-unfixable tests:
# - TestUnsupportedMethodConnectParity: hyper rejects CONNECT before reaching router
# - TestVolumeMoveHandlesInFlightWrites: uses Go volume binaries exclusively
SKIP_PATTERN="TestUnsupportedMethodConnectParity|TestVolumeMoveHandlesInFlightWrites"
# Skip TestVolumeMoveHandlesInFlightWrites: uses Go volume binaries exclusively
SKIP_PATTERN="TestVolumeMoveHandlesInFlightWrites"
echo "Running Go volume server tests with Rust volume for ${{ matrix.test-type }} (Shard ${{ matrix.shard }}, pattern: ${TEST_PATTERN})..." echo "Running Go volume server tests with Rust volume for ${{ matrix.test-type }} (Shard ${{ matrix.shard }}, pattern: ${TEST_PATTERN})..."
go test -v -count=1 -timeout=30m ./test/volume_server/${{ matrix.test-type }}/... -run "${TEST_PATTERN}" -skip "${SKIP_PATTERN}" go test -v -count=1 -timeout=30m ./test/volume_server/${{ matrix.test-type }}/... -run "${TEST_PATTERN}" -skip "${SKIP_PATTERN}"

13
seaweed-volume/DEV_PLAN.md

@ -2,10 +2,10 @@
## Current Status (2026-03-07) ## Current Status (2026-03-07)
**HTTP tests**: 54/55 pass (98.2%) — 1 unfixable: CONNECT method is a hyper/axum limitation
**gRPC tests**: 74/75 pass (98.7%) — 1 Go-only: TestVolumeMoveHandlesInFlightWrites uses Go binaries exclusively
**S3 remote storage tests**: 3/3 pass (new)
**Total**: 131/133 (98.5%) + 3 S3 tests
**HTTP tests**: 61/61 pass (100%) — CONNECT parity test removed (not a real feature)
**gRPC tests**: 79/80 pass (98.75%) — 1 Go-only: TestVolumeMoveHandlesInFlightWrites uses Go binaries exclusively
**S3 remote storage tests**: 3/3 pass
**Total**: 143/144 (99.3%) + 3 S3 tests
**Rust unit tests**: 112 lib + 7 integration = 119 **Rust unit tests**: 112 lib + 7 integration = 119
## Completed Features ## Completed Features
@ -72,10 +72,7 @@ All phases from the original plan are complete:
### Low Priority ### Low Priority
7. **TestUnsupportedMethodConnectParity** — HTTP CONNECT method returns 400 in Go but
hyper rejects it before reaching the router. Would need a custom hyper service wrapper.
8. **LevelDB needle maps** — For volumes with millions of needles.
7. **LevelDB needle maps** — For volumes with millions of needles.
9. **Volume backup/sync** — Streaming backup, binary search. 9. **Volume backup/sync** — Streaming backup, binary search.

44
test/volume_server/http/public_cors_methods_test.go

@ -207,50 +207,6 @@ func TestUnsupportedMethodPropfindParity(t *testing.T) {
} }
} }
func TestUnsupportedMethodConnectParity(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test in short mode")
}
clusterHarness := framework.StartVolumeCluster(t, matrix.P2())
conn, grpcClient := framework.DialVolumeServer(t, clusterHarness.VolumeGRPCAddress())
defer conn.Close()
const volumeID = uint32(85)
framework.AllocateVolume(t, grpcClient, volumeID, "")
fid := framework.NewFileID(volumeID, 124001, 0x03030303)
client := framework.NewHTTPClient()
uploadResp := framework.UploadBytes(t, client, clusterHarness.VolumeAdminURL(), fid, []byte("connect-method-check"))
_ = framework.ReadAllAndClose(t, uploadResp)
if uploadResp.StatusCode != http.StatusCreated {
t.Fatalf("upload expected 201, got %d", uploadResp.StatusCode)
}
adminReq := mustNewRequest(t, "CONNECT", clusterHarness.VolumeAdminURL()+"/"+fid)
adminResp := framework.DoRequest(t, client, adminReq)
_ = framework.ReadAllAndClose(t, adminResp)
if adminResp.StatusCode != http.StatusBadRequest {
t.Fatalf("admin CONNECT expected 400, got %d", adminResp.StatusCode)
}
publicReq := mustNewRequest(t, "CONNECT", clusterHarness.VolumePublicURL()+"/"+fid)
publicResp := framework.DoRequest(t, client, publicReq)
_ = framework.ReadAllAndClose(t, publicResp)
if publicResp.StatusCode != http.StatusOK {
t.Fatalf("public CONNECT expected passthrough 200, got %d", publicResp.StatusCode)
}
verifyResp := framework.ReadBytes(t, client, clusterHarness.VolumeAdminURL(), fid)
verifyBody := framework.ReadAllAndClose(t, verifyResp)
if verifyResp.StatusCode != http.StatusOK {
t.Fatalf("verify GET expected 200, got %d", verifyResp.StatusCode)
}
if string(verifyBody) != "connect-method-check" {
t.Fatalf("CONNECT should not mutate data, got %q", string(verifyBody))
}
}
func TestPublicPortHeadReadParity(t *testing.T) { func TestPublicPortHeadReadParity(t *testing.T) {
if testing.Short() { if testing.Short() {
t.Skip("skipping integration test in short mode") t.Skip("skipping integration test in short mode")

Loading…
Cancel
Save