diff options
Diffstat (limited to 'test/kafka/unit')
| -rw-r--r-- | test/kafka/unit/gateway_test.go | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/test/kafka/unit/gateway_test.go b/test/kafka/unit/gateway_test.go new file mode 100644 index 000000000..7f6d076e0 --- /dev/null +++ b/test/kafka/unit/gateway_test.go @@ -0,0 +1,79 @@ +package unit + +import ( + "fmt" + "net" + "strings" + "testing" + "time" + + "github.com/seaweedfs/seaweedfs/test/kafka/internal/testutil" +) + +// TestGatewayBasicFunctionality tests basic gateway operations +func TestGatewayBasicFunctionality(t *testing.T) { + gateway := testutil.NewGatewayTestServer(t, testutil.GatewayOptions{}) + defer gateway.CleanupAndClose() + + addr := gateway.StartAndWait() + + // Give the gateway a bit more time to be fully ready + time.Sleep(200 * time.Millisecond) + + t.Run("AcceptsConnections", func(t *testing.T) { + testGatewayAcceptsConnections(t, addr) + }) + + t.Run("RefusesAfterClose", func(t *testing.T) { + testGatewayRefusesAfterClose(t, gateway) + }) +} + +func testGatewayAcceptsConnections(t *testing.T, addr string) { + // Test basic TCP connection to gateway + t.Logf("Testing connection to gateway at %s", addr) + + conn, err := net.DialTimeout("tcp", addr, 5*time.Second) + if err != nil { + t.Fatalf("Failed to connect to gateway: %v", err) + } + defer conn.Close() + + // Test that we can establish a connection and the gateway is listening + // We don't need to send a full Kafka request for this basic test + t.Logf("Successfully connected to gateway at %s", addr) + + // Optional: Test that we can write some data without error + testData := []byte("test") + conn.SetWriteDeadline(time.Now().Add(1 * time.Second)) + if _, err := conn.Write(testData); err != nil { + t.Logf("Write test failed (expected for basic connectivity test): %v", err) + } else { + t.Logf("Write test succeeded") + } +} + +func testGatewayRefusesAfterClose(t *testing.T, gateway *testutil.GatewayTestServer) { + // Get the address from the gateway's listener + host, port := gateway.GetListenerAddr() + addr := fmt.Sprintf("%s:%d", host, port) + + // Close the gateway + gateway.CleanupAndClose() + + t.Log("Testing that gateway refuses connections after close") + + // Attempt to connect - should fail + conn, err := net.DialTimeout("tcp", addr, 2*time.Second) + if err == nil { + conn.Close() + t.Fatal("Expected connection to fail after gateway close, but it succeeded") + } + + // Verify it's a connection refused error + if !strings.Contains(err.Error(), "connection refused") && !strings.Contains(err.Error(), "connect: connection refused") { + t.Logf("Connection failed as expected with error: %v", err) + } else { + t.Logf("Connection properly refused: %v", err) + } +} |
