@@ -33,12 +33,13 @@ func KafkaPipe(log logrus.FieldLogger) (*FakeKafkaConsumer, *FakeKafkaProducer)
33
33
}
34
34
35
35
type FakeKafkaConsumer struct {
36
- messages []* kafkalib.Message
37
- msgMu sync.Mutex
38
- offset int64
39
- notify chan struct {}
40
- commits chan * kafkalib.Message
41
- log logrus.FieldLogger
36
+ messages []* kafkalib.Message
37
+ msgMu sync.Mutex
38
+ offset int64
39
+ readOffset int64
40
+ notify chan struct {}
41
+ commits chan * kafkalib.Message
42
+ log logrus.FieldLogger
42
43
}
43
44
44
45
type FakeKafkaProducer struct {
@@ -63,11 +64,12 @@ func (f *FakeKafkaProducer) Close() error {
63
64
64
65
func NewFakeKafkaConsumer (log logrus.FieldLogger , distri <- chan * kafkalib.Message ) * FakeKafkaConsumer {
65
66
r := & FakeKafkaConsumer {
66
- messages : make ([]* kafkalib.Message , 0 ),
67
- offset : 0 ,
68
- notify : make (chan struct {}),
69
- log : log ,
70
- commits : make (chan * kafkalib.Message , 1000 ),
67
+ messages : make ([]* kafkalib.Message , 0 ),
68
+ offset : 0 ,
69
+ readOffset : 0 ,
70
+ notify : make (chan struct {}),
71
+ log : log ,
72
+ commits : make (chan * kafkalib.Message , 1000 ),
71
73
}
72
74
73
75
go func () {
@@ -86,11 +88,12 @@ func NewFakeKafkaConsumer(log logrus.FieldLogger, distri <-chan *kafkalib.Messag
86
88
func (f * FakeKafkaConsumer ) FetchMessage (ctx context.Context ) (* kafkalib.Message , error ) {
87
89
for {
88
90
f .msgMu .Lock ()
89
- if int64 (len (f .messages )) > f .offset {
90
- f .log .WithField ("offset" , f .offset ).Trace ("offering message" )
91
- msg := f .messages [f .offset ]
91
+ if int64 (len (f .messages )) > f .readOffset {
92
+ f .log .WithField ("offset" , f .readOffset ).Trace ("offering message" )
93
+ msg := f .messages [f .readOffset ]
92
94
f .msgMu .Unlock ()
93
95
96
+ f .readOffset = f .readOffset + 1
94
97
return msg , nil
95
98
}
96
99
f .msgMu .Unlock ()
@@ -121,13 +124,14 @@ func (f *FakeKafkaConsumer) CommitMessage(msg *kafkalib.Message) error {
121
124
func (f * FakeKafkaConsumer ) SetInitialOffset (offset int64 ) error {
122
125
f .msgMu .Lock ()
123
126
f .offset = offset
127
+ f .readOffset = offset
124
128
f .msgMu .Unlock ()
125
129
return nil
126
130
}
127
131
128
132
func (f * FakeKafkaConsumer ) Seek (offset int64 ) error {
129
133
f .msgMu .Lock ()
130
- f .offset = offset
134
+ f .readOffset = offset
131
135
f .msgMu .Unlock ()
132
136
return nil
133
137
}
0 commit comments