|
|
|
@ -1244,63 +1244,78 @@ func TestPostingsWithIndexHeap(t *testing.T) { |
|
|
|
|
func TestListPostings(t *testing.T) { |
|
|
|
|
t.Run("empty list", func(t *testing.T) { |
|
|
|
|
p := NewListPostings(nil) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.False(t, p.Seek(10)) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.NoError(t, p.Err()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("one posting", func(t *testing.T) { |
|
|
|
|
t.Run("next", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10}) |
|
|
|
|
require.Equal(t, 1, p.(*ListPostings).Len()) |
|
|
|
|
require.True(t, p.Next()) |
|
|
|
|
require.Equal(t, storage.SeriesRef(10), p.At()) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.NoError(t, p.Err()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
t.Run("seek less", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10}) |
|
|
|
|
require.Equal(t, 1, p.(*ListPostings).Len()) |
|
|
|
|
require.True(t, p.Seek(5)) |
|
|
|
|
require.Equal(t, storage.SeriesRef(10), p.At()) |
|
|
|
|
require.True(t, p.Seek(5)) |
|
|
|
|
require.Equal(t, storage.SeriesRef(10), p.At()) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.NoError(t, p.Err()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
t.Run("seek equal", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10}) |
|
|
|
|
require.Equal(t, 1, p.(*ListPostings).Len()) |
|
|
|
|
require.True(t, p.Seek(10)) |
|
|
|
|
require.Equal(t, storage.SeriesRef(10), p.At()) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.NoError(t, p.Err()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
t.Run("seek more", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10}) |
|
|
|
|
require.Equal(t, 1, p.(*ListPostings).Len()) |
|
|
|
|
require.False(t, p.Seek(15)) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.NoError(t, p.Err()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
t.Run("seek after next", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10}) |
|
|
|
|
require.Equal(t, 1, p.(*ListPostings).Len()) |
|
|
|
|
require.True(t, p.Next()) |
|
|
|
|
require.False(t, p.Seek(15)) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.NoError(t, p.Err()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("multiple postings", func(t *testing.T) { |
|
|
|
|
t.Run("next", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10, 20}) |
|
|
|
|
require.Equal(t, 2, p.(*ListPostings).Len()) |
|
|
|
|
require.True(t, p.Next()) |
|
|
|
|
require.Equal(t, storage.SeriesRef(10), p.At()) |
|
|
|
|
require.True(t, p.Next()) |
|
|
|
|
require.Equal(t, storage.SeriesRef(20), p.At()) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.NoError(t, p.Err()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
t.Run("seek", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10, 20}) |
|
|
|
|
require.Equal(t, 2, p.(*ListPostings).Len()) |
|
|
|
|
require.True(t, p.Seek(5)) |
|
|
|
|
require.Equal(t, storage.SeriesRef(10), p.At()) |
|
|
|
|
require.True(t, p.Seek(5)) |
|
|
|
@ -1315,23 +1330,30 @@ func TestListPostings(t *testing.T) { |
|
|
|
|
require.Equal(t, storage.SeriesRef(20), p.At()) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.NoError(t, p.Err()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
t.Run("seek lest than last", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10, 20, 30, 40, 50}) |
|
|
|
|
require.Equal(t, 5, p.(*ListPostings).Len()) |
|
|
|
|
require.True(t, p.Seek(45)) |
|
|
|
|
require.Equal(t, storage.SeriesRef(50), p.At()) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
t.Run("seek exactly last", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10, 20, 30, 40, 50}) |
|
|
|
|
require.Equal(t, 5, p.(*ListPostings).Len()) |
|
|
|
|
require.True(t, p.Seek(50)) |
|
|
|
|
require.Equal(t, storage.SeriesRef(50), p.At()) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
t.Run("seek more than last", func(t *testing.T) { |
|
|
|
|
p := NewListPostings([]storage.SeriesRef{10, 20, 30, 40, 50}) |
|
|
|
|
require.Equal(t, 5, p.(*ListPostings).Len()) |
|
|
|
|
require.False(t, p.Seek(60)) |
|
|
|
|
require.False(t, p.Next()) |
|
|
|
|
require.Equal(t, 0, p.(*ListPostings).Len()) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|