From 714fcce5cad5d235f6f24546084b29b46d32ea88 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sat, 7 Mar 2026 12:38:34 -0800 Subject: [PATCH] remove TestUnsupportedMethodConnectParity (HTTP CONNECT is not a SeaweedFS feature) --- .../workflows/rust-volume-server-tests.yml | 6 +-- seaweed-volume/DEV_PLAN.md | 13 +++--- .../http/public_cors_methods_test.go | 44 ------------------- 3 files changed, 7 insertions(+), 56 deletions(-) diff --git a/.github/workflows/rust-volume-server-tests.yml b/.github/workflows/rust-volume-server-tests.yml index 7860659d3..0092aed46 100644 --- a/.github/workflows/rust-volume-server-tests.yml +++ b/.github/workflows/rust-volume-server-tests.yml @@ -201,10 +201,8 @@ jobs: TEST_PATTERN="^Test[S-Z]" 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})..." go test -v -count=1 -timeout=30m ./test/volume_server/${{ matrix.test-type }}/... -run "${TEST_PATTERN}" -skip "${SKIP_PATTERN}" diff --git a/seaweed-volume/DEV_PLAN.md b/seaweed-volume/DEV_PLAN.md index f54872c52..86b653af3 100644 --- a/seaweed-volume/DEV_PLAN.md +++ b/seaweed-volume/DEV_PLAN.md @@ -2,10 +2,10 @@ ## 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 ## Completed Features @@ -72,10 +72,7 @@ All phases from the original plan are complete: ### 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. diff --git a/test/volume_server/http/public_cors_methods_test.go b/test/volume_server/http/public_cors_methods_test.go index b28c23ddb..df98d3454 100644 --- a/test/volume_server/http/public_cors_methods_test.go +++ b/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) { if testing.Short() { t.Skip("skipping integration test in short mode")