cloudflare/pint

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v0.71.5

Branches

Tags

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

Clone

HTTPS

Download ZIP

internal/parser/models_test.go

181lines · modecode

1package parser_test
2
3import (
4 "strconv"
5 "testing"
6
7 "github.com/prometheus/common/model"
8 "github.com/stretchr/testify/require"
9
10 "github.com/cloudflare/pint/internal/parser"
11)
12
13func newMustRule(content string) parser.Rule {
14 p := parser.NewParser(false, parser.PrometheusSchema, model.UTF8Validation)
15 rules, err := p.Parse([]byte(content))
16 if err != nil {
17 panic(err)
18 }
19 for _, rule := range rules {
20 return rule
21 }
22 return parser.Rule{}
23}
24
25func TestRuleIsIdentical(t *testing.T) {
26 type testCaseT struct {
27 a parser.Rule
28 b parser.Rule
29 equal bool
30 }
31
32 testCases := []testCaseT{
33 {
34 a: parser.Rule{},
35 b: parser.Rule{},
36 equal: true,
37 },
38 {
39 a: newMustRule("- record: foo\n expr: bob\n"),
40 b: newMustRule("- record: foo\n expr: bob\n"),
41 equal: true,
42 },
43 {
44 a: newMustRule("- record: bob\n expr: bob\n"),
45 b: newMustRule("- record: foo\n expr: bob\n"),
46 equal: false,
47 },
48 {
49 a: newMustRule("- record: foo\n expr: bob\n"),
50 b: newMustRule("- record: foo\n expr: bob\n labels: {}\n"),
51 equal: true,
52 },
53 {
54 a: newMustRule("- record: foo\n expr: bob\n labels: {}\n"),
55 b: newMustRule("- record: foo\n expr: bob\n"),
56 equal: true,
57 },
58 {
59 a: newMustRule("- record: foo\n expr: bob\n"),
60 b: newMustRule("- expr: bob\n record: foo\n"),
61 equal: true,
62 },
63 {
64 a: newMustRule("- record: foo\n expr: bob\n labels:\n foo: bar\n"),
65 b: newMustRule("- record: foo\n expr: bob\n"),
66 equal: false,
67 },
68 {
69 a: newMustRule("- record: foo\n expr: bob\n"),
70 b: newMustRule("- record: foo\n expr: bob\n labels:\n foo: bar\n"),
71 equal: false,
72 },
73 {
74 a: newMustRule("- record: foo\n expr: bob\n labels:\n bar: bar\n"),
75 b: newMustRule("- record: foo\n expr: bob\n labels:\n foo: bar\n"),
76 equal: false,
77 },
78 {
79 a: newMustRule("- record: foo\n expr: bob\n"),
80 b: newMustRule("- alert: foo\n expr: bob\n"),
81 equal: false,
82 },
83 {
84 a: newMustRule("- record: foo\n expr: bob\n"),
85 b: newMustRule("- record: foo\n xxx: bob\n"),
86 equal: false,
87 },
88 {
89 a: newMustRule("- record: foo\n expr: bob\n"),
90 b: newMustRule("- record: foo\n expr: bob == 0\n"),
91 equal: false,
92 },
93 {
94 a: newMustRule("- alert: foo\n expr: bob\n"),
95 b: newMustRule("- alert: foo\n expr: bob\n for: 4m\n"),
96 equal: false,
97 },
98 {
99 a: newMustRule("- alert: foo\n expr: bob\n"),
100 b: newMustRule("- record: foo\n expr: bob\n"),
101 equal: false,
102 },
103 {
104 a: newMustRule("- alert: foo\n expr: bob\n"),
105 b: newMustRule("- alert: foo\n expr: bob\n"),
106 equal: true,
107 },
108 {
109 a: newMustRule("- alert: foo\n expr: bob\n"),
110 b: newMustRule("- alert: foo\n expr: bob(\n"),
111 equal: false,
112 },
113 {
114 a: newMustRule("- alert: foo\n expr: bob\n"),
115 b: newMustRule("- alert: foo1\n expr: bob\n"),
116 equal: false,
117 },
118 {
119 a: newMustRule("- alert: foo\n expr: bob\n"),
120 b: newMustRule("- alert: foo\n expr: bob1\n"),
121 equal: false,
122 },
123 {
124 a: newMustRule("- alert: foo\n expr: bob\n for: 4m\n"),
125 b: newMustRule("- alert: foo\n expr: bob\n for: 5m\n"),
126 equal: false,
127 },
128 {
129 a: newMustRule("- alert: foo\n expr: bob\n for: 4m\n"),
130 b: newMustRule("- alert: foo\n expr: bob\n keep_firing_for: 4m\n"),
131 equal: false,
132 },
133 {
134 a: newMustRule("- alert: foo\n expr: bob\n keep_firing_for: 4m\n"),
135 b: newMustRule("- alert: foo\n expr: bob\n for: 4m\n"),
136 equal: false,
137 },
138 {
139 a: newMustRule("- alert: foo\n expr: bob\n keep_firing_for: 3m\n"),
140 b: newMustRule("- alert: foo\n expr: bob\n keep_firing_for: 4m\n"),
141 equal: false,
142 },
143 {
144 a: newMustRule("- alert: foo\n expr: bob\n"),
145 b: newMustRule("- alert: foo\n expr: bob\n labels:\n foo: bar\n"),
146 equal: false,
147 },
148 {
149 a: newMustRule("- alert: foo\n expr: bob\n labels:\n bar: bar\n"),
150 b: newMustRule("- alert: foo\n expr: bob\n labels:\n foo: bar\n"),
151 equal: false,
152 },
153 {
154 a: newMustRule("- alert: foo\n expr: bob\n"),
155 b: newMustRule("- alert: foo\n expr: bob\n annotations:\n foo: bar\n"),
156 equal: false,
157 },
158 {
159 a: newMustRule("- alert: foo\n expr: bob\n annotations:\n bar: bar\n"),
160 b: newMustRule("- alert: foo\n expr: bob\n annotations:\n foo: bar\n"),
161 equal: false,
162 },
163 {
164 a: newMustRule("- alert: foo\n # pint disable promql/series\n expr: bob\n"),
165 b: newMustRule("- alert: foo\n expr: bob\n"),
166 equal: false,
167 },
168 {
169 a: newMustRule("- alert: foo\n expr: bob\n"),
170 b: newMustRule("- alert: foo\n # pint disable promql/series\n expr: bob\n"),
171 equal: false,
172 },
173 }
174
175 for i, tc := range testCases {
176 t.Run(strconv.Itoa(i+1), func(t *testing.T) {
177 equal := tc.a.IsIdentical(tc.b)
178 require.Equal(t, tc.equal, equal)
179 })
180 }
181}
182