(t *testing.T)
| 866 | } |
| 867 | |
| 868 | func 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 | } |
nothing calls this directly
no test coverage detected