github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/publisher/kafka/main_test.go (about)

     1  package kafka
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"log"
     7  	"os"
     8  	"testing"
     9  
    10  	"gocloud.dev/pubsub"
    11  	_ "gocloud.dev/pubsub/kafkapubsub"
    12  	// "github.com/confluentinc/confluent-kafka
    13  	// internalKafka "github.com/angryronald/go-kit/test/docker/kafka"
    14  )
    15  
    16  var topicName = "CONTOH.TOPIC"
    17  
    18  func TestMain(m *testing.M) {
    19  	// ctx := context.Background()
    20  	os.Setenv("KAFKA_BROKERS", "localhost:9092")
    21  
    22  	// Not recommended to use due to kafka takes a while after spin up to be ready and it will be very vary
    23  	// internalKafka.StartKafka()
    24  	// defer internalKafka.StopKafka()
    25  
    26  	// Wait for Kafka to be fully initialized
    27  	// time.Sleep(10 * time.Second)
    28  
    29  	// createTopic(ctx)
    30  	// defer deleteTopic(ctx)
    31  
    32  	// time.Sleep(2 * time.Second)
    33  	code := m.Run()
    34  	os.Exit(code)
    35  }
    36  
    37  func createTopic(ctx context.Context) {
    38  	topic, err := pubsub.OpenTopic(ctx, fmt.Sprintf("kafka://localhost:9092/%s", topicName))
    39  	if err != nil {
    40  		log.Fatalf("Failed to open Kafka topic: %v", err)
    41  	}
    42  	defer topic.Shutdown(ctx)
    43  }
    44  
    45  func deleteTopic(ctx context.Context) {
    46  	// No need to delete topic as Kafka does not support topic deletion through the client API
    47  }
    48  
    49  func openSubscription(ctx context.Context) *pubsub.Subscription {
    50  	subscription, err := pubsub.OpenSubscription(ctx, fmt.Sprintf("kafka://localhost:9092/%s", topicName))
    51  	if err != nil {
    52  		log.Fatalf("Failed to open Kafka subscription: %v", err)
    53  	}
    54  	return subscription
    55  }
    56  
    57  func TestPubSub(t *testing.T) {
    58  	ctx := context.Background()
    59  
    60  	// Open the topic
    61  	createTopic(ctx)
    62  	defer deleteTopic(ctx)
    63  	// topic, err := pubsub.OpenTopic(ctx, fmt.Sprintf("kafka://localhost:9092/%s", topicName))
    64  	// if err != nil {
    65  	// 	t.Fatalf("Failed to open Kafka topic: %v", err)
    66  	// }
    67  	// defer topic.Shutdown(ctx)
    68  
    69  	// Open the subscription
    70  	subscription := openSubscription(ctx)
    71  	defer subscription.Shutdown(ctx)
    72  
    73  	// Your pub/sub test code goes here
    74  }