From 7153fc9379dd5910c688925ccd2e0a03b9551a6d Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 13 Jul 2022 22:38:43 -0600 Subject: Buffer FS IO --- lib/diskio/file_state_test.go | 59 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 lib/diskio/file_state_test.go (limited to 'lib/diskio/file_state_test.go') diff --git a/lib/diskio/file_state_test.go b/lib/diskio/file_state_test.go new file mode 100644 index 0000000..3f0c119 --- /dev/null +++ b/lib/diskio/file_state_test.go @@ -0,0 +1,59 @@ +// Copyright (C) 2022 Luke Shumaker +// +// SPDX-License-Identifier: GPL-2.0-or-later + +package diskio_test + +import ( + "bytes" + "testing" + "testing/iotest" + + "git.lukeshu.com/btrfs-progs-ng/lib/diskio" +) + +type byteReaderWithName struct { + *bytes.Reader + name string +} + +func (r byteReaderWithName) Name() string { + return r.name +} + +func (r byteReaderWithName) Close() error { + return nil +} + +func (r byteReaderWithName) WriteAt([]byte, int64) (int, error) { + panic("not implemented") +} + +func FuzzStatefulReader(f *testing.F) { + f.Fuzz(func(t *testing.T, content []byte) { + t.Logf("content=%q", content) + var file diskio.File[int64] = byteReaderWithName{ + Reader: bytes.NewReader(content), + name: t.Name(), + } + reader := diskio.NewStatefulFile[int64](file) + if err := iotest.TestReader(reader, content); err != nil { + t.Error(err) + } + }) +} + +func FuzzStatefulBufferedReader(f *testing.F) { + f.Fuzz(func(t *testing.T, content []byte) { + t.Logf("content=%q", content) + var file diskio.File[int64] = byteReaderWithName{ + Reader: bytes.NewReader(content), + name: t.Name(), + } + file = diskio.NewBufferedFile[int64](file, 4, 2) + reader := diskio.NewStatefulFile[int64](file) + if err := iotest.TestReader(reader, content); err != nil { + t.Error(err) + } + }) +} -- cgit v1.2.3-2-g168b