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

Function TestCachingReaderAt

tempodb/encoding/vparquet5/readers_test.go:91–128  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

89}
90
91func TestCachingReaderAt(t *testing.T) {
92 rr := &recordingReaderAt{}
93 cr := newCachedReaderAt(rr, 1000, 100000, 10)
94
95 expectedReads := []read{}
96
97 // specially cached sections
98 cr.SetColumnIndexSection(1, 34)
99 _, err := cr.ReadAt(make([]byte, 34), 1)
100 expectedReads = append(expectedReads, read{34, 1, cache.RoleParquetColumnIdx})
101 require.NoError(t, err)
102
103 cr.SetFooterSection(14, 20)
104 _, err = cr.ReadAt(make([]byte, 20), 14)
105 expectedReads = append(expectedReads, read{20, 14, cache.RoleParquetFooter})
106 require.NoError(t, err)
107
108 cr.SetOffsetIndexSection(13, 12)
109 _, err = cr.ReadAt(make([]byte, 12), 13)
110 expectedReads = append(expectedReads, read{12, 13, cache.RoleParquetOffsetIdx})
111 require.NoError(t, err)
112
113 // everything else is a parquet page
114 _, err = cr.ReadAt(make([]byte, 13), 25)
115 require.NoError(t, err)
116 expectedReads = append(expectedReads, read{13, 25, cache.RoleParquetPage})
117
118 _, err = cr.ReadAt(make([]byte, 97), 118)
119 require.NoError(t, err)
120 expectedReads = append(expectedReads, read{97, 118, cache.RoleParquetPage})
121
122 // unless it's larger than the page size
123 _, err = cr.ReadAt(make([]byte, 1001), 421)
124 require.NoError(t, err)
125 expectedReads = append(expectedReads, read{1001, 421, cache.RoleNone})
126
127 require.Equal(t, expectedReads, rr.reads)
128}
129
130type read struct {
131 len int

Callers

nothing calls this directly

Calls 6

newCachedReaderAtFunction · 0.70
ReadAtMethod · 0.65
SetColumnIndexSectionMethod · 0.45
SetFooterSectionMethod · 0.45
SetOffsetIndexSectionMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected