fix(tsdb): fixes broken legend buidler for prometheus

closes #6456
This commit is contained in:
bergquist 2016-11-03 18:04:09 +01:00
parent 0059beb85d
commit 1afe0e90f9
2 changed files with 18 additions and 4 deletions

View File

@ -81,6 +81,10 @@ func (e *PrometheusExecutor) Execute(ctx context.Context, queries tsdb.QuerySlic
func formatLegend(metric pmodel.Metric, query *PrometheusQuery) string { func formatLegend(metric pmodel.Metric, query *PrometheusQuery) string {
reg, _ := regexp.Compile(`\{\{\s*(.+?)\s*\}\}`) reg, _ := regexp.Compile(`\{\{\s*(.+?)\s*\}\}`)
if query.LegendFormat == "" {
return metric.String()
}
result := reg.ReplaceAllFunc([]byte(query.LegendFormat), func(in []byte) []byte { result := reg.ReplaceAllFunc([]byte(query.LegendFormat), func(in []byte) []byte {
labelName := strings.Replace(string(in), "{{", "", 1) labelName := strings.Replace(string(in), "{{", "", 1)
labelName = strings.Replace(labelName, "}}", "", 1) labelName = strings.Replace(labelName, "}}", "", 1)
@ -108,10 +112,7 @@ func parseQuery(queries tsdb.QuerySlice, queryContext *tsdb.QueryContext) (*Prom
return nil, err return nil, err
} }
format, err := queryModel.Model.Get("legendFormat").String() format := queryModel.Model.Get("legendFormat").MustString("")
if err != nil {
return nil, err
}
start, err := queryContext.TimeRange.ParseFrom() start, err := queryContext.TimeRange.ParseFrom()
if err != nil { if err != nil {

View File

@ -22,5 +22,18 @@ func TestPrometheus(t *testing.T) {
So(formatLegend(metric, query), ShouldEqual, "legend backend mobile {{broken}}") So(formatLegend(metric, query), ShouldEqual, "legend backend mobile {{broken}}")
}) })
Convey("build full serie name", func() {
metric := map[p.LabelName]p.LabelValue{
p.LabelName("app"): p.LabelValue("backend"),
p.LabelName("device"): p.LabelValue("mobile"),
}
query := &PrometheusQuery{
LegendFormat: "",
}
So(formatLegend(metric, query), ShouldEqual, `http_request_total{app="backend", device="mobile"}`)
})
}) })
} }