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

Function TestReadWrite

tempodb/backend/local/local_test.go:23–81  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

21const objectName = "test"
22
23func TestReadWrite(t *testing.T) {
24 fakeTracesFile, err := os.CreateTemp("/tmp", "")
25 defer os.Remove(fakeTracesFile.Name())
26 assert.NoError(t, err, "unexpected error creating temp file")
27
28 r, w, _, err := New(&Config{
29 Path: t.TempDir(),
30 })
31 assert.NoError(t, err, "unexpected error creating local backend")
32
33 blockID := uuid.New()
34 tenantIDs := []string{"fake"}
35
36 for i := 0; i < 10; i++ {
37 tenantIDs = append(tenantIDs, fmt.Sprintf("%d", rand.Int()))
38 }
39
40 fakeMeta := &backend.BlockMeta{
41 BlockID: backend.UUID(blockID),
42 }
43
44 fakeObject := make([]byte, 20)
45
46 _, err = crand.Read(fakeObject)
47 assert.NoError(t, err, "unexpected error creating fakeObject")
48
49 ctx := context.Background()
50 for _, id := range tenantIDs {
51 fakeMeta.TenantID = id
52 err = w.Write(ctx, objectName, backend.KeyPathForBlock((uuid.UUID)(fakeMeta.BlockID), id), bytes.NewReader(fakeObject), int64(len(fakeObject)), nil)
53 assert.NoError(t, err, "unexpected error writing")
54
55 err = w.Write(ctx, backend.MetaName, backend.KeyPathForBlock((uuid.UUID)(fakeMeta.BlockID), id), bytes.NewReader(fakeObject), int64(len(fakeObject)), nil)
56 assert.NoError(t, err, "unexpected error meta.json")
57 err = w.Write(ctx, backend.CompactedMetaName, backend.KeyPathForBlock((uuid.UUID)(fakeMeta.BlockID), id), bytes.NewReader(fakeObject), int64(len(fakeObject)), nil)
58 assert.NoError(t, err, "unexpected error meta.compacted.json")
59 }
60
61 actualObject, size, err := r.Read(ctx, objectName, backend.KeyPathForBlock(blockID, tenantIDs[0]), nil)
62 assert.NoError(t, err, "unexpected error reading")
63 actualObjectBytes, err := io.ReadAllWithEstimate(actualObject, size)
64 assert.NoError(t, err, "unexpected error reading")
65 assert.Equal(t, fakeObject, actualObjectBytes)
66
67 actualReadRange := make([]byte, 5)
68 err = r.ReadRange(ctx, objectName, backend.KeyPathForBlock(blockID, tenantIDs[0]), 5, actualReadRange, nil)
69 assert.NoError(t, err, "unexpected error range")
70 assert.Equal(t, fakeObject[5:10], actualReadRange)
71
72 list, err := r.List(ctx, backend.KeyPath{tenantIDs[0]})
73 assert.NoError(t, err, "unexpected error listing")
74 assert.Len(t, list, 1)
75 assert.Equal(t, blockID.String(), list[0])
76
77 m, cm, err := r.ListBlocks(ctx, tenantIDs[0])
78 assert.NoError(t, err, "unexpected error listing blocks")
79 assert.Len(t, m, 1)
80 assert.Len(t, cm, 1)

Callers

nothing calls this directly

Calls 15

UUIDTypeAlias · 0.92
KeyPathForBlockFunction · 0.92
ReadAllWithEstimateFunction · 0.92
RemoveMethod · 0.80
IntMethod · 0.80
NewFunction · 0.70
NameMethod · 0.65
ReadMethod · 0.65
WriteMethod · 0.65
ReadRangeMethod · 0.65
ListMethod · 0.65
LenMethod · 0.65

Tested by

no test coverage detected