github.com/aiven/aiven-go-client@v1.36.0/mirrormaker_replication_flow_acc_test.go (about) 1 package aiven 2 3 import ( 4 "math/rand" 5 "os" 6 "strconv" 7 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 ) 11 12 var _ = Describe("MirrorMaker 2 Replication flow", func() { 13 var ( 14 projectName string 15 project *Project 16 err error 17 ) 18 19 BeforeEach(func() { 20 projectName = os.Getenv("AIVEN_PROJECT_NAME") 21 project, err = client.Projects.Get(projectName) 22 }) 23 24 Context("Get a project", func() { 25 It("should not error", func() { 26 Expect(err).NotTo(HaveOccurred()) 27 }) 28 29 It("should populate fields properly", func() { 30 Expect(project).NotTo(BeNil()) 31 32 if project != nil { 33 Expect(project.Name).NotTo(BeEmpty()) 34 } 35 }) 36 37 // mirror maker service 38 var ( 39 serviceName string 40 service *Service 41 errS error 42 ) 43 44 JustBeforeEach(func() { 45 serviceName = "test-acc-sr-mm-" + strconv.Itoa(rand.Int()) 46 service, errS = client.Services.Create(projectName, CreateServiceRequest{ 47 Cloud: "google-europe-west1", 48 Plan: "startup-4", 49 ProjectVPCID: nil, 50 ServiceName: serviceName, 51 ServiceType: "kafka_mirrormaker", 52 }) 53 }) 54 55 Context("Create new mirror maker service", func() { 56 It("should not error", func() { 57 Expect(errS).NotTo(HaveOccurred()) 58 }) 59 60 It("should populate fields properly", func() { 61 Expect(service).NotTo(BeNil()) 62 63 if service != nil { 64 Expect(service.Name).NotTo(BeEmpty()) 65 Expect(service.Plan).NotTo(BeEmpty()) 66 Expect(service.Type).Should(Equal("kafka_mirrormaker")) 67 68 Eventually(func() string { 69 service, _ = client.Services.Get(projectName, serviceName) 70 return service.State 71 }).ShouldNot(Equal("RUNNING")) 72 } 73 }) 74 75 // mirror maker replication flow 76 var ( 77 errR error 78 ) 79 80 JustBeforeEach(func() { 81 errR = client.KafkaMirrorMakerReplicationFlow.Create(projectName, serviceName, MirrorMakerReplicationFlowRequest{ 82 ReplicationFlow{ 83 Enabled: false, 84 OffsetSyncsTopicLocation: "source", 85 SourceCluster: "source", 86 TargetCluster: "target", 87 Topics: []string{".*"}, 88 TopicsBlacklist: []string{}, 89 SyncGroupOffsetsIntervalSeconds: 2, 90 ReplicationPolicyClass: "org.apache.kafka.connect.mirror.DefaultReplicationPolicy", 91 }, 92 }) 93 }) 94 95 Context("Create new mirror maker replication flow", func() { 96 It("should not error", func() { 97 Expect(errR).NotTo(HaveOccurred()) 98 }) 99 100 It("should populate fields properly", func() { 101 r, errG := client.KafkaMirrorMakerReplicationFlow.Get(projectName, serviceName, "source", "target") 102 Expect(errG).NotTo(HaveOccurred()) 103 Expect(r).NotTo(BeNil()) 104 105 if r != nil { 106 Expect(r.ReplicationFlow.TargetCluster).NotTo(BeEmpty()) 107 Expect(r.ReplicationFlow.SourceCluster).NotTo(BeEmpty()) 108 } 109 }) 110 111 It("should update", func() { 112 r, errU := client.KafkaMirrorMakerReplicationFlow.Update(projectName, serviceName, "source", "target", MirrorMakerReplicationFlowRequest{ 113 ReplicationFlow: ReplicationFlow{ 114 Enabled: false, 115 Topics: []string{".*"}, 116 TopicsBlacklist: []string{"test"}, 117 SyncGroupOffsetsIntervalSeconds: 2, 118 ReplicationPolicyClass: "org.apache.kafka.connect.mirror.DefaultReplicationPolicy", 119 }, 120 }) 121 Expect(errU).NotTo(HaveOccurred()) 122 Expect(r).NotTo(BeNil()) 123 124 if r != nil { 125 Expect(r.ReplicationFlow.TargetCluster).NotTo(BeEmpty()) 126 Expect(r.ReplicationFlow.SourceCluster).NotTo(BeEmpty()) 127 Expect(len(r.ReplicationFlow.TopicsBlacklist)).Should(Equal(1)) 128 } 129 }) 130 131 AfterEach(func() { 132 if errD := client.KafkaMirrorMakerReplicationFlow.Delete(projectName, serviceName, "source", "target"); errD != nil { 133 Fail("cannot delete mirror maker replication flow:" + errD.Error()) 134 } 135 }) 136 }) 137 }) 138 139 AfterEach(func() { 140 if errD := client.Services.Delete(projectName, serviceName); errD != nil { 141 Fail("cannot delete service:" + errD.Error()) 142 } 143 }) 144 }) 145 })