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

Function runWALTestWithAppendMode

tempodb/wal/wal_test.go:360–422  ·  tempodb/wal/wal_test.go::runWALTestWithAppendMode
(t testing.TB, encoding string, appendTrace bool, runner func([][]byte, []*tempopb.Trace, common.WALBlock))

Source from the content-addressed store, hash-verified

358}
359
360func runWALTestWithAppendMode(t testing.TB, encoding string, appendTrace bool, runner func([][]byte, []*tempopb.Trace, common.WALBlock)) {
361 wal, err := New(&Config{
362 Filepath: t.TempDir(),
363 Version: encoding,
364 })
365 require.NoError(t, err, "unexpected error creating temp wal")
366
367 blockID := uuid.New()
368
369 meta := backend.NewBlockMeta("fake", blockID, encoding)
370 block, err := wal.NewBlock(meta, model.CurrentEncoding)
371 require.NoError(t, err, "unexpected error creating block")
372
373 enc := model.MustNewSegmentDecoder(model.CurrentEncoding)
374
375 objects := 250
376 objs := make([]*tempopb.Trace, 0, objects)
377 ids := make([][]byte, 0, objects)
378 for i := 0; i < objects; i++ {
379 id := make([]byte, 16)
380 _, err = crand.Read(id)
381 require.NoError(t, err)
382 obj := test.MakeTrace(rand.Int()%10+1, id)
383
384 trace.SortTrace(obj)
385
386 ids = append(ids, id)
387 objs = append(objs, obj)
388
389 if appendTrace {
390 err = block.AppendTrace(id, obj, 0, 0, true)
391 require.NoError(t, err)
392 } else {
393 b1, err := enc.PrepareForWrite(obj, 0, 0)
394 require.NoError(t, err)
395
396 b2, err := enc.ToObject([][]byte{b1})
397 require.NoError(t, err)
398
399 err = block.Append(id, b2, 0, 0, true)
400 require.NoError(t, err)
401 }
402
403 if i%100 == 0 {
404 err = block.Flush()
405 require.NoError(t, err)
406 }
407 }
408 err = block.Flush()
409 require.NoError(t, err)
410
411 runner(ids, objs, block)
412
413 // rescan blocks
414 blocks, err := wal.RescanBlocks(0, log.NewNopLogger())
415 require.NoError(t, err, "unexpected error getting blocks")
416 require.Len(t, blocks, 1)
417

Callers 2

testFindByTraceIDFunction · 0.85
runWALTestFunction · 0.85

Calls 15

NewBlockMetaFunction · 0.92
MustNewSegmentDecoderFunction · 0.92
MakeTraceFunction · 0.92
SortTraceFunction · 0.92
NewBlockMethod · 0.80
IntMethod · 0.80
RescanBlocksMethod · 0.80
NewFunction · 0.70
ReadMethod · 0.65
AppendTraceMethod · 0.65
PrepareForWriteMethod · 0.65
ToObjectMethod · 0.65

Tested by

no test coverage detected