github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/fileutil/writer_reader_test.go (about) 1 package fileutil 2 3 import ( 4 "testing" 5 ) 6 7 func TestWriterThenReader(t *testing.T) { 8 writer, err := NewFileWriterThenReader("testing-*.tmp") 9 if err != nil { 10 t.Fatalf("opening fileWriterThenReader: %s", err) 11 } 12 13 text := []byte("the quick brown fox jumps over the lazy dog. ") 14 15 const count = 100000 16 for i := 0; i < count; i++ { 17 l, err := writer.Write(text) 18 if err != nil { 19 t.Fatalf("writing block %d: %s", i, err) 20 } 21 if l != len(text) { 22 t.Fatalf("writing block %d: passed %d but wrote %d", i, len(text), l) 23 } 24 } 25 26 // Re-read data 27 reader, length, err := writer.StartReading() 28 if err != nil { 29 t.Fatalf("start reading fileWriterThenReader: %s", err) 30 } 31 t.Log("total length", length, "reader", reader) 32 for i := 0; i < count; i++ { 33 p := make([]byte, len(text)) 34 l, err := reader.Read(p) 35 if err != nil { 36 t.Fatalf("failed to read item %d: %s", i, err) 37 } 38 if l != len(text) { 39 t.Fatalf("writing block %d: passed %d but wrote %d", i, len(text), l) 40 } 41 } 42 43 // Re-read data again 44 err = reader.Rewind() 45 if err != nil { 46 t.Fatalf("rewind fileWriterThenReader: %s", err) 47 } 48 for i := 0; i < count; i++ { 49 p := make([]byte, len(text)) 50 l, err := reader.Read(p) 51 if err != nil { 52 t.Fatalf("failed to read item %d: %s", i, err) 53 } 54 if l != len(text) { 55 t.Fatalf("writing block %d: passed %d but wrote %d", i, len(text), l) 56 } 57 } 58 }