cloudflare/pint

Public

mirrored from https://github.com/cloudflare/pintAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v0.17.2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

internal/parser/utils/vectorselector_test.go

66lines · modeblame

ef2a395fLukasz Mierzwa4 years ago1package utils_test
2
3import (
4"testing"
5
1be963afLukasz Mierzwa4 years ago6"github.com/stretchr/testify/require"
47088acdLukasz Mierzwa4 years ago7
ef2a395fLukasz Mierzwa4 years ago8"github.com/cloudflare/pint/internal/parser"
9"github.com/cloudflare/pint/internal/parser/utils"
10)
11
12func TestHasVectorSelector(t *testing.T) {
13type testCaseT struct {
14expr string
15output []string
16}
17
18testCases := []testCaseT{
19{
20expr: "foo",
21output: []string{"foo"},
22},
23{
24expr: "sum(foo)",
25output: []string{"foo"},
26},
27{
28expr: `foo{job="bar"}`,
29output: []string{`foo{job="bar"}`},
30},
31{
32expr: `rate(foo{job="bar"}[5m])`,
33output: []string{`foo{job="bar"}`},
34},
35{
36expr: `(foo{job="bar", a="b"}) / bar`,
37output: []string{`foo{a="b",job="bar"}`, "bar"},
38},
39{
40expr: `absent(rate(foo{job="bar"}[5m]))`,
41output: []string{`foo{job="bar"}`},
42},
43}
44
45for _, tc := range testCases {
46t.Run(tc.expr, func(t *testing.T) {
47n, err := parser.DecodeExpr(tc.expr)
48if err != nil {
49t.Error(err)
50t.FailNow()
51}
52vs := utils.HasVectorSelector(n)
53if len(vs) == 0 {
54if len(tc.output) > 0 {
55t.Errorf("HasVectorSelector() returned nil, expected %s", tc.output)
56}
57} else {
d00835a5Lukasz Mierzwa4 years ago58output := []string{}
ef2a395fLukasz Mierzwa4 years ago59for _, v := range vs {
60output = append(output, v.String())
61}
1be963afLukasz Mierzwa4 years ago62require.Equal(t, tc.output, output, "HasVectorSelector() returned wrong output")
ef2a395fLukasz Mierzwa4 years ago63}
64})
65}
66}