mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-13 06:47:28 -08:00
Fix aggregation grouping key calculation.
This commit is contained in:
parent
79834edcb5
commit
645cf57bed
|
@ -376,6 +376,7 @@ func (node *VectorAggregation) labelsToGroupingKey(labels clientmodel.Metric) ui
|
||||||
summer := fnv.New64a()
|
summer := fnv.New64a()
|
||||||
for _, label := range node.groupBy {
|
for _, label := range node.groupBy {
|
||||||
fmt.Fprint(summer, labels[label])
|
fmt.Fprint(summer, labels[label])
|
||||||
|
fmt.Fprint(summer, []byte{0})
|
||||||
}
|
}
|
||||||
|
|
||||||
return summer.Sum64()
|
return summer.Sum64()
|
||||||
|
|
|
@ -184,6 +184,27 @@ var testMatrix = ast.Matrix{
|
||||||
},
|
},
|
||||||
Values: append(getTestValueStream(0, 90, 10, testStartTime), getTestValueStream(0, 0, 10, testStartTime.Add(testSampleInterval*10))...),
|
Values: append(getTestValueStream(0, 90, 10, testStartTime), getTestValueStream(0, 0, 10, testStartTime.Add(testSampleInterval*10))...),
|
||||||
},
|
},
|
||||||
|
// For label-key grouping regression test.
|
||||||
|
{
|
||||||
|
Metric: clientmodel.COWMetric{
|
||||||
|
Metric: clientmodel.Metric{
|
||||||
|
clientmodel.MetricNameLabel: "label_grouping_test",
|
||||||
|
"a": "aa",
|
||||||
|
"b": "bb",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Values: getTestValueStream(0, 100, 10, testStartTime),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Metric: clientmodel.COWMetric{
|
||||||
|
Metric: clientmodel.Metric{
|
||||||
|
clientmodel.MetricNameLabel: "label_grouping_test",
|
||||||
|
"a": "a",
|
||||||
|
"b": "abb",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Values: getTestValueStream(0, 200, 20, testStartTime),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var testVector = getTestVectorFromTestMatrix(testMatrix)
|
var testVector = getTestVectorFromTestMatrix(testMatrix)
|
||||||
|
|
|
@ -553,6 +553,8 @@ func TestExpressions(t *testing.T) {
|
||||||
`testcounter_reset_end => 0 @[%v]`,
|
`testcounter_reset_end => 0 @[%v]`,
|
||||||
`testcounter_reset_middle => 50 @[%v]`,
|
`testcounter_reset_middle => 50 @[%v]`,
|
||||||
`x{y="testvalue"} => 100 @[%v]`,
|
`x{y="testvalue"} => 100 @[%v]`,
|
||||||
|
`label_grouping_test{a="a", b="abb"} => 200 @[%v]`,
|
||||||
|
`label_grouping_test{a="aa", b="bb"} => 100 @[%v]`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -641,6 +643,14 @@ func TestExpressions(t *testing.T) {
|
||||||
expr: `sum(http_requests) offset 5m`,
|
expr: `sum(http_requests) offset 5m`,
|
||||||
shouldFail: true,
|
shouldFail: true,
|
||||||
},
|
},
|
||||||
|
// Regression test for missing separator byte in labelsToGroupingKey.
|
||||||
|
{
|
||||||
|
expr: `sum(label_grouping_test) by (a, b)`,
|
||||||
|
output: []string{
|
||||||
|
`{a="a", b="abb"} => 200 @[%v]`,
|
||||||
|
`{a="aa", b="bb"} => 100 @[%v]`,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
storage, closer := newTestStorage(t)
|
storage, closer := newTestStorage(t)
|
||||||
|
|
Loading…
Reference in a new issue