github.com/hack0072008/kafka-go@v1.0.1/createtopics_test.go (about) 1 package kafka 2 3 import ( 4 "bufio" 5 "bytes" 6 "context" 7 "reflect" 8 "testing" 9 ) 10 11 func TestClientCreateTopics(t *testing.T) { 12 const ( 13 topic1 = "client-topic-1" 14 topic2 = "client-topic-2" 15 topic3 = "client-topic-3" 16 ) 17 18 client, shutdown := newLocalClient() 19 defer shutdown() 20 21 config := []ConfigEntry{{ 22 ConfigName: "retention.ms", 23 ConfigValue: "3600000", 24 }} 25 26 res, err := client.CreateTopics(context.Background(), &CreateTopicsRequest{ 27 Topics: []TopicConfig{ 28 { 29 Topic: topic1, 30 NumPartitions: -1, 31 ReplicationFactor: -1, 32 ReplicaAssignments: []ReplicaAssignment{ 33 { 34 Partition: 0, 35 Replicas: []int{1}, 36 }, 37 { 38 Partition: 1, 39 Replicas: []int{1}, 40 }, 41 { 42 Partition: 2, 43 Replicas: []int{1}, 44 }, 45 }, 46 ConfigEntries: config, 47 }, 48 { 49 Topic: topic2, 50 NumPartitions: 2, 51 ReplicationFactor: 1, 52 ConfigEntries: config, 53 }, 54 { 55 Topic: topic3, 56 NumPartitions: 1, 57 ReplicationFactor: 1, 58 ConfigEntries: config, 59 }, 60 }, 61 }) 62 63 if err != nil { 64 t.Fatal(err) 65 } 66 67 defer deleteTopic(t, topic1, topic2, topic3) 68 69 expectTopics := map[string]struct{}{ 70 topic1: {}, 71 topic2: {}, 72 topic3: {}, 73 } 74 75 for topic, error := range res.Errors { 76 delete(expectTopics, topic) 77 78 if error != nil { 79 t.Errorf("%s => %s", topic, error) 80 } 81 } 82 83 for topic := range expectTopics { 84 t.Errorf("topic missing in response: %s", topic) 85 } 86 } 87 88 func TestCreateTopicsResponseV0(t *testing.T) { 89 item := createTopicsResponseV0{ 90 TopicErrors: []createTopicsResponseV0TopicError{ 91 { 92 Topic: "topic", 93 ErrorCode: 2, 94 }, 95 }, 96 } 97 98 b := bytes.NewBuffer(nil) 99 w := &writeBuffer{w: b} 100 item.writeTo(w) 101 102 var found createTopicsResponseV0 103 remain, err := (&found).readFrom(bufio.NewReader(b), b.Len()) 104 if err != nil { 105 t.Error(err) 106 t.FailNow() 107 } 108 if remain != 0 { 109 t.Errorf("expected 0 remain, got %v", remain) 110 t.FailNow() 111 } 112 if !reflect.DeepEqual(item, found) { 113 t.Error("expected item and found to be the same") 114 t.FailNow() 115 } 116 }