github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/merger_test.go (about) 1 package util 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/prometheus/common/model" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestMergeSampleSets(t *testing.T) { 12 now := model.Now() 13 sample1 := model.SamplePair{Timestamp: now, Value: 1} 14 sample2 := model.SamplePair{Timestamp: now.Add(1 * time.Second), Value: 2} 15 sample3 := model.SamplePair{Timestamp: now.Add(4 * time.Second), Value: 3} 16 sample4 := model.SamplePair{Timestamp: now.Add(8 * time.Second), Value: 7} 17 18 for _, c := range []struct { 19 samplesA []model.SamplePair 20 samplesB []model.SamplePair 21 expected []model.SamplePair 22 }{ 23 { 24 samplesA: []model.SamplePair{}, 25 samplesB: []model.SamplePair{}, 26 expected: []model.SamplePair{}, 27 }, 28 { 29 samplesA: []model.SamplePair{sample1}, 30 samplesB: []model.SamplePair{}, 31 expected: []model.SamplePair{sample1}, 32 }, 33 { 34 samplesA: []model.SamplePair{}, 35 samplesB: []model.SamplePair{sample1}, 36 expected: []model.SamplePair{sample1}, 37 }, 38 { 39 samplesA: []model.SamplePair{sample1}, 40 samplesB: []model.SamplePair{sample1}, 41 expected: []model.SamplePair{sample1}, 42 }, 43 { 44 samplesA: []model.SamplePair{sample1, sample2, sample3}, 45 samplesB: []model.SamplePair{sample1, sample3, sample4}, 46 expected: []model.SamplePair{sample1, sample2, sample3, sample4}, 47 }, 48 } { 49 samples := MergeSampleSets(c.samplesA, c.samplesB) 50 require.Equal(t, c.expected, samples) 51 } 52 } 53 54 func TestMergeNSampleSets(t *testing.T) { 55 now := model.Now() 56 sample1 := model.SamplePair{Timestamp: now, Value: 1} 57 sample2 := model.SamplePair{Timestamp: now.Add(1 * time.Second), Value: 2} 58 sample3 := model.SamplePair{Timestamp: now.Add(4 * time.Second), Value: 3} 59 sample4 := model.SamplePair{Timestamp: now.Add(8 * time.Second), Value: 7} 60 61 for _, c := range []struct { 62 sampleSets [][]model.SamplePair 63 expected []model.SamplePair 64 }{ 65 { 66 sampleSets: [][]model.SamplePair{{}, {}, {}}, 67 expected: []model.SamplePair{}, 68 }, 69 { 70 sampleSets: [][]model.SamplePair{ 71 {sample1, sample2}, 72 {sample2}, 73 {sample1, sample3, sample4}, 74 }, 75 expected: []model.SamplePair{sample1, sample2, sample3, sample4}, 76 }, 77 } { 78 samples := MergeNSampleSets(c.sampleSets...) 79 require.Equal(t, c.expected, samples) 80 } 81 }