grafana/pkg/services/live/remotewrite/remotewrite_test.go
2021-10-07 11:42:57 +03:00

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)
}