From fb03f9a388774551a76ef1527f594c86302ec2fa Mon Sep 17 00:00:00 2001 From: Owen Williams Date: Fri, 8 Dec 2023 12:46:26 -0500 Subject: [PATCH] Start trying to write tests for promql --- model/textparse/openmetricsparse.go | 4 ++-- promql/parser/parse_test.go | 31 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/model/textparse/openmetricsparse.go b/model/textparse/openmetricsparse.go index 7361760532..7f1049fc2b 100644 --- a/model/textparse/openmetricsparse.go +++ b/model/textparse/openmetricsparse.go @@ -465,7 +465,7 @@ func (p *OpenMetricsParser) parseMetricSuffix(t token) (Entry, error) { if p.offsets[0] == -1 { return EntryInvalid, fmt.Errorf("metric name not set while parsing: %q", p.l.b[p.start:p.l.i]) } - + var err error p.val, err = p.getFloatValue(t, "metric") if err != nil { @@ -527,4 +527,4 @@ func (p *OpenMetricsParser) verifyMetricName(start, end int) error { return fmt.Errorf("metric name %q is not valid", m) } return nil -} \ No newline at end of file +} diff --git a/promql/parser/parse_test.go b/promql/parser/parse_test.go index 6c26445e38..d4f69f997b 100644 --- a/promql/parser/parse_test.go +++ b/promql/parser/parse_test.go @@ -473,6 +473,23 @@ var testExpr = []struct { StartPos: 1, }, }, + { + input: ` +{"some_metric"}`, + expected: &UnaryExpr{ + Op: ADD, + Expr: &VectorSelector{ + Name: "some_metric", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "some_metric"), + }, + PosRange: posrange.PositionRange{ + Start: 2, + End: 17, + }, + }, + StartPos: 1, + }, + }, { input: "", fail: true, @@ -1701,6 +1718,20 @@ var testExpr = []struct { }, }, }, + { + input: `{"foo", a="bc"}`, + expected: &VectorSelector{ + Name: "foo:bar", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "foo"), + MustLabelMatcher(labels.MatchEqual, "a", "bc"), + }, + PosRange: posrange.PositionRange{ + Start: 0, + End: 15, + }, + }, + }, { input: `foo{NaN='bc'}`, expected: &VectorSelector{