123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package page_writer
- import (
- "github.com/stretchr/testify/assert"
- "os"
- "testing"
- )
- func TestChunkedFileWriter_toActualOffset(t *testing.T) {
- cw := NewChunkedFileWriter("", 16)
- writeToFile(cw, 50, 60)
- writeToFile(cw, 60, 64)
- writeToFile(cw, 32, 40)
- writeToFile(cw, 42, 48)
- writeToFile(cw, 48, 50)
- assert.Equal(t, 1, cw.chunkUsages[0].size(), "fully covered")
- assert.Equal(t, 2, cw.chunkUsages[1].size(), "2 intervals")
- }
- func writeToFile(cw *ChunkedFileWriter, startOffset int64, stopOffset int64) {
- _, chunkUsage := cw.toActualWriteOffset(startOffset)
- // skip doing actual writing
- innerOffset := startOffset % cw.ChunkSize
- chunkUsage.MarkWritten(innerOffset, innerOffset+stopOffset-startOffset)
- }
- func TestWriteChunkedFile(t *testing.T) {
- x := NewChunkedFileWriter(os.TempDir(), 20)
- defer x.Destroy()
- y := NewChunkedFileWriter(os.TempDir(), 12)
- defer y.Destroy()
- batchSize := 4
- buf := make([]byte, batchSize)
- for i := 0; i < 256; i++ {
- for x := 0; x < batchSize; x++ {
- buf[x] = byte(i)
- }
- x.WriteAt(buf, int64(i*batchSize))
- y.WriteAt(buf, int64((255-i)*batchSize))
- }
- a := make([]byte, 1)
- b := make([]byte, 1)
- for i := 0; i < 256*batchSize; i++ {
- x.ReadDataAt(a, int64(i))
- y.ReadDataAt(b, int64(256*batchSize-1-i))
- assert.Equal(t, a[0], b[0], "same read")
- }
- }
|