github.com/aiven/aiven-go-client@v1.36.0/kafka_topic_acc_test.go (about) 1 package aiven 2 3 import ( 4 "math/rand" 5 "os" 6 "strconv" 7 "time" 8 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 ) 12 13 var _ = Describe("Kafka Topic", func() { 14 var ( 15 projectName string 16 project *Project 17 err error 18 ) 19 20 Context("Kafka Topic CRUD", func() { 21 It("should not error", func() { 22 projectName = os.Getenv("AIVEN_PROJECT_NAME") 23 project, err = client.Projects.Get(projectName) 24 25 Expect(err).NotTo(HaveOccurred()) 26 }) 27 28 It("should populate fields properly", func() { 29 Expect(project).NotTo(BeNil()) 30 31 if project != nil { 32 Expect(project.Name).NotTo(BeEmpty()) 33 } 34 }) 35 36 // kafka service 37 var ( 38 serviceName string 39 service *Service 40 errS error 41 ) 42 43 It("creating service", func() { 44 serviceName = "test-acc-kafka-topic-sr-" + strconv.Itoa(rand.Int()) 45 service, errS = client.Services.Create(projectName, CreateServiceRequest{ 46 Cloud: "google-europe-west1", 47 Plan: "business-4", 48 ProjectVPCID: nil, 49 ServiceName: serviceName, 50 ServiceType: "kafka", 51 }) 52 }) 53 54 It("should not error", func() { 55 Expect(errS).NotTo(HaveOccurred()) 56 }) 57 58 It("should populate fields properly", func() { 59 Expect(service).NotTo(BeNil()) 60 61 if service != nil { 62 Expect(service.Name).NotTo(BeEmpty()) 63 Expect(service.Plan).NotTo(BeEmpty()) 64 Expect(service.Type).Should(Equal("kafka")) 65 66 Eventually(func() string { 67 service, _ = client.Services.Get(projectName, serviceName) 68 return service.State 69 }, 25*time.Minute, 1*time.Minute).Should(Equal("RUNNING")) 70 } 71 }) 72 73 // kafka topic 74 var ( 75 errC error 76 topicName string 77 segmentJitterMs int64 78 ) 79 segmentJitterMs = 10 80 topicName = "test1" 81 82 It("create kafka topic", func() { 83 time.Sleep(10 * time.Second) 84 errC = client.KafkaTopics.Create(projectName, serviceName, CreateKafkaTopicRequest{ 85 TopicName: topicName, 86 Config: KafkaTopicConfig{ 87 CleanupPolicy: "compact", 88 SegmentJitterMs: &segmentJitterMs, 89 }, 90 Tags: []KafkaTopicTag{ 91 { 92 Key: "tag1-key", 93 Value: "tag1-value", 94 }, 95 }, 96 }) 97 98 Eventually(func() string { 99 topic, _ := client.KafkaTopics.Get(projectName, serviceName, topicName) 100 101 if topic != nil { 102 return topic.State 103 } 104 105 return "" 106 }, 25*time.Minute, 1*time.Minute).Should(Equal("ACTIVE")) 107 }) 108 109 It("should not error kafka topic with config", func() { 110 Expect(errC).NotTo(HaveOccurred()) 111 }) 112 113 It("should populate fields properly", func() { 114 t, errT := client.KafkaTopics.Get(projectName, serviceName, topicName) 115 Expect(errT).NotTo(HaveOccurred()) 116 117 if t != nil { 118 Expect(t.Config.CleanupPolicy.Value).NotTo(BeEmpty()) 119 Expect(t.Config.SegmentJitterMs.Value).To(Equal(segmentJitterMs)) 120 Expect(t.Tags).NotTo(BeEmpty()) 121 Expect(t.Tags[0].Key).To(Equal("tag1-key")) 122 Expect(t.Tags[0].Value).To(Equal("tag1-value")) 123 } 124 }) 125 126 It("should update topic config", func() { 127 var uncleanLeaderElectionEnable = true 128 129 errU := client.KafkaTopics.Update(projectName, serviceName, topicName, UpdateKafkaTopicRequest{ 130 Config: KafkaTopicConfig{ 131 UncleanLeaderElectionEnable: &uncleanLeaderElectionEnable, 132 }, 133 Tags: []KafkaTopicTag{ 134 { 135 Key: "tag1-key", 136 Value: "tag1-value", 137 }, 138 { 139 Key: "tag2-key", 140 Value: "tag2-value", 141 }, 142 }, 143 }) 144 Expect(errU).NotTo(HaveOccurred()) 145 146 t2, errG := client.KafkaTopics.Get(projectName, serviceName, topicName) 147 Expect(errG).NotTo(HaveOccurred()) 148 Expect(t2).NotTo(BeNil()) 149 150 if t2 != nil { 151 Expect(t2.Config.UncleanLeaderElectionEnable.Value).Should(Equal(true)) 152 Expect(t2.Tags).ShouldNot(BeEmpty()) 153 Expect(len(t2.Tags)).To(Equal(2)) 154 } 155 }) 156 157 It("list v2", func() { 158 list, errV2 := client.KafkaTopics.V2List(projectName, serviceName, []string{topicName}) 159 Expect(errV2).NotTo(HaveOccurred()) 160 161 Expect(len(list)).Should(Equal(1)) 162 Expect(list[0].Config.CleanupPolicy.Value).NotTo(BeEmpty()) 163 Expect(list[0].Config.SegmentJitterMs.Value).To(Equal(segmentJitterMs)) 164 Expect(list[0].Tags).NotTo(BeEmpty()) 165 Expect(len(list[0].Tags)).To(Equal(2)) 166 }) 167 168 It("delete Kafka Topic and Kafka service", func() { 169 if errD := client.KafkaTopics.Delete(projectName, serviceName, topicName); errD != nil { 170 Fail("cannot delete kafka topic:" + errD.Error()) 171 } 172 173 if errD := client.Services.Delete(projectName, serviceName); errD != nil { 174 Fail("cannot delete service:" + errD.Error()) 175 } 176 }) 177 }) 178 })