forked from IBM/sarama
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetadata_request_test.go
135 lines (100 loc) · 4.38 KB
/
metadata_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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package sarama
import "testing"
var (
// The v0 metadata request has a non-nullable array of topic names
// to request metadata for. An empty array fetches metadata for all topics
metadataRequestNoTopicsV0 = []byte{
0x00, 0x00, 0x00, 0x00,
}
metadataRequestOneTopicV0 = []byte{
0x00, 0x00, 0x00, 0x01,
0x00, 0x06, 't', 'o', 'p', 'i', 'c', '1',
}
metadataRequestThreeTopicsV0 = []byte{
0x00, 0x00, 0x00, 0x03,
0x00, 0x03, 'f', 'o', 'o',
0x00, 0x03, 'b', 'a', 'r',
0x00, 0x03, 'b', 'a', 'z',
}
// The v1 metadata request is the same as v0 except that the array is now
// nullable and should be explicitly null if all topics are required (an
// empty list requests no topics)
metadataRequestNoTopicsV1 = []byte{
0xff, 0xff, 0xff, 0xff,
}
metadataRequestOneTopicV1 = metadataRequestOneTopicV0
metadataRequestThreeTopicsV1 = metadataRequestThreeTopicsV0
// The v2 metadata request is the same as v1. An additional field for
// cluster id has been added to the v2 metadata response
metadataRequestNoTopicsV2 = metadataRequestNoTopicsV1
metadataRequestOneTopicV2 = metadataRequestOneTopicV1
metadataRequestThreeTopicsV2 = metadataRequestThreeTopicsV1
// The v3 metadata request is the same as v1 and v2. An additional field
// for throttle time has been added to the v3 metadata response
metadataRequestNoTopicsV3 = metadataRequestNoTopicsV2
metadataRequestOneTopicV3 = metadataRequestOneTopicV2
metadataRequestThreeTopicsV3 = metadataRequestThreeTopicsV2
// The v4 metadata request has an additional field for allowing auto topic
// creation. The response is the same as v3.
metadataRequestNoTopicsV4 = append(metadataRequestNoTopicsV1, byte(0))
metadataRequestAutoCreateV4 = append(metadataRequestOneTopicV3, byte(1))
metadataRequestNoAutoCreateV4 = append(metadataRequestOneTopicV3, byte(0))
// The v5 metadata request is the same as v4. An additional field for
// offline_replicas has been added to the v5 metadata response
metadataRequestNoTopicsV5 = append(metadataRequestNoTopicsV1, byte(0))
metadataRequestAutoCreateV5 = append(metadataRequestOneTopicV3, byte(1))
metadataRequestNoAutoCreateV5 = append(metadataRequestOneTopicV3, byte(0))
)
func TestMetadataRequestV0(t *testing.T) {
request := new(MetadataRequest)
testRequest(t, "no topics", request, metadataRequestNoTopicsV0)
request.Topics = []string{"topic1"}
testRequest(t, "one topic", request, metadataRequestOneTopicV0)
request.Topics = []string{"foo", "bar", "baz"}
testRequest(t, "three topics", request, metadataRequestThreeTopicsV0)
}
func TestMetadataRequestV1(t *testing.T) {
request := new(MetadataRequest)
request.Version = 1
testRequest(t, "no topics", request, metadataRequestNoTopicsV1)
request.Topics = []string{"topic1"}
testRequest(t, "one topic", request, metadataRequestOneTopicV1)
request.Topics = []string{"foo", "bar", "baz"}
testRequest(t, "three topics", request, metadataRequestThreeTopicsV1)
}
func TestMetadataRequestV2(t *testing.T) {
request := new(MetadataRequest)
request.Version = 2
testRequest(t, "no topics", request, metadataRequestNoTopicsV2)
request.Topics = []string{"topic1"}
testRequest(t, "one topic", request, metadataRequestOneTopicV2)
request.Topics = []string{"foo", "bar", "baz"}
testRequest(t, "three topics", request, metadataRequestThreeTopicsV2)
}
func TestMetadataRequestV3(t *testing.T) {
request := new(MetadataRequest)
request.Version = 3
testRequest(t, "no topics", request, metadataRequestNoTopicsV3)
request.Topics = []string{"topic1"}
testRequest(t, "one topic", request, metadataRequestOneTopicV3)
}
func TestMetadataRequestV4(t *testing.T) {
request := new(MetadataRequest)
request.Version = 4
testRequest(t, "no topics", request, metadataRequestNoTopicsV4)
request.Topics = []string{"topic1"}
request.AllowAutoTopicCreation = true
testRequest(t, "one topic", request, metadataRequestAutoCreateV4)
request.AllowAutoTopicCreation = false
testRequest(t, "one topic", request, metadataRequestNoAutoCreateV4)
}
func TestMetadataRequestV5(t *testing.T) {
request := new(MetadataRequest)
request.Version = 5
testRequest(t, "no topics", request, metadataRequestNoTopicsV4)
request.Topics = []string{"topic1"}
request.AllowAutoTopicCreation = true
testRequest(t, "one topic", request, metadataRequestAutoCreateV5)
request.AllowAutoTopicCreation = false
testRequest(t, "one topic", request, metadataRequestNoAutoCreateV5)
}