mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-25 11:50:13 +01:00
f765985947
All the callers for fs.OpenReaderAt expect that the file will be opened. So it is better to log fatal error inside fs.MustOpenReaderAt instead of leaving this to the caller.
35 lines
736 B
Go
35 lines
736 B
Go
package fs
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"testing"
|
|
)
|
|
|
|
func TestReaderAt(t *testing.T) {
|
|
for _, bufSize := range []int{1, 1e1, 1e2, 1e3, 1e4, 1e5} {
|
|
t.Run(fmt.Sprintf("%d", bufSize), func(t *testing.T) {
|
|
testReaderAt(t, bufSize)
|
|
})
|
|
}
|
|
}
|
|
|
|
func testReaderAt(t *testing.T, bufSize int) {
|
|
path := "TestReaderAt"
|
|
const fileSize = 8 * 1024 * 1024
|
|
data := make([]byte, fileSize)
|
|
if err := ioutil.WriteFile(path, data, 0600); err != nil {
|
|
t.Fatalf("cannot create %q: %s", path, err)
|
|
}
|
|
defer MustRemoveAll(path)
|
|
r := MustOpenReaderAt(path)
|
|
defer r.MustClose()
|
|
|
|
buf := make([]byte, bufSize)
|
|
for i := 0; i < fileSize-bufSize; i += bufSize {
|
|
offset := int64(i)
|
|
r.MustReadAt(buf[:0], offset)
|
|
r.MustReadAt(buf, offset)
|
|
}
|
|
}
|