(t *testing.T)
| 2623 | } |
| 2624 | |
| 2625 | func 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{ |
nothing calls this directly
no test coverage detected