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

Function TestSpansetExpressionOperators

pkg/traceql/parse_test.go:645–681  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

643}
644
645func TestSpansetExpressionOperators(t *testing.T) {
646 tests := []struct {
647 in string
648 expected SpansetOperation
649 expectedStr string
650 }{
651 {in: "{ true } && { false }", expected: newSpansetOperation(OpSpansetAnd, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) && ({ false })"},
652 {in: "{ true } > { false }", expected: newSpansetOperation(OpSpansetChild, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) > ({ false })"},
653 {in: "{ true } < { false }", expected: newSpansetOperation(OpSpansetParent, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) < ({ false })"},
654 {in: "{ true } >> { false }", expected: newSpansetOperation(OpSpansetDescendant, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) >> ({ false })"},
655 {in: "{ true } << { false }", expected: newSpansetOperation(OpSpansetAncestor, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) << ({ false })"},
656 {in: "{ true } || { false }", expected: newSpansetOperation(OpSpansetUnion, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) || ({ false })"},
657 {in: "{ true } ~ { false }", expected: newSpansetOperation(OpSpansetSibling, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) ~ ({ false })"},
658 // this test was added to highlight the one shift/reduce conflict in the grammar. this could also be parsed as two spanset pipelines &&ed together.
659 {in: "({ true }) && ({ false })", expected: newSpansetOperation(OpSpansetAnd, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) && ({ false })"},
660 {in: "{ true } !> { false }", expected: newSpansetOperation(OpSpansetNotChild, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !> ({ false })"},
661 {in: "{ true } !< { false }", expected: newSpansetOperation(OpSpansetNotParent, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !< ({ false })"},
662 {in: "{ true } !>> { false }", expected: newSpansetOperation(OpSpansetNotDescendant, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !>> ({ false })"},
663 {in: "{ true } !<< { false }", expected: newSpansetOperation(OpSpansetNotAncestor, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !<< ({ false })"},
664 {in: "{ true } !~ { false }", expected: newSpansetOperation(OpSpansetNotSibling, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) !~ ({ false })"},
665 {in: "{ true } &> { false }", expected: newSpansetOperation(OpSpansetUnionChild, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &> ({ false })"},
666 {in: "{ true } &< { false }", expected: newSpansetOperation(OpSpansetUnionParent, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &< ({ false })"},
667 {in: "{ true } &>> { false }", expected: newSpansetOperation(OpSpansetUnionDescendant, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &>> ({ false })"},
668 {in: "{ true } &<< { false }", expected: newSpansetOperation(OpSpansetUnionAncestor, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &<< ({ false })"},
669 {in: "{ true } &~ { false }", expected: newSpansetOperation(OpSpansetUnionSibling, newSpansetFilter(NewStaticBool(true)), newSpansetFilter(NewStaticBool(false))), expectedStr: "({ true }) &~ ({ false })"},
670 }
671
672 for _, tc := range tests {
673 t.Run(tc.in, func(t *testing.T) {
674 actual, err := Parse(tc.in)
675
676 require.NoError(t, err)
677 require.Equal(t, newRootExpr(newPipeline(tc.expected)), actual)
678 require.Equal(t, tc.expectedStr, actual.String())
679 })
680 }
681}
682
683func TestScalarExpressionErrors(t *testing.T) {
684 tests := []struct {

Callers

nothing calls this directly

Calls 9

newSpansetOperationFunction · 0.85
newSpansetFilterFunction · 0.85
NewStaticBoolFunction · 0.85
ParseFunction · 0.85
newRootExprFunction · 0.85
newPipelineFunction · 0.85
RunMethod · 0.45
EqualMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected