| 125 | } |
| 126 | |
| 127 | func TestSaramaCompatibility(t *testing.T) { |
| 128 | var ( |
| 129 | // sample data from github.com/Shopify/sarama |
| 130 | // |
| 131 | // See consumer_group_members_test.go |
| 132 | // |
| 133 | groupMemberMetadata = []byte{ |
| 134 | 0, 1, // Version |
| 135 | 0, 0, 0, 2, // Topic array length |
| 136 | 0, 3, 'o', 'n', 'e', // Topic one |
| 137 | 0, 3, 't', 'w', 'o', // Topic two |
| 138 | 0, 0, 0, 3, 0x01, 0x02, 0x03, // Userdata |
| 139 | } |
| 140 | groupMemberAssignment = []byte{ |
| 141 | 0, 1, // Version |
| 142 | 0, 0, 0, 1, // Topic array length |
| 143 | 0, 3, 'o', 'n', 'e', // Topic one |
| 144 | 0, 0, 0, 3, // Topic one, partition array length |
| 145 | 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, // 0, 2, 4 |
| 146 | 0, 0, 0, 3, 0x01, 0x02, 0x03, // Userdata |
| 147 | } |
| 148 | ) |
| 149 | |
| 150 | t.Run("verify metadata", func(t *testing.T) { |
| 151 | var item groupMetadata |
| 152 | remain, err := (&item).readFrom(bufio.NewReader(bytes.NewReader(groupMemberMetadata)), len(groupMemberMetadata)) |
| 153 | if err != nil { |
| 154 | t.Fatalf("bad err: %v", err) |
| 155 | } |
| 156 | if remain != 0 { |
| 157 | t.Fatalf("expected 0; got %v", remain) |
| 158 | } |
| 159 | |
| 160 | if v := item.Version; v != 1 { |
| 161 | t.Errorf("expected Version 1; got %v", v) |
| 162 | } |
| 163 | if v := item.Topics; !reflect.DeepEqual([]string{"one", "two"}, v) { |
| 164 | t.Errorf(`expected {"one", "two"}; got %v`, v) |
| 165 | } |
| 166 | if v := item.UserData; !reflect.DeepEqual([]byte{0x01, 0x02, 0x03}, v) { |
| 167 | t.Errorf("expected []byte{0x01, 0x02, 0x03}; got %v", v) |
| 168 | } |
| 169 | }) |
| 170 | |
| 171 | t.Run("verify assignments", func(t *testing.T) { |
| 172 | var item groupAssignment |
| 173 | remain, err := (&item).readFrom(bufio.NewReader(bytes.NewReader(groupMemberAssignment)), len(groupMemberAssignment)) |
| 174 | if err != nil { |
| 175 | t.Fatalf("bad err: %v", err) |
| 176 | } |
| 177 | if remain != 0 { |
| 178 | t.Fatalf("expected 0; got %v", remain) |
| 179 | } |
| 180 | |
| 181 | if v := item.Version; v != 1 { |
| 182 | t.Errorf("expected Version 1; got %v", v) |
| 183 | } |
| 184 | if v := item.Topics; !reflect.DeepEqual(map[string][]int32{"one": {0, 2, 4}}, v) { |