github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/querier/batch/merge_test.go (about)

     1  package batch
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/prometheus/common/model"
     8  
     9  	"github.com/cortexproject/cortex/pkg/chunk/encoding"
    10  )
    11  
    12  func TestMergeIter(t *testing.T) {
    13  	forEncodings(t, func(t *testing.T, enc encoding.Encoding) {
    14  		chunk1 := mkGenericChunk(t, 0, 100, enc)
    15  		chunk2 := mkGenericChunk(t, model.TimeFromUnix(25), 100, enc)
    16  		chunk3 := mkGenericChunk(t, model.TimeFromUnix(50), 100, enc)
    17  		chunk4 := mkGenericChunk(t, model.TimeFromUnix(75), 100, enc)
    18  		chunk5 := mkGenericChunk(t, model.TimeFromUnix(100), 100, enc)
    19  
    20  		iter := newMergeIterator([]GenericChunk{chunk1, chunk2, chunk3, chunk4, chunk5})
    21  		testIter(t, 200, newIteratorAdapter(iter))
    22  
    23  		iter = newMergeIterator([]GenericChunk{chunk1, chunk2, chunk3, chunk4, chunk5})
    24  		testSeek(t, 200, newIteratorAdapter(iter))
    25  	})
    26  }
    27  
    28  func TestMergeHarder(t *testing.T) {
    29  	forEncodings(t, func(t *testing.T, enc encoding.Encoding) {
    30  		var (
    31  			numChunks = 24 * 15
    32  			chunks    = make([]GenericChunk, 0, numChunks)
    33  			from      = model.Time(0)
    34  			offset    = 30
    35  			samples   = 100
    36  		)
    37  		for i := 0; i < numChunks; i++ {
    38  			chunks = append(chunks, mkGenericChunk(t, from, samples, enc))
    39  			from = from.Add(time.Duration(offset) * time.Second)
    40  		}
    41  		iter := newMergeIterator(chunks)
    42  		testIter(t, offset*numChunks+samples-offset, newIteratorAdapter(iter))
    43  
    44  		iter = newMergeIterator(chunks)
    45  		testSeek(t, offset*numChunks+samples-offset, newIteratorAdapter(iter))
    46  	})
    47  }