github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/test/docker/kafka/kafka.sample.go (about) 1 package kafka 2 3 // uncomment to test this - [Not Working] 4 5 // package main 6 7 // import ( 8 // "context" 9 // "fmt" 10 // "log" 11 // "time" 12 // 13 // 14 // 15 // 16 // 17 18 // "github.com/ory/dockertest/v3" 19 // "github.com/segmentio/kafka-go" 20 // ) 21 22 // func main() { 23 // // Create a new pool for managing Docker containers. 24 // pool, err := dockertest.NewPool("") 25 // if err != nil { 26 // log.Fatalf("Could not connect to Docker: %s", err) 27 // } 28 29 // // availablePort := internalDocker.GetAvailablePort(9092) 30 31 // // defer pool.PurgeAll() 32 // // Set up options for MongoDB container 33 // options := &dockertest.RunOptions{ 34 // Repository: "wurstmeister/kafka", 35 // Tag: "latest", 36 // Env: []string{ 37 // "KAFKA_ADVERTISED_HOST_NAME=localhost", 38 // "KAFKA_AUTO_CREATE_TOPICS=true", 39 // }, 40 // // []string{ 41 // // "KAFKA_ADVERTISED_HOST_NAME=localhost", // Advertise to localhost 42 // // "KAFKA_ADVERTISED_PORT=" + availablePort, 43 // // "KAFKA_LISTENERS=PLAINTEXT://:9092", // Listen on all network interfaces 44 // // }, 45 // // []string{ 46 // // "KAFKA_ADVERTISED_HOST_NAME=127.0.0.1", 47 // // }, 48 // // PortBindings: map[docker.Port][]docker.PortBinding{ 49 // // "9092": { 50 // // {HostIP: "0.0.0.0", HostPort: availablePort}, 51 // // }, 52 // // }, 53 // } 54 55 // // Run kafka container 56 // kafkaResource, err := pool.RunWithOptions(options) 57 // if err != nil { 58 // log.Fatalf("Could not start kafka container: %s", err) 59 // } 60 61 // // // Start a Kafka container using the official Kafka Docker image. 62 // // kafkaResource, err := pool.Run("wurstmeister/kafka", "latest", []string{"KAFKA_ADVERTISED_HOST_NAME=127.0.0.1"}) 63 // // if err != nil { 64 // // log.Fatalf("Could not start Kafka container: %s", err) 65 // // } 66 // defer pool.Purge(kafkaResource) 67 68 // // Wait for Kafka to become available. 69 // if err := pool.Retry(func() error { 70 // // brokers := []string{kafkaResource.GetBoundIP("9092")} 71 // // conn, err := kafka.DialContext(context.Background(), "tcp", brokers[0]) 72 // // if err != nil { 73 // // return err 74 // // } 75 // // brokerAddr := fmt.Sprintf("127.0.0.1:%s", availablePort) 76 // // conn, err := kafka.DialContext(context.Background(), "tcp", brokerAddr) 77 // // if err != nil { 78 // // return err 79 // // } 80 // brokerAddr := fmt.Sprintf("%s:9092", kafkaResource.Container.NetworkSettings.IPAddress) 81 // conn, err := kafka.DialContext(context.Background(), "tcp", brokerAddr) 82 // if err != nil { 83 // return err 84 // } 85 // conn.Close() 86 // return nil 87 // }); err != nil { 88 // log.Fatalf("Could not connect to Kafka: %s", err) 89 // } 90 91 // // Now you can interact with Kafka. 92 // // For example, you can use the "github.com/segmentio/kafka-go" package to produce and consume messages. 93 94 // // Your Kafka integration test code here... 95 // // Kafka is ready, you can interact with it using the "github.com/segmentio/kafka-go" package or other Kafka clients. 96 // fmt.Println("Kafka is up and running!") 97 98 // // You can now run your Kafka integration tests or code that depends on Kafka. 99 // // ... 100 101 // // Sleep to keep the Kafka container running for testing purposes. 102 // time.Sleep(5 * time.Minute) 103 // }