Skip to content

Commit fbd8338

Browse files
committed
Implement DescribeConfigsRequest v1 & v2
1 parent 96e43a8 commit fbd8338

File tree

2 files changed

+57
-7
lines changed

2 files changed

+57
-7
lines changed

describe_configs_request.go

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
package sarama
22

3+
type DescribeConfigsRequest struct {
4+
Version int16
5+
Resources []*ConfigResource
6+
IncludeSynonyms bool
7+
}
8+
39
type ConfigResource struct {
410
Type ConfigResourceType
511
Name string
612
ConfigNames []string
713
}
814

9-
type DescribeConfigsRequest struct {
10-
Resources []*ConfigResource
11-
}
12-
1315
func (r *DescribeConfigsRequest) encode(pe packetEncoder) error {
1416
if err := pe.putArrayLength(len(r.Resources)); err != nil {
1517
return err
@@ -30,6 +32,10 @@ func (r *DescribeConfigsRequest) encode(pe packetEncoder) error {
3032
}
3133
}
3234

35+
if r.Version >= 1 {
36+
pe.putBool(r.IncludeSynonyms)
37+
}
38+
3339
return nil
3440
}
3541

@@ -74,6 +80,14 @@ func (r *DescribeConfigsRequest) decode(pd packetDecoder, version int16) (err er
7480
}
7581
r.Resources[i].ConfigNames = cfnames
7682
}
83+
r.Version = version
84+
if r.Version >= 1 {
85+
b, err := pd.getBool()
86+
if err != nil {
87+
return err
88+
}
89+
r.IncludeSynonyms = b
90+
}
7791

7892
return nil
7993
}
@@ -83,9 +97,16 @@ func (r *DescribeConfigsRequest) key() int16 {
8397
}
8498

8599
func (r *DescribeConfigsRequest) version() int16 {
86-
return 0
100+
return r.Version
87101
}
88102

89103
func (r *DescribeConfigsRequest) requiredVersion() KafkaVersion {
90-
return V0_11_0_0
104+
switch r.Version {
105+
case 1:
106+
return V1_0_0_0
107+
case 2:
108+
return V2_0_0_0
109+
default:
110+
return V0_11_0_0
111+
}
91112
}

describe_configs_request_test.go

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,33 @@ var (
3333
}
3434

3535
singleDescribeConfigsRequestAllConfigs = []byte{
36+
0, 0, 0, 1, // 1 config
37+
2, // a topic
38+
0, 3, 'f', 'o', 'o', // topic name: foo
39+
255, 255, 255, 255, // all configs
40+
}
41+
42+
singleDescribeConfigsRequestAllConfigsv1 = []byte{
3643
0, 0, 0, 1, // 1 config
3744
2, // a topic
3845
0, 3, 'f', 'o', 'o', // topic name: foo
3946
255, 255, 255, 255, // no configs
47+
1, //synoms
4048
}
4149
)
4250

43-
func TestDescribeConfigsRequest(t *testing.T) {
51+
func TestDescribeConfigsRequestv0(t *testing.T) {
4452
var request *DescribeConfigsRequest
4553

4654
request = &DescribeConfigsRequest{
55+
Version: 0,
4756
Resources: []*ConfigResource{},
4857
}
4958
testRequest(t, "no requests", request, emptyDescribeConfigsRequest)
5059

5160
configs := []string{"segment.ms"}
5261
request = &DescribeConfigsRequest{
62+
Version: 0,
5363
Resources: []*ConfigResource{
5464
&ConfigResource{
5565
Type: TopicResource,
@@ -62,6 +72,7 @@ func TestDescribeConfigsRequest(t *testing.T) {
6272
testRequest(t, "one config", request, singleDescribeConfigsRequest)
6373

6474
request = &DescribeConfigsRequest{
75+
Version: 0,
6576
Resources: []*ConfigResource{
6677
&ConfigResource{
6778
Type: TopicResource,
@@ -78,6 +89,7 @@ func TestDescribeConfigsRequest(t *testing.T) {
7889
testRequest(t, "two configs", request, doubleDescribeConfigsRequest)
7990

8091
request = &DescribeConfigsRequest{
92+
Version: 0,
8193
Resources: []*ConfigResource{
8294
&ConfigResource{
8395
Type: TopicResource,
@@ -88,3 +100,20 @@ func TestDescribeConfigsRequest(t *testing.T) {
88100

89101
testRequest(t, "one topic, all configs", request, singleDescribeConfigsRequestAllConfigs)
90102
}
103+
104+
func TestDescribeConfigsRequestv1(t *testing.T) {
105+
var request *DescribeConfigsRequest
106+
107+
request = &DescribeConfigsRequest{
108+
Version: 1,
109+
Resources: []*ConfigResource{
110+
{
111+
Type: TopicResource,
112+
Name: "foo",
113+
},
114+
},
115+
IncludeSynonyms: true,
116+
}
117+
118+
testRequest(t, "one topic, all configs", request, singleDescribeConfigsRequestAllConfigsv1)
119+
}

0 commit comments

Comments
 (0)