Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/pkg/storage/bloom/v1/dedupe_test.go

43 lines
1.1 KiB

package v1
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestMergeDedupeIter(t *testing.T) {
var (
numSeries = 100
numKeysPerSeries = 10000
data, _ = mkBasicSeriesWithBlooms(numSeries, numKeysPerSeries, 0, 0xffff, 0, 10000)
dataPtr = PointerSlice(data)
queriers = make([]PeekingIterator[*SeriesWithBloom], 4)
)
for i := 0; i < len(queriers); i++ {
queriers[i] = NewPeekingIter[*SeriesWithBloom](NewSliceIter[*SeriesWithBloom](dataPtr))
}
mbq := NewHeapIterForSeriesWithBloom(queriers...)
eq := func(a, b *SeriesWithBloom) bool {
return a.Series.Fingerprint == b.Series.Fingerprint
}
merge := func(a, _ *SeriesWithBloom) *SeriesWithBloom {
return a
}
deduper := NewDedupingIter[*SeriesWithBloom, *SeriesWithBloom](
eq,
id[*SeriesWithBloom],
merge,
NewPeekingIter[*SeriesWithBloom](mbq),
)
for i := 0; i < len(data); i++ {
require.True(t, deduper.Next())
exp := data[i].Series.Fingerprint
got := deduper.At().Series.Fingerprint
require.Equal(t, exp, got, "on iteration %d", i)
}
require.False(t, deduper.Next(), "finished iteration")
}