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