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  }