mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-14 17:44:06 -08:00
tests and new -> original proto mapping util
Signed-off-by: Nicolás Pazos <npazosmendez@gmail.com>
This commit is contained in:
parent
91bdd93956
commit
005ba7ac97
|
@ -888,3 +888,37 @@ func DecodeReducedWriteRequest(r io.Reader) (*prompb.WriteRequestWithRefs, error
|
||||||
|
|
||||||
return &req, nil
|
return &req, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReducedWriteRequestToWriteRequest(redReq *prompb.WriteRequestWithRefs) (*prompb.WriteRequest, error) {
|
||||||
|
req := &prompb.WriteRequest{
|
||||||
|
Timeseries: make([]prompb.TimeSeries, len(redReq.Timeseries)),
|
||||||
|
Metadata: redReq.Metadata,
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, rts := range redReq.Timeseries {
|
||||||
|
|
||||||
|
lbls := make([]prompb.Label, len(rts.Labels))
|
||||||
|
for j, l := range rts.Labels {
|
||||||
|
lbls[j].Name = redReq.StringSymbolTable[l.NameRef]
|
||||||
|
lbls[j].Value = redReq.StringSymbolTable[l.ValueRef]
|
||||||
|
}
|
||||||
|
|
||||||
|
exemplars := make([]prompb.Exemplar, len(rts.Exemplars))
|
||||||
|
for j, e := range rts.Exemplars {
|
||||||
|
exemplars[j].Value = e.Value
|
||||||
|
exemplars[j].Timestamp = e.Timestamp
|
||||||
|
exemplars[j].Labels = make([]prompb.Label, len(e.Labels))
|
||||||
|
for k, l := range e.Labels {
|
||||||
|
exemplars[j].Labels[k].Name = redReq.StringSymbolTable[l.NameRef]
|
||||||
|
exemplars[j].Labels[k].Value = redReq.StringSymbolTable[l.ValueRef]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
req.Timeseries[i].Labels = lbls
|
||||||
|
req.Timeseries[i].Samples = rts.Samples
|
||||||
|
req.Timeseries[i].Exemplars = exemplars
|
||||||
|
req.Timeseries[i].Histograms = rts.Histograms
|
||||||
|
|
||||||
|
}
|
||||||
|
return req, nil
|
||||||
|
}
|
||||||
|
|
|
@ -74,6 +74,59 @@ var writeRequestFixture = &prompb.WriteRequest{
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// writeRequestWithRefsFixture represents the same request as writeRequestFixture, but using the reduced representation.
|
||||||
|
var writeRequestWithRefsFixture = &prompb.WriteRequestWithRefs{
|
||||||
|
StringSymbolTable: map[uint64]string{
|
||||||
|
// Names
|
||||||
|
0: "__name__",
|
||||||
|
2: "b",
|
||||||
|
4: "baz",
|
||||||
|
6: "d",
|
||||||
|
8: "foo",
|
||||||
|
10: "f",
|
||||||
|
12: "h",
|
||||||
|
// Values
|
||||||
|
1: "test_metric1",
|
||||||
|
3: "c",
|
||||||
|
5: "qux",
|
||||||
|
7: "e",
|
||||||
|
9: "bar",
|
||||||
|
11: "g",
|
||||||
|
13: "i",
|
||||||
|
},
|
||||||
|
|
||||||
|
Timeseries: []prompb.ReducedTimeSeries{
|
||||||
|
{
|
||||||
|
Labels: []prompb.LabelRef{
|
||||||
|
{NameRef: 0, ValueRef: 1},
|
||||||
|
{NameRef: 2, ValueRef: 3},
|
||||||
|
{NameRef: 4, ValueRef: 5},
|
||||||
|
{NameRef: 6, ValueRef: 7},
|
||||||
|
{NameRef: 8, ValueRef: 9},
|
||||||
|
},
|
||||||
|
Samples: []prompb.Sample{{Value: 1, Timestamp: 0}},
|
||||||
|
Exemplars: []prompb.ExemplarRef{{Labels: []prompb.LabelRef{
|
||||||
|
{NameRef: 10, ValueRef: 11},
|
||||||
|
}, Value: 1, Timestamp: 0}},
|
||||||
|
Histograms: []prompb.Histogram{HistogramToHistogramProto(0, &testHistogram)},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Labels: []prompb.LabelRef{
|
||||||
|
{NameRef: 0, ValueRef: 1},
|
||||||
|
{NameRef: 2, ValueRef: 3},
|
||||||
|
{NameRef: 4, ValueRef: 5},
|
||||||
|
{NameRef: 6, ValueRef: 7},
|
||||||
|
{NameRef: 8, ValueRef: 9},
|
||||||
|
},
|
||||||
|
Samples: []prompb.Sample{{Value: 2, Timestamp: 1}},
|
||||||
|
Exemplars: []prompb.ExemplarRef{{Labels: []prompb.LabelRef{
|
||||||
|
{NameRef: 12, ValueRef: 13},
|
||||||
|
}, Value: 2, Timestamp: 1}},
|
||||||
|
Histograms: []prompb.Histogram{HistogramToHistogramProto(1, &testHistogram)},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
func TestValidateLabelsAndMetricName(t *testing.T) {
|
func TestValidateLabelsAndMetricName(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
input []prompb.Label
|
input []prompb.Label
|
||||||
|
@ -525,7 +578,24 @@ func TestDecodeWriteRequest(t *testing.T) {
|
||||||
require.Equal(t, writeRequestFixture, actual)
|
require.Equal(t, writeRequestFixture, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNilHistogramProto(*testing.T) {
|
func TestDecodeReducedWriteRequest(t *testing.T) {
|
||||||
|
buf, _, err := buildReducedWriteRequest(writeRequestWithRefsFixture.Timeseries, writeRequestWithRefsFixture.StringSymbolTable, nil, nil)
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
actual, err := DecodeReducedWriteRequest(bytes.NewReader(buf))
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, writeRequestWithRefsFixture, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestReducedWriteRequestToWriteRequest(t *testing.T) {
|
||||||
|
actual, err := ReducedWriteRequestToWriteRequest(writeRequestWithRefsFixture)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, writeRequestFixture, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNilHistogramProto(t *testing.T) {
|
||||||
// This function will panic if it impromperly handles nil
|
// This function will panic if it impromperly handles nil
|
||||||
// values, causing the test to fail.
|
// values, causing the test to fail.
|
||||||
HistogramProtoToHistogram(prompb.Histogram{})
|
HistogramProtoToHistogram(prompb.Histogram{})
|
||||||
|
|
Loading…
Reference in a new issue