You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.8 KiB
68 lines
1.8 KiB
package kafka
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/mq/kafka/gateway"
|
|
"github.com/segmentio/kafka-go"
|
|
)
|
|
|
|
// TestKafkaGateway_APISequence logs all API requests that kafka-go makes
|
|
func TestKafkaGateway_APISequence(t *testing.T) {
|
|
// Start the gateway server
|
|
srv := gateway.NewServer(gateway.Options{
|
|
Listen: ":0",
|
|
UseSeaweedMQ: false,
|
|
})
|
|
|
|
if err := srv.Start(); err != nil {
|
|
t.Fatalf("Failed to start gateway: %v", err)
|
|
}
|
|
defer srv.Close()
|
|
|
|
brokerAddr := srv.Addr()
|
|
t.Logf("Gateway running on %s", brokerAddr)
|
|
|
|
// Pre-create topic
|
|
topicName := "api-sequence-topic"
|
|
handler := srv.GetHandler()
|
|
handler.AddTopicForTesting(topicName, 1)
|
|
|
|
// Create a writer and try to write a single message
|
|
writer := &kafka.Writer{
|
|
Addr: kafka.TCP(brokerAddr),
|
|
Topic: topicName,
|
|
WriteTimeout: 15 * time.Second,
|
|
ReadTimeout: 15 * time.Second,
|
|
// Enable ALL kafka-go logging to see internal validation issues
|
|
Logger: kafka.LoggerFunc(func(msg string, args ...interface{}) {
|
|
fmt.Printf("KAFKA-GO LOG: "+msg+"\n", args...)
|
|
}),
|
|
ErrorLogger: kafka.LoggerFunc(func(msg string, args ...interface{}) {
|
|
fmt.Printf("KAFKA-GO ERROR: "+msg+"\n", args...)
|
|
}),
|
|
}
|
|
defer writer.Close()
|
|
|
|
// Try to write a single message and log the full API sequence
|
|
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) // Longer timeout to see all connection attempts
|
|
defer cancel()
|
|
|
|
fmt.Printf("\n=== STARTING kafka-go WRITE ATTEMPT ===\n")
|
|
|
|
err := writer.WriteMessages(ctx, kafka.Message{
|
|
Key: []byte("test-key"),
|
|
Value: []byte("test-value"),
|
|
})
|
|
|
|
fmt.Printf("\n=== kafka-go WRITE COMPLETED ===\n")
|
|
|
|
if err != nil {
|
|
t.Logf("WriteMessages result: %v", err)
|
|
} else {
|
|
t.Logf("WriteMessages succeeded!")
|
|
}
|
|
}
|