mirror of
https://github.com/hanzoai/traces.git
synced 2026-11-02 12:18:48 +00:00
* Add exemplars to TraceQL metric queries Add query hint Fix test Might work now fmt Almost there A few fixes Doc fix Drop percentage More more Consolidating fmt Fix tests More changes chlog Minor fix Exemplars in compare() and other fixes Fix test Improvements Bucketize ups Cleaning up Stuff Change benchmark Clean up Exemplar iterator Ditch predicate approach * Quit early predicate improvements * Docs * Post-review improvements * Consolidate hint checking * Empty exemplars cleanup * Not a map anymore * Split observe() and observeExemplar() * Minor fixes * Consolidate exemplar sampling * Some improvements * Reduce allocs * Remove unnecessary func * Review comments * Pass callback in Condition * Comment * Fix tests
129 lines
5.8 KiB
Go
129 lines
5.8 KiB
Go
package vparquet3
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/grafana/tempo/pkg/traceql"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCoalesceConditions(t *testing.T) {
|
|
tcs := []struct {
|
|
f *traceql.FetchSpansRequest
|
|
expected *traceql.FetchSpansRequest
|
|
}{
|
|
{
|
|
f: &traceql.FetchSpansRequest{},
|
|
expected: &traceql.FetchSpansRequest{},
|
|
},
|
|
{
|
|
f: &traceql.FetchSpansRequest{
|
|
AllConditions: true,
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
},
|
|
},
|
|
expected: &traceql.FetchSpansRequest{
|
|
AllConditions: true,
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
f: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNotEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
},
|
|
},
|
|
expected: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNone},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
f: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNotEqual, Operands: []traceql.Static{traceql.NewStaticString("bar")}},
|
|
},
|
|
},
|
|
expected: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNotEqual, Operands: []traceql.Static{traceql.NewStaticString("bar")}},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
f: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicKind), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNotEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
},
|
|
},
|
|
expected: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicKind), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNotEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
f: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNotEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpGreater, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
},
|
|
},
|
|
expected: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNone},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
f: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpGreater, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNotEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
},
|
|
},
|
|
expected: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNone},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
f: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicChildCount), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("bar")}},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNotEqual, Operands: []traceql.Static{traceql.NewStaticString("foo")}},
|
|
},
|
|
},
|
|
expected: &traceql.FetchSpansRequest{
|
|
Conditions: []traceql.Condition{
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicTraceRootService), Op: traceql.OpNone},
|
|
{Attribute: traceql.NewIntrinsic(traceql.IntrinsicChildCount), Op: traceql.OpEqual, Operands: []traceql.Static{traceql.NewStaticString("bar")}},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for i, tc := range tcs {
|
|
t.Run(fmt.Sprintf("test-%d", i), func(t *testing.T) {
|
|
coalesceConditions(tc.f)
|
|
require.Equal(t, tc.expected, tc.f)
|
|
})
|
|
}
|
|
}
|