@@ -247,3 +247,68 @@ func TestConsumerUnexpectedTopicMetadata(t *testing.T) {
247247 t .Errorf ("Expected an expectation failure to be set on the error reporter." )
248248 }
249249}
250+
251+ func TestConsumerOffsetsAreManagedCorrectlyWithOffsetOldest (t * testing.T ) {
252+ trm := newTestReporterMock ()
253+ consumer := NewConsumer (trm , NewTestConfig ())
254+ pcmock := consumer .ExpectConsumePartition ("test" , 0 , sarama .OffsetOldest )
255+ pcmock .YieldMessage (& sarama.ConsumerMessage {Value : []byte ("hello" )})
256+ pcmock .YieldMessage (& sarama.ConsumerMessage {Value : []byte ("hello" )})
257+ pcmock .ExpectMessagesDrainedOnClose ()
258+
259+ pc , err := consumer .ConsumePartition ("test" , 0 , sarama .OffsetOldest )
260+ if err != nil {
261+ t .Error (err )
262+ }
263+
264+ message1 := <- pc .Messages ()
265+ if message1 .Offset != 0 {
266+ t .Errorf ("Expected offset of first message in the partition to be 0, got %d" , message1 .Offset )
267+ }
268+
269+ message2 := <- pc .Messages ()
270+ if message2 .Offset != 1 {
271+ t .Errorf ("Expected offset of second message in the partition to be 1, got %d" , message2 .Offset )
272+ }
273+
274+ if err := consumer .Close (); err != nil {
275+ t .Error (err )
276+ }
277+
278+ if len (trm .errors ) != 0 {
279+ t .Errorf ("Expected to not report any errors, found: %v" , trm .errors )
280+ }
281+ }
282+
283+ func TestConsumerOffsetsAreManagedCorrectlyWithSpecifiedOffset (t * testing.T ) {
284+ startingOffset := int64 (123 )
285+ trm := newTestReporterMock ()
286+ consumer := NewConsumer (trm , NewTestConfig ())
287+ pcmock := consumer .ExpectConsumePartition ("test" , 0 , startingOffset )
288+ pcmock .YieldMessage (& sarama.ConsumerMessage {Value : []byte ("hello" )})
289+ pcmock .YieldMessage (& sarama.ConsumerMessage {Value : []byte ("hello" )})
290+ pcmock .ExpectMessagesDrainedOnClose ()
291+
292+ pc , err := consumer .ConsumePartition ("test" , 0 , startingOffset )
293+ if err != nil {
294+ t .Error (err )
295+ }
296+
297+ message1 := <- pc .Messages ()
298+ if message1 .Offset != startingOffset {
299+ t .Errorf ("Expected offset of first message to be %d, got %d" , startingOffset , message1 .Offset )
300+ }
301+
302+ message2 := <- pc .Messages ()
303+ if message2 .Offset != startingOffset + 1 {
304+ t .Errorf ("Expected offset of second message to be %d, got %d" , startingOffset + 1 , message2 .Offset )
305+ }
306+
307+ if err := consumer .Close (); err != nil {
308+ t .Error (err )
309+ }
310+
311+ if len (trm .errors ) != 0 {
312+ t .Errorf ("Expected to not report any errors, found: %v" , trm .errors )
313+ }
314+ }
0 commit comments