mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
88 lines
3.0 KiB
Go
88 lines
3.0 KiB
Go
package remotewrite
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/data"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestTsFromFrames(t *testing.T) {
|
|
t1 := time.Now()
|
|
t2 := time.Now().Add(time.Second)
|
|
frame := data.NewFrame("test",
|
|
data.NewField("time", map[string]string{"test": "yes"}, []time.Time{t1, t2}),
|
|
data.NewField("value", map[string]string{"test": "yes"}, []float64{1.0, 2.0}),
|
|
)
|
|
ts := TimeSeriesFromFrames(frame)
|
|
require.Len(t, ts, 1)
|
|
require.Len(t, ts[0].Samples, 2)
|
|
require.Equal(t, toSampleTime(t1), ts[0].Samples[0].Timestamp)
|
|
require.Equal(t, toSampleTime(t2), ts[0].Samples[1].Timestamp)
|
|
require.Len(t, ts[0].Labels, 2)
|
|
require.Equal(t, "test", ts[0].Labels[0].Name)
|
|
require.Equal(t, "yes", ts[0].Labels[0].Value)
|
|
require.Equal(t, "__name__", ts[0].Labels[1].Name)
|
|
require.Equal(t, "test_value", ts[0].Labels[1].Value)
|
|
}
|
|
|
|
func TestTsFromFramesMultipleSeries(t *testing.T) {
|
|
t1 := time.Now()
|
|
t2 := time.Now().Add(time.Second)
|
|
frame := data.NewFrame("test",
|
|
data.NewField("time", nil, []time.Time{t1, t2}),
|
|
data.NewField("value1", nil, []float64{1.0, 2.0}),
|
|
data.NewField("value2", nil, []bool{true, false}),
|
|
data.NewField("value3", nil, []float64{3.0, 4.0}),
|
|
)
|
|
ts := TimeSeriesFromFrames(frame)
|
|
require.Len(t, ts, 2)
|
|
require.Len(t, ts[0].Samples, 2)
|
|
require.Equal(t, toSampleTime(t1), ts[0].Samples[0].Timestamp)
|
|
require.Equal(t, toSampleTime(t2), ts[0].Samples[1].Timestamp)
|
|
require.Equal(t, 1.0, ts[0].Samples[0].Value)
|
|
require.Equal(t, 2.0, ts[0].Samples[1].Value)
|
|
require.Len(t, ts[1].Samples, 2)
|
|
require.Equal(t, toSampleTime(t1), ts[1].Samples[0].Timestamp)
|
|
require.Equal(t, toSampleTime(t2), ts[1].Samples[1].Timestamp)
|
|
require.Equal(t, 3.0, ts[1].Samples[0].Value)
|
|
require.Equal(t, 4.0, ts[1].Samples[1].Value)
|
|
}
|
|
|
|
func TestTsFromFramesMultipleFrames(t *testing.T) {
|
|
t1 := time.Now()
|
|
t2 := time.Now().Add(time.Second)
|
|
t3 := time.Now().Add(2 * time.Second)
|
|
t4 := time.Now().Add(3 * time.Second)
|
|
frame1 := data.NewFrame("test",
|
|
data.NewField("time", nil, []time.Time{t1, t2}),
|
|
data.NewField("value1", nil, []float64{1.0, 2.0}),
|
|
)
|
|
frame2 := data.NewFrame("test",
|
|
data.NewField("time", nil, []time.Time{t3, t4}),
|
|
data.NewField("value3", nil, []float64{3.0, 4.0}),
|
|
)
|
|
ts := TimeSeriesFromFrames(frame1, frame2)
|
|
require.Len(t, ts, 2)
|
|
require.Len(t, ts[0].Samples, 2)
|
|
require.Equal(t, toSampleTime(t1), ts[0].Samples[0].Timestamp)
|
|
require.Equal(t, toSampleTime(t2), ts[0].Samples[1].Timestamp)
|
|
require.Equal(t, 1.0, ts[0].Samples[0].Value)
|
|
require.Equal(t, 2.0, ts[0].Samples[1].Value)
|
|
require.Len(t, ts[1].Samples, 2)
|
|
require.Equal(t, toSampleTime(t3), ts[1].Samples[0].Timestamp)
|
|
require.Equal(t, toSampleTime(t4), ts[1].Samples[1].Timestamp)
|
|
require.Equal(t, 3.0, ts[1].Samples[0].Value)
|
|
require.Equal(t, 4.0, ts[1].Samples[1].Value)
|
|
}
|
|
|
|
func TestSerialize(t *testing.T) {
|
|
frame := data.NewFrame("test",
|
|
data.NewField("time", nil, []time.Time{time.Now(), time.Now().Add(time.Second)}),
|
|
data.NewField("value", nil, []float64{1.0, 2.0}),
|
|
)
|
|
_, err := Serialize(frame)
|
|
require.NoError(t, err)
|
|
}
|