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

Function TestCombinerKeepsMostRecent

pkg/traceql/combine_test.go:272–319  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

270}
271
272func TestCombinerKeepsMostRecent(t *testing.T) {
273 totalTraces := 10
274 keepMostRecent := 5
275 combiner := NewMetadataCombiner(keepMostRecent, true).(*mostRecentCombiner)
276
277 // make traces
278 traces := make([]*Spanset, totalTraces)
279 for i := 0; i < totalTraces; i++ {
280 traceID, err := util.HexStringToTraceID(fmt.Sprintf("%d", i))
281 require.NoError(t, err)
282
283 traces[i] = &Spanset{
284 TraceID: traceID,
285 StartTimeUnixNanos: uint64(i) * uint64(time.Second),
286 }
287 }
288
289 // save off the most recent and reverse b/c the combiner returns most recent first
290 expected := make([]*tempopb.TraceSearchMetadata, 0, keepMostRecent)
291 for i := totalTraces - keepMostRecent; i < totalTraces; i++ {
292 expected = append(expected, asTraceSearchMetadata(traces[i]))
293 }
294 slices.Reverse(expected)
295
296 rand.Shuffle(totalTraces, func(i, j int) {
297 traces[i], traces[j] = traces[j], traces[i]
298 })
299
300 // add to combiner
301 for i := 0; i < totalTraces; i++ {
302 combiner.addSpanset(traces[i])
303 }
304
305 // test that the most recent are kept
306 actual := combiner.Metadata()
307 require.Equal(t, expected, actual)
308 require.Equal(t, keepMostRecent, combiner.Count())
309 require.Equal(t, expected[len(expected)-1].StartTimeUnixNano, combiner.OldestTimestampNanos())
310 for _, tr := range expected {
311 require.True(t, combiner.Exists(tr.TraceID))
312 }
313
314 // test MetadataAfter. 10 traces are added with start times 0-9. We want to get all traces that started after 7
315 afterSeconds := uint32(7)
316 expectedTracesCount := totalTraces - int(afterSeconds+1)
317 actualTraces := combiner.MetadataAfter(afterSeconds)
318 require.Equal(t, expectedTracesCount, len(actualTraces))
319}

Callers

nothing calls this directly

Calls 10

HexStringToTraceIDFunction · 0.92
NewMetadataCombinerFunction · 0.85
asTraceSearchMetadataFunction · 0.85
OldestTimestampNanosMethod · 0.80
addSpansetMethod · 0.65
MetadataMethod · 0.65
MetadataAfterMethod · 0.65
EqualMethod · 0.45
CountMethod · 0.45
ExistsMethod · 0.45

Tested by

no test coverage detected