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  // }