Skip to content

Commit 68b6956

Browse files
author
Collin Van Dyck
committed
Add support for testing message headers.
For v2 message set builders, we serialize message headers, and then test that the headers are set on the messages read from the message set reader.
1 parent 8b94ffa commit 68b6956

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

builder_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,13 @@ func (f v2MessageSetBuilder) bytes() []byte {
187187
wb.Write(msg.Key) // key bytes
188188
wb.writeVarInt(int64(len(msg.Value))) // value len
189189
wb.Write(msg.Value) // value bytes
190-
wb.writeVarInt(0) // number of headers
190+
wb.writeVarInt(int64(len(msg.Headers))) // number of headers
191+
for _, header := range msg.Headers {
192+
wb.writeVarInt(int64(len(header.Key)))
193+
wb.Write([]byte(header.Key))
194+
wb.writeVarInt(int64(len(header.Value)))
195+
wb.Write(header.Value)
196+
}
191197
})
192198
wb.writeVarInt(int64(len(bs)))
193199
wb.Write(bs)

message_test.go

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ func TestMessageSetReader(t *testing.T) {
2929
Offset: int64(i + startOffset),
3030
Key: []byte(fmt.Sprintf("key-%d", i)),
3131
Value: []byte(fmt.Sprintf("val-%d", i)),
32+
Headers: []Header{
33+
{
34+
Key: fmt.Sprintf("header-key-%d", i),
35+
Value: []byte(fmt.Sprintf("header-value-%d", i)),
36+
},
37+
},
3238
}
3339
}
3440
defaultHeader := fetchResponseHeader{
@@ -280,11 +286,23 @@ func TestMessageSetReader(t *testing.T) {
280286
}
281287
rh.offset = tc.builder.messages()[0].Offset
282288
rh.debug = tc.debug
283-
for _, expected := range tc.builder.messages() {
284-
msg := rh.readMessage()
285-
require.Equal(t, string(expected.Key), string(msg.Key))
286-
require.Equal(t, string(expected.Value), string(msg.Value))
287-
require.Equal(t, expected.Offset, msg.Offset)
289+
for _, messageSet := range tc.builder.msgSets {
290+
for _, expected := range messageSet.messages() {
291+
msg := rh.readMessage()
292+
require.Equal(t, string(expected.Key), string(msg.Key))
293+
require.Equal(t, string(expected.Value), string(msg.Value))
294+
switch messageSet.(type) {
295+
case v0MessageSetBuilder, v1MessageSetBuilder:
296+
// v0 and v1 message sets do not have headers
297+
require.Len(t, msg.Headers, 0)
298+
case v2MessageSetBuilder:
299+
// v2 message sets can have headers
300+
require.EqualValues(t, expected.Headers, msg.Headers)
301+
default:
302+
t.Fatalf("unknown builder: %T", messageSet)
303+
}
304+
require.Equal(t, expected.Offset, msg.Offset)
305+
}
288306
}
289307
// verify the reader stack is empty
290308
require.EqualValues(t, 0, rh.remain)

0 commit comments

Comments
 (0)