Skip to content

Commit 5013ad7

Browse files
author
Vladimir Smirnov
authored
Merge pull request #469 from Peter-Sh/smartSummarize_fix_468
smartSummarize should expand wildcards in metric names
2 parents 5477f68 + 06d6d85 commit 5013ad7

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

expr/functions/smartSummarize/function.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package smartSummarize
22

33
import (
4+
"fmt"
45
"github.com/go-graphite/carbonapi/expr/consolidations"
56
"github.com/go-graphite/carbonapi/expr/helper"
67
"github.com/go-graphite/carbonapi/expr/interfaces"
@@ -66,7 +67,12 @@ func (f *smartSummarize) Do(e parser.Expr, from, until int64, values map[parser.
6667
results := make([]*types.MetricData, 0, len(args))
6768
for _, arg := range args {
6869

69-
name := e.ToString()
70+
name := fmt.Sprintf("smartSummarize(%s,'%s','%s'", arg.Name, e.Args()[1].StringValue(), summarizeFunction)
71+
if alignToInterval != "" {
72+
name += fmt.Sprintf(",'%s')", alignToInterval)
73+
} else {
74+
name += ")";
75+
}
7076

7177
r := types.MetricData{FetchResponse: pb.FetchResponse{
7278
Name: name,

expr/functions/smartSummarize/function_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,32 @@ func TestEvalSummarize(t *testing.T) {
8585
}
8686
}
8787

88+
func TestFunctionUseNameWithWildcards(t *testing.T) {
89+
tests := []th.MultiReturnEvalTestItem{
90+
{
91+
"smartSummarize(metric1.*,'1minute','last')",
92+
map[parser.MetricRequest][]*types.MetricData{
93+
{"metric1.*", 0, 1}: {
94+
types.MakeMetricData("metric1.foo", generateValues(0, 240, 1), 1, 0),
95+
types.MakeMetricData("metric1.bar", generateValues(0, 240, 1), 1, 0),
96+
},
97+
},
98+
"smartSummarize",
99+
map[string][]*types.MetricData{
100+
"smartSummarize(metric1.foo,'1minute','last')": {types.MakeMetricData("smartSummarize(metric1.foo,'1minute','last')", []float64{59, 119, 179, 239}, 60, 0)},
101+
"smartSummarize(metric1.bar,'1minute','last')": {types.MakeMetricData("smartSummarize(metric1.bar,'1minute','last')", []float64{59, 119, 179, 239}, 60, 0)},
102+
},
103+
},
104+
}
105+
106+
for _, tt := range tests {
107+
testName := tt.Target
108+
t.Run(testName, func(t *testing.T) {
109+
th.TestMultiReturnEvalExpr(t, &tt)
110+
})
111+
}
112+
}
113+
88114
func generateValues(start, stop, step int64) (values []float64) {
89115
for i := start; i < stop; i += step {
90116
values = append(values, float64(i))

0 commit comments

Comments
 (0)