@ -31,7 +31,7 @@ func Test_CachedIterator(t *testing.T) {
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 2 ] , c . Entry ( ) )
require . Equal ( t , false , c . Next ( ) )
require . Equal ( t , nil , c . Error ( ) )
require . NoError ( t , c . Error ( ) )
require . Equal ( t , stream . Entries [ 2 ] , c . Entry ( ) )
require . Equal ( t , false , c . Next ( ) )
}
@ -45,7 +45,6 @@ func Test_CachedIterator(t *testing.T) {
}
func Test_EmptyCachedIterator ( t * testing . T ) {
c := NewCachedIterator ( NoopIterator , 0 )
require . Equal ( t , "" , c . Labels ( ) )
@ -61,11 +60,9 @@ func Test_EmptyCachedIterator(t *testing.T) {
require . Equal ( t , false , c . Next ( ) )
require . Equal ( t , "" , c . Labels ( ) )
require . Equal ( t , logproto . Entry { } , c . Entry ( ) )
}
func Test_ErrorCachedIterator ( t * testing . T ) {
c := NewCachedIterator ( & errorIter { } , 0 )
require . Equal ( t , false , c . Next ( ) )
@ -75,6 +72,62 @@ func Test_ErrorCachedIterator(t *testing.T) {
require . Equal ( t , errors . New ( "close" ) , c . Close ( ) )
}
func Test_CachedIteratorResetNotExhausted ( t * testing . T ) {
stream := logproto . Stream {
Labels : ` { foo="bar"} ` ,
Entries : [ ] logproto . Entry {
{ Timestamp : time . Unix ( 0 , 1 ) , Line : "1" } ,
{ Timestamp : time . Unix ( 0 , 2 ) , Line : "2" } ,
{ Timestamp : time . Unix ( 0 , 3 ) , Line : "3" } ,
} ,
}
c := NewCachedIterator ( NewStreamIterator ( stream ) , 3 )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 0 ] , c . Entry ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 1 ] , c . Entry ( ) )
c . Reset ( )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 0 ] , c . Entry ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 1 ] , c . Entry ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 2 ] , c . Entry ( ) )
require . Equal ( t , false , c . Next ( ) )
require . NoError ( t , c . Error ( ) )
require . Equal ( t , stream . Entries [ 2 ] , c . Entry ( ) )
require . Equal ( t , false , c . Next ( ) )
// Close the iterator reset it to the beginning.
require . Equal ( t , nil , c . Close ( ) )
}
func Test_CachedIteratorResetExhausted ( t * testing . T ) {
stream := logproto . Stream {
Labels : ` { foo="bar"} ` ,
Entries : [ ] logproto . Entry {
{ Timestamp : time . Unix ( 0 , 1 ) , Line : "1" } ,
{ Timestamp : time . Unix ( 0 , 2 ) , Line : "2" } ,
} ,
}
c := NewCachedIterator ( NewStreamIterator ( stream ) , 3 )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 0 ] , c . Entry ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 1 ] , c . Entry ( ) )
c . Reset ( )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 0 ] , c . Entry ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , stream . Entries [ 1 ] , c . Entry ( ) )
require . Equal ( t , false , c . Next ( ) )
// Close the iterator reset it to the beginning.
require . Equal ( t , nil , c . Close ( ) )
}
func Test_CachedSampleIterator ( t * testing . T ) {
series := logproto . Series {
Labels : ` { foo="bar"} ` ,
@ -96,7 +149,7 @@ func Test_CachedSampleIterator(t *testing.T) {
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 2 ] , c . Sample ( ) )
require . Equal ( t , false , c . Next ( ) )
require . Equal ( t , nil , c . Error ( ) )
require . NoError ( t , c . Error ( ) )
require . Equal ( t , series . Samples [ 2 ] , c . Sample ( ) )
require . Equal ( t , false , c . Next ( ) )
}
@ -109,8 +162,63 @@ func Test_CachedSampleIterator(t *testing.T) {
assert ( )
}
func Test_EmptyCachedSampleIterator ( t * testing . T ) {
func Test_CachedSampleIteratorResetNotExhausted ( t * testing . T ) {
series := logproto . Series {
Labels : ` { foo="bar"} ` ,
Samples : [ ] logproto . Sample {
{ Timestamp : time . Unix ( 0 , 1 ) . UnixNano ( ) , Hash : 1 , Value : 1. } ,
{ Timestamp : time . Unix ( 0 , 2 ) . UnixNano ( ) , Hash : 2 , Value : 2. } ,
{ Timestamp : time . Unix ( 0 , 3 ) . UnixNano ( ) , Hash : 3 , Value : 3. } ,
} ,
}
c := NewCachedSampleIterator ( NewSeriesIterator ( series ) , 3 )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 0 ] , c . Sample ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 1 ] , c . Sample ( ) )
c . Reset ( )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 0 ] , c . Sample ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 1 ] , c . Sample ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 2 ] , c . Sample ( ) )
require . Equal ( t , false , c . Next ( ) )
require . NoError ( t , c . Error ( ) )
require . Equal ( t , series . Samples [ 2 ] , c . Sample ( ) )
require . Equal ( t , false , c . Next ( ) )
// Close the iterator reset it to the beginning.
require . Equal ( t , nil , c . Close ( ) )
}
func Test_CachedSampleIteratorResetExhausted ( t * testing . T ) {
series := logproto . Series {
Labels : ` { foo="bar"} ` ,
Samples : [ ] logproto . Sample {
{ Timestamp : time . Unix ( 0 , 1 ) . UnixNano ( ) , Hash : 1 , Value : 1. } ,
{ Timestamp : time . Unix ( 0 , 2 ) . UnixNano ( ) , Hash : 2 , Value : 2. } ,
} ,
}
c := NewCachedSampleIterator ( NewSeriesIterator ( series ) , 3 )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 0 ] , c . Sample ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 1 ] , c . Sample ( ) )
c . Reset ( )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 0 ] , c . Sample ( ) )
require . Equal ( t , true , c . Next ( ) )
require . Equal ( t , series . Samples [ 1 ] , c . Sample ( ) )
require . Equal ( t , false , c . Next ( ) )
// Close the iterator reset it to the beginning.
require . Equal ( t , nil , c . Close ( ) )
}
func Test_EmptyCachedSampleIterator ( t * testing . T ) {
c := NewCachedSampleIterator ( NoopIterator , 0 )
require . Equal ( t , "" , c . Labels ( ) )
@ -126,11 +234,9 @@ func Test_EmptyCachedSampleIterator(t *testing.T) {
require . Equal ( t , false , c . Next ( ) )
require . Equal ( t , "" , c . Labels ( ) )
require . Equal ( t , logproto . Sample { } , c . Sample ( ) )
}
func Test_ErrorCachedSampleIterator ( t * testing . T ) {
c := NewCachedSampleIterator ( & errorIter { } , 0 )
require . Equal ( t , false , c . Next ( ) )