MCPcopy
hub / github.com/grafana/tempo / TestFieldExpressionRewriter_VisitOrder

Function TestFieldExpressionRewriter_VisitOrder

pkg/traceql/ast_rewriter_test.go:188–246  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

186}
187
188func TestFieldExpressionRewriter_VisitOrder(t *testing.T) {
189 t.Run("BinaryOperation", func(t *testing.T) {
190 cases := []struct {
191 name string
192 query string
193 visitOrder []FieldExpression
194 }{
195 {
196 name: "simple",
197 query: `{ .attr1 = "val1" }`,
198 visitOrder: []FieldExpression{
199 Attribute{Name: "attr1"},
200 NewStaticString("val1"),
201 &BinaryOperation{Op: OpEqual},
202 },
203 },
204 {
205 name: "and",
206 query: `{ .attr1 = "val1" && .attr2 != "val2" }`,
207 visitOrder: []FieldExpression{
208 Attribute{Name: "attr1"},
209 NewStaticString("val1"),
210 &BinaryOperation{Op: OpEqual},
211 Attribute{Name: "attr2"},
212 NewStaticString("val2"),
213 &BinaryOperation{Op: OpNotEqual},
214 &BinaryOperation{Op: OpAnd},
215 },
216 },
217 {
218 name: "count",
219 query: `{} | count() > 11`,
220 visitOrder: []FieldExpression{
221 NewStaticBool(true),
222 nil,
223 NewStaticInt(11),
224 },
225 },
226 }
227
228 for _, tc := range cases {
229 t.Run(tc.name, func(t *testing.T) {
230 expr, err := Parse(tc.query)
231 require.NoError(t, err)
232
233 var index int
234 rw := &fieldExpressionRewriter{rewriteFunctions: []fieldExpressionRewriteFn{func(op FieldExpression) (FieldExpression, int) {
235 if index < len(tc.visitOrder) {
236 requireMatchingFieldExpression(t, op, tc.visitOrder[index])
237 }
238 index++
239 return op, 0
240 }}}
241 rw.RewriteRoot(expr)
242 require.Equal(t, len(tc.visitOrder), index, "visited element count mismatch")
243 })
244 }
245 })

Callers

nothing calls this directly

Calls 8

RewriteRootMethod · 0.95
NewStaticStringFunction · 0.85
NewStaticBoolFunction · 0.85
NewStaticIntFunction · 0.85
ParseFunction · 0.85
RunMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected