Skip to content

Commit 54ceae4

Browse files
authored
fix(test): consumer group fetch request messages (#3081)
Signed-off-by: Jonathan Ohms <[email protected]>
1 parent 4ffab23 commit 54ceae4

File tree

1 file changed

+26
-20
lines changed

1 file changed

+26
-20
lines changed

consumer_group_test.go

+26-20
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,22 @@ import (
1313
)
1414

1515
type handler struct {
16-
*testing.T
17-
cancel context.CancelFunc
16+
messageCh chan *ConsumerMessage
1817
}
1918

2019
func (h *handler) Setup(s ConsumerGroupSession) error { return nil }
2120
func (h *handler) Cleanup(s ConsumerGroupSession) error { return nil }
2221
func (h *handler) ConsumeClaim(sess ConsumerGroupSession, claim ConsumerGroupClaim) error {
23-
for msg := range claim.Messages() {
24-
sess.MarkMessage(msg, "")
25-
h.Logf("consumed msg %v", msg)
26-
h.cancel()
27-
break
22+
for {
23+
select {
24+
case msg := <-claim.Messages():
25+
sess.MarkMessage(msg, "")
26+
h.messageCh <- msg
27+
case <-sess.Context().Done():
28+
h.messageCh <- &ConsumerMessage{Value: []byte("session done")}
29+
return nil
30+
}
2831
}
29-
return nil
3032
}
3133

3234
func TestNewConsumerGroupFromClient(t *testing.T) {
@@ -82,32 +84,36 @@ func TestConsumerGroupNewSessionDuringOffsetLoad(t *testing.T) {
8284
).SetError(ErrNoError),
8385
"FetchRequest": NewMockSequence(
8486
NewMockFetchResponse(t, 1).
85-
SetMessage("my-topic", 0, 0, StringEncoder("foo")).
87+
SetMessage("my-topic", 0, 0, StringEncoder("foo")),
88+
NewMockFetchResponse(t, 1).
8689
SetMessage("my-topic", 0, 1, StringEncoder("bar")),
87-
NewMockFetchResponse(t, 1),
8890
),
8991
})
9092

9193
group, err := NewConsumerGroup([]string{broker0.Addr()}, "my-group", config)
9294
if err != nil {
9395
t.Fatal(err)
9496
}
95-
defer func() { _ = group.Close() }()
9697

97-
ctx, cancel := context.WithCancel(context.Background())
98-
h := &handler{t, cancel}
99-
100-
var wg sync.WaitGroup
101-
wg.Add(1)
98+
ctx := context.Background()
99+
h := &handler{make(chan *ConsumerMessage)}
100+
defer close(h.messageCh)
102101

103102
go func() {
104103
topics := []string{"my-topic"}
105104
if err := group.Consume(ctx, topics, h); err != nil {
106105
t.Error(err)
107106
}
108-
wg.Done()
109107
}()
110-
wg.Wait()
108+
109+
assert.Equal(t, "foo", string((<-h.messageCh).Value))
110+
assert.Equal(t, "bar", string((<-h.messageCh).Value))
111+
go func() {
112+
if err := group.Close(); err != nil {
113+
t.Error(err)
114+
}
115+
}()
116+
assert.Equal(t, "session done", string((<-h.messageCh).Value))
111117
}
112118

113119
func TestConsume_RaceTest(t *testing.T) {
@@ -219,8 +225,8 @@ func TestConsumerGroupSessionDoesNotRetryForever(t *testing.T) {
219225
}
220226
defer func() { _ = group.Close() }()
221227

222-
ctx, cancel := context.WithCancel(context.Background())
223-
h := &handler{t, cancel}
228+
ctx := context.Background()
229+
h := &handler{}
224230

225231
var wg sync.WaitGroup
226232
wg.Add(1)

0 commit comments

Comments
 (0)