Browse Source

fix kafka tests

pull/7231/head
chrislu 2 months ago
parent
commit
30b21abab9
  1. 3
      test/kafka/api_sequence_test.go
  2. 9
      test/kafka/client_integration_test.go
  3. 6
      test/kafka/comprehensive_e2e_test.go
  4. 3
      test/kafka/consumer_test.go
  5. 9
      test/kafka/debug_connection_test.go
  6. 9
      test/kafka/persistent_offset_integration_test.go
  7. 3
      test/kafka/produce_consume_test.go
  8. 15
      test/kafka/raw_protocol_test.go
  9. 25
      test/kafka/seaweedmq_integration_test.go

3
test/kafka/api_sequence_test.go

@ -14,8 +14,7 @@ import (
func TestKafkaGateway_APISequence(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {

9
test/kafka/client_integration_test.go

@ -16,8 +16,7 @@ import (
func TestKafkaGoClient_BasicProduceConsume(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0", // Use random port
UseSeaweedMQ: false, // Use in-memory mode for testing
Listen: ":0", // Use random port
})
if err := srv.Start(); err != nil {
@ -83,8 +82,7 @@ func TestKafkaGoClient_BasicProduceConsume(t *testing.T) {
func TestKafkaGoClient_ConsumerGroups(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {
@ -137,8 +135,7 @@ func TestKafkaGoClient_MultiplePartitions(t *testing.T) {
func TestKafkaGoClient_OffsetManagement(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {

6
test/kafka/comprehensive_e2e_test.go

@ -16,8 +16,7 @@ import (
func TestComprehensiveE2E(t *testing.T) {
// Start gateway
gatewayServer := gateway.NewServer(gateway.Options{
Listen: "127.0.0.1:0",
UseSeaweedMQ: false, // Use in-memory mode for testing
Listen: "127.0.0.1:0",
})
go func() {
@ -359,8 +358,7 @@ func testSaramaToKafkaGo(t *testing.T, addr, topic string) {
func TestOffsetManagement(t *testing.T) {
// Start gateway
gatewayServer := gateway.NewServer(gateway.Options{
Listen: "127.0.0.1:0",
UseSeaweedMQ: false,
Listen: "127.0.0.1:0",
})
go func() {

3
test/kafka/consumer_test.go

@ -14,8 +14,7 @@ import (
func TestKafkaGoReader(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {

9
test/kafka/debug_connection_test.go

@ -13,8 +13,7 @@ import (
func TestGateway_BasicConnection(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {
@ -39,8 +38,7 @@ func TestGateway_BasicConnection(t *testing.T) {
func TestGateway_ApiVersionsRequest(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {
@ -141,8 +139,7 @@ func TestGateway_ApiVersionsRequest(t *testing.T) {
func TestGateway_CreateTopicsRequest(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {

9
test/kafka/persistent_offset_integration_test.go

@ -39,15 +39,13 @@ func TestPersistentOffsetIntegration(t *testing.T) {
func testOffsetPersistenceAndRecovery(t *testing.T, brokers []string) {
// Create offset storage
storage, err := offset.NewSeaweedMQStorage(brokers)
require.NoError(t, err)
storage := offset.NewSeaweedMQStorage()
defer storage.Close()
topicPartition := "test-persistence-topic-0"
// Create first ledger and add some entries
ledger1, err := offset.NewPersistentLedger(topicPartition, storage)
require.NoError(t, err)
ledger1 := offset.NewPersistentLedger(topicPartition, storage)
// Add test entries
testEntries := []struct {
@ -77,8 +75,7 @@ func testOffsetPersistenceAndRecovery(t *testing.T, brokers []string) {
time.Sleep(2 * time.Second)
// Create second ledger (simulating restart)
ledger2, err := offset.NewPersistentLedger(topicPartition, storage)
require.NoError(t, err)
ledger2 := offset.NewPersistentLedger(topicPartition, storage)
// Verify recovered state
assert.Equal(t, ledger1.GetHighWaterMark(), ledger2.GetHighWaterMark())

3
test/kafka/produce_consume_test.go

@ -15,8 +15,7 @@ import (
func TestKafkaGoClient_DirectProduceConsume(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {

15
test/kafka/raw_protocol_test.go

@ -13,8 +13,7 @@ import (
func TestRawProduceRequest(t *testing.T) {
// Start the gateway server
srv := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
if err := srv.Start(); err != nil {
@ -247,12 +246,12 @@ func buildSimpleRecordSet(key, value string) []byte {
// Record batch header (simplified v0 format)
record = append(record, 0, 0, 0, 0, 0, 0, 0, 0) // base offset
record = append(record, 0, 0, 0, 30) // batch length (estimated)
record = append(record, 0, 0, 0, 0) // partition leader epoch
record = append(record, 0) // magic byte (v0)
record = append(record, 0, 0, 0, 0) // CRC32 (simplified)
record = append(record, 0, 0) // attributes
record = append(record, 0, 0, 0, 1) // record count = 1
record = append(record, 0, 0, 0, 30) // batch length (estimated)
record = append(record, 0, 0, 0, 0) // partition leader epoch
record = append(record, 0) // magic byte (v0)
record = append(record, 0, 0, 0, 0) // CRC32 (simplified)
record = append(record, 0, 0) // attributes
record = append(record, 0, 0, 0, 1) // record count = 1
// Simple record: key_length + key + value_length + value
keyBytes := []byte(key)

25
test/kafka/seaweedmq_integration_test.go

@ -14,14 +14,9 @@ func TestSeaweedMQIntegration_E2E(t *testing.T) {
// Skip by default - requires real SeaweedMQ setup
t.Skip("Integration test requires real SeaweedMQ setup - run manually")
// Test configuration
agentAddress := "localhost:17777" // Default SeaweedMQ Agent address
// Start the gateway with SeaweedMQ backend
gatewayServer := gateway.NewServer(gateway.Options{
Listen: ":0", // random port
AgentAddress: agentAddress,
UseSeaweedMQ: true,
Listen: ":0", // random port
})
err := gatewayServer.Start()
@ -241,8 +236,7 @@ func TestSeaweedMQGateway_ModeSelection(t *testing.T) {
// Test in-memory mode (should always work)
t.Run("InMemoryMode", func(t *testing.T) {
server := gateway.NewServer(gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
})
err := server.Start()
@ -262,9 +256,7 @@ func TestSeaweedMQGateway_ModeSelection(t *testing.T) {
// Test SeaweedMQ mode with invalid agent (should fall back)
t.Run("SeaweedMQModeFallback", func(t *testing.T) {
server := gateway.NewServer(gateway.Options{
Listen: ":0",
AgentAddress: "invalid:99999", // Invalid address
UseSeaweedMQ: true,
Listen: ":0",
})
err := server.Start()
@ -292,26 +284,21 @@ func TestSeaweedMQGateway_ConfigValidation(t *testing.T) {
{
name: "ValidInMemory",
options: gateway.Options{
Listen: ":0",
UseSeaweedMQ: false,
Listen: ":0",
},
shouldWork: true,
},
{
name: "ValidSeaweedMQWithAgent",
options: gateway.Options{
Listen: ":0",
AgentAddress: "localhost:17777",
UseSeaweedMQ: true,
Listen: ":0",
},
shouldWork: true, // May fail if no agent, but config is valid
},
{
name: "SeaweedMQWithoutAgent",
options: gateway.Options{
Listen: ":0",
UseSeaweedMQ: true,
// AgentAddress is empty
Listen: ":0",
},
shouldWork: true, // Should fall back to in-memory
},

Loading…
Cancel
Save