forked from IBM/sarama
-
Notifications
You must be signed in to change notification settings - Fork 0
/
request_test.go
55 lines (45 loc) · 1.22 KB
/
request_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package sarama
import (
"bytes"
"testing"
)
var (
requestSimple = []byte{
0x00, 0x00, 0x00, 0x17, // msglen
0x06, 0x66,
0x00, 0xD2,
0x00, 0x00, 0x12, 0x34,
0x00, 0x08, 'm', 'y', 'C', 'l', 'i', 'e', 'n', 't',
0x00, 0x03, 'a', 'b', 'c'}
)
type testRequestBody struct {
}
func (s *testRequestBody) key() int16 {
return 0x666
}
func (s *testRequestBody) version() int16 {
return 0xD2
}
func (s *testRequestBody) encode(pe packetEncoder) error {
return pe.putString("abc")
}
func TestRequest(t *testing.T) {
request := request{correlationID: 0x1234, id: "myClient", body: new(testRequestBody)}
testEncodable(t, "simple", &request, requestSimple)
}
// not specific to request tests, just helper functions for testing structures that
// implement the encoder or decoder interfaces that needed somewhere to live
func testEncodable(t *testing.T, name string, in encoder, expect []byte) {
packet, err := encode(in)
if err != nil {
t.Error(err)
} else if !bytes.Equal(packet, expect) {
t.Error("Encoding", name, "failed\ngot ", packet, "\nwant", expect)
}
}
func testDecodable(t *testing.T, name string, out decoder, in []byte) {
err := decode(in, out)
if err != nil {
t.Error("Decoding", name, "failed:", err)
}
}