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/aggregation_test.go

154lines · modeblame

e6be01a8Lukasz Mierzwa4 years ago1package utils_test
2
3import (
4"testing"
5
1be963afLukasz Mierzwa4 years ago6"github.com/stretchr/testify/require"
47088acdLukasz Mierzwa4 years ago7
e6be01a8Lukasz Mierzwa4 years ago8"github.com/cloudflare/pint/internal/parser"
9"github.com/cloudflare/pint/internal/parser/utils"
10)
11
12func TestHasOuterAggregation(t *testing.T) {
13type testCaseT struct {
14expr string
b92428fbLukasz Mierzwa4 years ago15output []string
e6be01a8Lukasz Mierzwa4 years ago16}
17
18testCases := []testCaseT{
19{
20expr: "foo",
21},
22{
23expr: "sum(foo)",
b92428fbLukasz Mierzwa4 years ago24output: []string{"sum(foo)"},
e6be01a8Lukasz Mierzwa4 years ago25},
26{
27expr: "sum(foo) by(job)",
b92428fbLukasz Mierzwa4 years ago28output: []string{"sum by(job) (foo)"},
e6be01a8Lukasz Mierzwa4 years ago29},
30{
31expr: "sum(foo) without(job)",
b92428fbLukasz Mierzwa4 years ago32output: []string{"sum without(job) (foo)"},
e6be01a8Lukasz Mierzwa4 years ago33},
34{
35expr: "1 + sum(foo)",
b92428fbLukasz Mierzwa4 years ago36output: []string{"sum(foo)"},
37},
38{
39expr: "vector(0) or sum(foo)",
40output: []string{"sum(foo)"},
41},
42{
43expr: "sum(foo) or vector(0)",
44output: []string{"sum(foo)"},
e6be01a8Lukasz Mierzwa4 years ago45},
46{
47expr: "sum(foo) + sum(bar)",
b92428fbLukasz Mierzwa4 years ago48output: []string{"sum(foo)", "sum(bar)"},
e6be01a8Lukasz Mierzwa4 years ago49},
50{
51expr: "foo / on(bbb) sum(bar)",
52},
53{
54expr: "sum(foo) / on(bbb) sum(bar)",
b92428fbLukasz Mierzwa4 years ago55output: []string{"sum(foo)"},
56},
57{
58expr: "sum(foo) OR sum(bar) by(job)",
59output: []string{"sum(foo)", "sum by(job) (bar)"},
60},
61{
62expr: "foo OR sum(foo) OR sum(bar) by(job)",
63output: []string{"sum(foo)", "sum by(job) (bar)"},
64},
65{
66expr: "1 + sum(foo) by(job) + sum(foo) by(notjob)",
67output: []string{"sum by(job) (foo)", "sum by(notjob) (foo)"},
68},
69{
70expr: "sum(foo) by (job) > count(bar)",
71output: []string{"sum by(job) (foo)"},
72},
73{
74expr: "sum(foo) by (job) > count(foo) / 2 or sum(bar) by (job) > count(bar)",
75output: []string{"sum by(job) (foo)", "sum by(job) (bar)"},
76},
77{
78expr: "(foo unless on(instance, version, package) bar) and on(instance) (sum(enabled) by(instance) > 0)",
79output: []string{},
e6be01a8Lukasz Mierzwa4 years ago80},
3b6c7e83Lukasz Mierzwa4 years ago81{
82expr: "count(build_info) by (instance, version) != ignoring(bar) group_left(package) count(foo) by (instance, version, package)",
83output: []string{"count by(instance, version, package) (build_info)"},
84},
85{
86expr: "sum(foo) without() != on() group_left(instance) sum(vector(0))",
87output: []string{"sum without() (foo)"},
88},
89{
90expr: "sum(foo) != on() group_right(instance) sum(vector(0))",
91output: []string{"sum by(instance) (vector(0))"},
92},
4ad037d8Lukasz Mierzwa4 years ago93{
94expr: "min(foo) by(bar) and max by(bar) (foo)",
95output: []string{"min by(bar) (foo)"},
96},
97{
98expr: "max(foo)",
99output: []string{"max(foo)"},
100},
101{
102expr: "avg(foo) by(bar)",
103output: []string{"avg by(bar) (foo)"},
104},
105{
106expr: "group(foo)",
107output: []string{"group(foo)"},
108},
109{
110expr: "stddev(foo)",
111output: []string{"stddev(foo)"},
112},
113{
114expr: "(stdvar(foo))",
115output: []string{"stdvar(foo)"},
116},
117{
118expr: `(1 - count_values("job", foo))`,
119output: []string{`count_values("job", foo)`},
120},
121{
122expr: "(topk(5, foo))",
123},
124{
125expr: "(bottomk(5, foo))",
126},
127{
128expr: "(quantile(0.9, foo))",
129output: []string{"quantile(0.9, foo)"},
130},
e6be01a8Lukasz Mierzwa4 years ago131}
132
133for _, tc := range testCases {
134t.Run(tc.expr, func(t *testing.T) {
135n, err := parser.DecodeExpr(tc.expr)
136if err != nil {
137t.Error(err)
138t.FailNow()
139}
b92428fbLukasz Mierzwa4 years ago140aggs := utils.HasOuterAggregation(n)
141if len(aggs) == 0 {
142if len(tc.output) > 0 {
143t.Errorf("HasOuterAggregation() returned nil, expected %s", tc.output)
e6be01a8Lukasz Mierzwa4 years ago144}
145} else {
d00835a5Lukasz Mierzwa4 years ago146output := []string{}
b92428fbLukasz Mierzwa4 years ago147for _, a := range aggs {
148output = append(output, a.String())
149}
1be963afLukasz Mierzwa4 years ago150require.Equal(t, tc.output, output, "HasOuterAggregation() returned wrong output")
e6be01a8Lukasz Mierzwa4 years ago151}
152})
153}
154}