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

Function TestPipelines

pkg/traceql/parse_test.go:445–488  ·  pkg/traceql/parse_test.go::TestPipelines
(t *testing.T)

Source from the content-addressed store, hash-verified

443}
444
445func TestPipelines(t *testing.T) {
446 tests := []struct {
447 in string
448 expected Pipeline
449 expectedStr string
450 }{
451 {
452 in: "{ .a } | { .b }",
453 expected: newPipeline(
454 newSpansetFilter(NewAttribute("a")),
455 newSpansetFilter(NewAttribute("b")),
456 ),
457 expectedStr: "{ .a }|{ .b }",
458 },
459 {
460 in: "{ .a } | count() > 1",
461 expected: newPipeline(
462 newSpansetFilter(NewAttribute("a")),
463 newScalarFilter(OpGreater, newAggregate(aggregateCount, nil), NewStaticInt(1)),
464 ),
465 expectedStr: "{ .a }|(count()) > 1",
466 },
467 {
468 in: "{ .a } | by(.namespace) | coalesce() | avg(duration) = 1s ",
469 expected: newPipeline(
470 newSpansetFilter(NewAttribute("a")),
471 newGroupOperation(NewAttribute("namespace")),
472 newCoalesceOperation(),
473 newScalarFilter(OpEqual, newAggregate(aggregateAvg, NewIntrinsic(IntrinsicDuration)), NewStaticDuration(time.Second)),
474 ),
475 expectedStr: "{ .a }|by(.namespace)|coalesce()|(avg(duration)) = 1s",
476 },
477 }
478
479 for _, tc := range tests {
480 t.Run(tc.in, func(t *testing.T) {
481 actual, err := Parse(tc.in)
482
483 require.NoError(t, err)
484 require.Equal(t, newRootExpr(tc.expected), actual)
485 require.Equal(t, tc.expectedStr, actual.String())
486 })
487 }
488}
489
490func TestGroupCoalesceErrors(t *testing.T) {
491 tests := []struct {

Callers

nothing calls this directly

Calls 15

newPipelineFunction · 0.85
newSpansetFilterFunction · 0.85
NewAttributeFunction · 0.85
newScalarFilterFunction · 0.85
newAggregateFunction · 0.85
NewStaticIntFunction · 0.85
newGroupOperationFunction · 0.85
newCoalesceOperationFunction · 0.85
NewIntrinsicFunction · 0.85
NewStaticDurationFunction · 0.85
ParseFunction · 0.85
newRootExprFunction · 0.85

Tested by

no test coverage detected