github.com/segmentio/kafka-go@v0.4.48-0.20240318174348-3f6244eb34fd/alterpartitionreassignments_test.go (about) 1 package kafka 2 3 import ( 4 "context" 5 "testing" 6 7 ktesting "github.com/segmentio/kafka-go/testing" 8 ) 9 10 func TestClientAlterPartitionReassignments(t *testing.T) { 11 if !ktesting.KafkaIsAtLeast("2.4.0") { 12 return 13 } 14 15 ctx := context.Background() 16 client, shutdown := newLocalClient() 17 defer shutdown() 18 19 topic := makeTopic() 20 createTopic(t, topic, 2) 21 defer deleteTopic(t, topic) 22 23 // Local kafka only has 1 broker, so any partition reassignments are really no-ops. 24 resp, err := client.AlterPartitionReassignments( 25 ctx, 26 &AlterPartitionReassignmentsRequest{ 27 Topic: topic, 28 Assignments: []AlterPartitionReassignmentsRequestAssignment{ 29 { 30 PartitionID: 0, 31 BrokerIDs: []int{1}, 32 }, 33 { 34 PartitionID: 1, 35 BrokerIDs: []int{1}, 36 }, 37 }, 38 }, 39 ) 40 41 if err != nil { 42 t.Fatal(err) 43 } 44 if resp.Error != nil { 45 t.Error( 46 "Unexpected error in response", 47 "expected", nil, 48 "got", resp.Error, 49 ) 50 } 51 if len(resp.PartitionResults) != 2 { 52 t.Error( 53 "Unexpected length of partition results", 54 "expected", 2, 55 "got", len(resp.PartitionResults), 56 ) 57 } 58 } 59 60 func TestClientAlterPartitionReassignmentsMultiTopics(t *testing.T) { 61 if !ktesting.KafkaIsAtLeast("2.4.0") { 62 return 63 } 64 65 ctx := context.Background() 66 client, shutdown := newLocalClient() 67 defer shutdown() 68 69 topic1 := makeTopic() 70 topic2 := makeTopic() 71 createTopic(t, topic1, 2) 72 createTopic(t, topic2, 2) 73 defer func() { 74 deleteTopic(t, topic1) 75 deleteTopic(t, topic2) 76 }() 77 78 // Local kafka only has 1 broker, so any partition reassignments are really no-ops. 79 resp, err := client.AlterPartitionReassignments( 80 ctx, 81 &AlterPartitionReassignmentsRequest{ 82 Assignments: []AlterPartitionReassignmentsRequestAssignment{ 83 { 84 Topic: topic1, 85 PartitionID: 0, 86 BrokerIDs: []int{1}, 87 }, 88 { 89 Topic: topic1, 90 PartitionID: 1, 91 BrokerIDs: []int{1}, 92 }, 93 { 94 Topic: topic2, 95 PartitionID: 0, 96 BrokerIDs: []int{1}, 97 }, 98 }, 99 }, 100 ) 101 102 if err != nil { 103 t.Fatal(err) 104 } 105 if resp.Error != nil { 106 t.Error( 107 "Unexpected error in response", 108 "expected", nil, 109 "got", resp.Error, 110 ) 111 } 112 if len(resp.PartitionResults) != 3 { 113 t.Error( 114 "Unexpected length of partition results", 115 "expected", 3, 116 "got", len(resp.PartitionResults), 117 ) 118 } 119 }