mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-23 20:37:12 +01:00
189 lines
3.6 KiB
Go
189 lines
3.6 KiB
Go
|
package prompb_test
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/prompb"
|
||
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal"
|
||
|
)
|
||
|
|
||
|
func TestWriteRequestUnmarshalProtobuf(t *testing.T) {
|
||
|
var wr prompb.WriteRequest
|
||
|
|
||
|
f := func(data []byte) {
|
||
|
t.Helper()
|
||
|
|
||
|
// Verify that the marshaled protobuf is unmarshaled properly
|
||
|
if err := wr.UnmarshalProtobuf(data); err != nil {
|
||
|
t.Fatalf("cannot unmarshal protobuf: %s", err)
|
||
|
}
|
||
|
|
||
|
// Compare the unmarshaled wr with the original wrm.
|
||
|
var wrm prompbmarshal.WriteRequest
|
||
|
for _, ts := range wr.Timeseries {
|
||
|
var labels []prompbmarshal.Label
|
||
|
for _, label := range ts.Labels {
|
||
|
labels = append(labels, prompbmarshal.Label{
|
||
|
Name: label.Name,
|
||
|
Value: label.Value,
|
||
|
})
|
||
|
}
|
||
|
var samples []prompbmarshal.Sample
|
||
|
for _, sample := range ts.Samples {
|
||
|
samples = append(samples, prompbmarshal.Sample{
|
||
|
Value: sample.Value,
|
||
|
Timestamp: sample.Timestamp,
|
||
|
})
|
||
|
}
|
||
|
wrm.Timeseries = append(wrm.Timeseries, prompbmarshal.TimeSeries{
|
||
|
Labels: labels,
|
||
|
Samples: samples,
|
||
|
})
|
||
|
}
|
||
|
dataResult, err := wrm.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatalf("unexpected error: %s", err)
|
||
|
}
|
||
|
if !bytes.Equal(dataResult, data) {
|
||
|
t.Fatalf("unexpected data obtained after marshaling\ngot\n%X\nwant\n%X", dataResult, data)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
wrm := &prompbmarshal.WriteRequest{}
|
||
|
data, err := wrm.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatalf("unexpected error")
|
||
|
}
|
||
|
f(data)
|
||
|
|
||
|
wrm = &prompbmarshal.WriteRequest{}
|
||
|
wrm.Timeseries = []prompbmarshal.TimeSeries{
|
||
|
{
|
||
|
Labels: []prompbmarshal.Label{
|
||
|
{
|
||
|
Name: "__name__",
|
||
|
Value: "process_cpu_seconds_total",
|
||
|
},
|
||
|
{
|
||
|
Name: "instance",
|
||
|
Value: "host-123:4567",
|
||
|
},
|
||
|
{
|
||
|
Name: "job",
|
||
|
Value: "node-exporter",
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
data, err = wrm.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatalf("unexpected error")
|
||
|
}
|
||
|
f(data)
|
||
|
|
||
|
wrm = &prompbmarshal.WriteRequest{}
|
||
|
wrm.Timeseries = []prompbmarshal.TimeSeries{
|
||
|
{
|
||
|
Samples: []prompbmarshal.Sample{
|
||
|
{
|
||
|
Value: 123.3434,
|
||
|
Timestamp: 8939432423,
|
||
|
},
|
||
|
{
|
||
|
Value: -123.3434,
|
||
|
Timestamp: 18939432423,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
data, err = wrm.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatalf("unexpected error")
|
||
|
}
|
||
|
f(data)
|
||
|
|
||
|
wrm = &prompbmarshal.WriteRequest{}
|
||
|
wrm.Timeseries = []prompbmarshal.TimeSeries{
|
||
|
{
|
||
|
Labels: []prompbmarshal.Label{
|
||
|
{
|
||
|
Name: "__name__",
|
||
|
Value: "process_cpu_seconds_total",
|
||
|
},
|
||
|
{
|
||
|
Name: "instance",
|
||
|
Value: "host-123:4567",
|
||
|
},
|
||
|
{
|
||
|
Name: "job",
|
||
|
Value: "node-exporter",
|
||
|
},
|
||
|
},
|
||
|
Samples: []prompbmarshal.Sample{
|
||
|
{
|
||
|
Value: 123.3434,
|
||
|
Timestamp: 8939432423,
|
||
|
},
|
||
|
{
|
||
|
Value: -123.3434,
|
||
|
Timestamp: 18939432423,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
data, err = wrm.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatalf("unexpected error")
|
||
|
}
|
||
|
f(data)
|
||
|
|
||
|
wrm = &prompbmarshal.WriteRequest{}
|
||
|
wrm.Timeseries = []prompbmarshal.TimeSeries{
|
||
|
{
|
||
|
Labels: []prompbmarshal.Label{
|
||
|
{
|
||
|
Name: "__name__",
|
||
|
Value: "process_cpu_seconds_total",
|
||
|
},
|
||
|
{
|
||
|
Name: "instance",
|
||
|
Value: "host-123:4567",
|
||
|
},
|
||
|
{
|
||
|
Name: "job",
|
||
|
Value: "node-exporter",
|
||
|
},
|
||
|
},
|
||
|
Samples: []prompbmarshal.Sample{
|
||
|
{
|
||
|
Value: 123.3434,
|
||
|
Timestamp: 8939432423,
|
||
|
},
|
||
|
{
|
||
|
Value: -123.3434,
|
||
|
Timestamp: 18939432423,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
Labels: []prompbmarshal.Label{
|
||
|
{
|
||
|
Name: "foo",
|
||
|
Value: "bar",
|
||
|
},
|
||
|
},
|
||
|
Samples: []prompbmarshal.Sample{
|
||
|
{
|
||
|
Value: 9873,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
data, err = wrm.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatalf("unexpected error")
|
||
|
}
|
||
|
f(data)
|
||
|
}
|