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

Function TestSearchByShortTraceID

tempodb/tempodb_search_test.go:2625–2764  ·  tempodb/tempodb_search_test.go::TestSearchByShortTraceID
(t *testing.T)

Source from the content-addressed store, hash-verified

2623}
2624
2625func TestSearchByShortTraceID(t *testing.T) {
2626 for _, v := range encoding.AllEncodingsForWrites() {
2627 blockVersion := v.Version()
2628
2629 tempDir := t.TempDir()
2630 traceID := make([]byte, 8) // short trace ID
2631 _, err := crand.Read(traceID)
2632 require.NoError(t, err)
2633 traceID = append(make([]byte, 8), traceID...) // adding leading zeros to make it 16 bytes
2634
2635 r, w, c, err := New(testingConfig(tempDir, blockVersion, nil), nil, log.NewNopLogger())
2636 require.NoError(t, err)
2637
2638 err = c.EnableCompaction(context.Background(), testingCompactorConfig, &mockSharder{}, &mockOverrides{})
2639 require.NoError(t, err)
2640
2641 ctx := t.Context()
2642 r.EnablePolling(ctx, &mockJobSharder{}, false)
2643 wantID, wantTr, start, end, wantMeta := makeExpectedTrace(traceID)
2644
2645 // Write to wal
2646 wal := w.WAL()
2647
2648 meta := &backend.BlockMeta{BlockID: backend.NewUUID(), TenantID: testTenantID}
2649 head, err := wal.NewBlock(meta, model.CurrentEncoding)
2650 require.NoError(t, err)
2651 dec := model.MustNewSegmentDecoder(model.CurrentEncoding)
2652
2653 totalTraces := 50
2654 wantTrIdx := rand.Intn(totalTraces) // nolint:gosec // G404: Use of weak random number generator
2655 for i := 0; i < totalTraces; i++ {
2656 var tr *tempopb.Trace
2657 var id []byte
2658 if i == wantTrIdx {
2659 tr = wantTr
2660 id = wantID
2661 } else {
2662 id = test.ValidTraceID(nil)
2663 tr = test.MakeTrace(10, id)
2664 }
2665 b1, err := dec.PrepareForWrite(tr, start, end)
2666 require.NoError(t, err)
2667
2668 b2, err := dec.ToObject([][]byte{b1})
2669 require.NoError(t, err)
2670 err = head.Append(id, b2, start, end, true)
2671 require.NoError(t, err)
2672 }
2673
2674 // Complete block
2675 block, err := w.CompleteBlock(context.Background(), head)
2676 require.NoError(t, err)
2677
2678 fetcher := traceql.NewSpansetFetcherWrapper(func(ctx context.Context, req traceql.FetchSpansRequest) (traceql.FetchSpansResponse, error) {
2679 return block.Fetch(ctx, req, common.DefaultSearchOptions())
2680 })
2681
2682 for name, traceID := range map[string]string{

Callers

nothing calls this directly

Calls 15

AllEncodingsForWritesFunction · 0.92
NewUUIDFunction · 0.92
MustNewSegmentDecoderFunction · 0.92
ValidTraceIDFunction · 0.92
MakeTraceFunction · 0.92
NewSpansetFetcherWrapperFunction · 0.92
DefaultSearchOptionsFunction · 0.92
NewEngineFunction · 0.92
testingConfigFunction · 0.85
makeExpectedTraceFunction · 0.85
actualForExpectedMetaFunction · 0.85
NewBlockMethod · 0.80

Tested by

no test coverage detected