(t *testing.T)
| 89 | } |
| 90 | |
| 91 | func 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 | |
| 130 | type read struct { |
| 131 | len int |
nothing calls this directly
no test coverage detected