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

Function TestInstanceSearchMetrics

modules/livestore/instance_search_test.go:868–925  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

866}
867
868func TestInstanceSearchMetrics(t *testing.T) {
869 t.Parallel()
870 i, ls := defaultInstance(t)
871
872 numTraces := uint32(500)
873 numBytes := uint64(0)
874 for j := uint32(0); j < numTraces; j++ {
875 id := test.ValidTraceID(nil)
876
877 // Trace bytes have to be pushed as raw tempopb.Trace bytes
878 trace := test.MakeTrace(10, id)
879
880 traceBytes, err := trace.Marshal()
881 require.NoError(t, err)
882
883 // Create a push request for livestore
884 req := &tempopb.PushBytesRequest{
885 Traces: []tempopb.PreallocBytes{{Slice: traceBytes}},
886 Ids: [][]byte{id},
887 }
888 i.pushBytes(t.Context(), time.Now(), req)
889 }
890
891 search := func() *tempopb.SearchMetrics {
892 sr, err := i.Search(t.Context(), &tempopb.SearchRequest{
893 Query: fmt.Sprintf(`{ span.%s = "%s" }`, "foo", "bar"),
894 })
895 require.NoError(t, err)
896 return sr.Metrics
897 }
898
899 // Live traces
900 m := search()
901 require.Equal(t, uint32(0), m.InspectedTraces) // we don't search live traces
902 require.Equal(t, uint64(0), m.InspectedBytes) // we don't search live traces
903
904 // Test after appending to WAL
905 drained, err := i.cutIdleTraces(t.Context(), true)
906 require.NoError(t, err)
907 require.True(t, drained, "should drain live traces in one iteration")
908 m = search()
909 require.Less(t, numBytes, m.InspectedBytes)
910
911 // Test after cutting new headblock
912 blockID, err := i.cutBlocks(t.Context(), true)
913 require.NoError(t, err)
914 m = search()
915 require.Less(t, numBytes, m.InspectedBytes)
916
917 // Test after completing a block
918 _, err = i.completeBlock(t.Context(), blockID)
919 require.NoError(t, err)
920 m = search()
921 require.Less(t, numBytes, m.InspectedBytes)
922
923 err = services.StopAndAwaitTerminated(t.Context(), ls)
924 require.NoError(t, err)
925}

Callers

nothing calls this directly

Calls 13

ValidTraceIDFunction · 0.92
MakeTraceFunction · 0.92
defaultInstanceFunction · 0.85
cutIdleTracesMethod · 0.80
cutBlocksMethod · 0.80
completeBlockMethod · 0.80
MarshalMethod · 0.65
pushBytesMethod · 0.65
ContextMethod · 0.65
NowMethod · 0.65
SearchMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected