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 }