VictoriaMetrics/lib/filestream/filestream_test.go
Aliaksandr Valialkin df99965564
lib/filestream: change Create() to MustCreate()
Callers of this function log the returned error and exit.
It is better logging the error together with the path to the filename
and call stack directly inside the function. This simplifies
the code at callers' side without reducing the level of debuggability
2023-04-14 15:14:24 -07:00

52 lines
1.1 KiB
Go

package filestream
import (
"bytes"
"fmt"
"io"
"os"
"testing"
)
func TestWriteRead(t *testing.T) {
testWriteRead(t, false, "")
testWriteRead(t, true, "")
testWriteRead(t, false, "foobar")
testWriteRead(t, true, "foobar")
testWriteRead(t, false, "a\nb\nc\n")
testWriteRead(t, true, "a\nb\nc\n")
var bb bytes.Buffer
for bb.Len() < 3*dontNeedBlockSize {
fmt.Fprintf(&bb, "line %d\n", bb.Len())
}
testStr := bb.String()
testWriteRead(t, false, testStr)
testWriteRead(t, true, testStr)
}
func testWriteRead(t *testing.T, nocache bool, testStr string) {
t.Helper()
w := MustCreate("./nocache_test.txt", nocache)
defer func() {
_ = os.Remove("./nocache_test.txt")
}()
if _, err := fmt.Fprintf(w, "%s", testStr); err != nil {
t.Fatalf("unexpected error when writing testStr: %s", err)
}
w.MustClose()
r := MustOpen("./nocache_test.txt", nocache)
buf := make([]byte, len(testStr))
if _, err := io.ReadFull(r, buf); err != nil {
t.Fatalf("unexpected error when reading: %s", err)
}
if string(buf) != testStr {
t.Fatalf("unexpected data read: got\n%x; want\n%x", buf, testStr)
}
r.MustClose()
}