aboutsummaryrefslogtreecommitdiff
path: root/test/kafka/unit/gateway_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/kafka/unit/gateway_test.go')
-rw-r--r--test/kafka/unit/gateway_test.go79
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)
+ }
+}