github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/querier/queryrange/queryrangebase/series_test.go (about)

     1  package queryrangebase
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/prometheus/prometheus/promql/parser"
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/grafana/loki/pkg/logproto"
    10  )
    11  
    12  func Test_ResponseToSamples(t *testing.T) {
    13  	input := &PrometheusResponse{
    14  		Data: PrometheusData{
    15  			ResultType: string(parser.ValueTypeMatrix),
    16  			Result: []SampleStream{
    17  				{
    18  					Labels: []logproto.LabelAdapter{
    19  						{Name: "a", Value: "a1"},
    20  						{Name: "b", Value: "b1"},
    21  					},
    22  					Samples: []logproto.LegacySample{
    23  						{
    24  							Value:       1,
    25  							TimestampMs: 1,
    26  						},
    27  						{
    28  							Value:       2,
    29  							TimestampMs: 2,
    30  						},
    31  					},
    32  				},
    33  				{
    34  					Labels: []logproto.LabelAdapter{
    35  						{Name: "a", Value: "a1"},
    36  						{Name: "b", Value: "b1"},
    37  					},
    38  					Samples: []logproto.LegacySample{
    39  						{
    40  							Value:       8,
    41  							TimestampMs: 1,
    42  						},
    43  						{
    44  							Value:       9,
    45  							TimestampMs: 2,
    46  						},
    47  					},
    48  				},
    49  			},
    50  		},
    51  	}
    52  
    53  	stream, err := ResponseToSamples(input)
    54  	require.Nil(t, err)
    55  	set := NewSeriesSet(stream)
    56  
    57  	setCt := 0
    58  
    59  	for set.Next() {
    60  		iter := set.At().Iterator()
    61  		require.Nil(t, set.Err())
    62  
    63  		sampleCt := 0
    64  		for iter.Next() {
    65  			ts, v := iter.At()
    66  			require.Equal(t, input.Data.Result[setCt].Samples[sampleCt].TimestampMs, ts)
    67  			require.Equal(t, input.Data.Result[setCt].Samples[sampleCt].Value, v)
    68  			sampleCt++
    69  		}
    70  		require.Equal(t, len(input.Data.Result[setCt].Samples), sampleCt)
    71  		setCt++
    72  	}
    73  
    74  	require.Equal(t, len(input.Data.Result), setCt)
    75  
    76  }