github.com/hack0072008/kafka-go@v1.0.1/syncgroup_test.go (about) 1 package kafka 2 3 import ( 4 "bufio" 5 "bytes" 6 "io" 7 "reflect" 8 "testing" 9 ) 10 11 func TestGroupAssignment(t *testing.T) { 12 item := groupAssignment{ 13 Version: 1, 14 Topics: map[string][]int32{ 15 "a": {1, 2, 3}, 16 "b": {4, 5}, 17 }, 18 UserData: []byte(`blah`), 19 } 20 21 b := bytes.NewBuffer(nil) 22 w := &writeBuffer{w: b} 23 item.writeTo(w) 24 25 var found groupAssignment 26 remain, err := (&found).readFrom(bufio.NewReader(b), b.Len()) 27 if err != nil { 28 t.Error(err) 29 t.FailNow() 30 } 31 if remain != 0 { 32 t.Errorf("expected 0 remain, got %v", remain) 33 t.FailNow() 34 } 35 if !reflect.DeepEqual(item, found) { 36 t.Error("expected item and found to be the same") 37 t.FailNow() 38 } 39 } 40 41 func TestGroupAssignmentReadsFromZeroSize(t *testing.T) { 42 var item groupAssignment 43 remain, err := (&item).readFrom(bufio.NewReader(bytes.NewReader(nil)), 0) 44 if err != nil { 45 t.Error(err) 46 t.FailNow() 47 } 48 if remain != 0 { 49 t.Errorf("expected 0 remain, got %v", remain) 50 t.FailNow() 51 } 52 if item.Topics == nil { 53 t.Error("expected non nil Topics to be assigned") 54 } 55 } 56 57 func TestSyncGroupResponseV0(t *testing.T) { 58 item := syncGroupResponseV0{ 59 ErrorCode: 2, 60 MemberAssignments: []byte(`blah`), 61 } 62 63 b := bytes.NewBuffer(nil) 64 w := &writeBuffer{w: b} 65 item.writeTo(w) 66 67 var found syncGroupResponseV0 68 remain, err := (&found).readFrom(bufio.NewReader(b), b.Len()) 69 if err != nil { 70 t.Error(err) 71 t.FailNow() 72 } 73 if remain != 0 { 74 t.Errorf("expected 0 remain, got %v", remain) 75 t.FailNow() 76 } 77 if !reflect.DeepEqual(item, found) { 78 t.Error("expected item and found to be the same") 79 t.FailNow() 80 } 81 } 82 83 func BenchmarkSyncGroupResponseV0(t *testing.B) { 84 item := syncGroupResponseV0{ 85 ErrorCode: 2, 86 MemberAssignments: []byte(`blah`), 87 } 88 89 b := bytes.NewBuffer(nil) 90 w := &writeBuffer{w: b} 91 item.writeTo(w) 92 93 r := bytes.NewReader(b.Bytes()) 94 reader := bufio.NewReader(r) 95 size := b.Len() 96 97 for i := 0; i < t.N; i++ { 98 r.Seek(0, io.SeekStart) 99 var found syncGroupResponseV0 100 remain, err := (&found).readFrom(reader, size) 101 if err != nil { 102 t.Error(err) 103 t.FailNow() 104 } 105 if remain != 0 { 106 t.Errorf("expected 0 remain, got %v", remain) 107 t.FailNow() 108 } 109 } 110 }