Combine stream fuzz tests
Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
parent
0762a3a759
commit
8304a61b53
@ -32,88 +32,75 @@ func FuzzSendAndReceive(f *testing.F) {
|
|||||||
f.Add(bytes.Repeat([]byte{0}, windowSize+1))
|
f.Add(bytes.Repeat([]byte{0}, windowSize+1))
|
||||||
f.Add([]byte("hello"))
|
f.Add([]byte("hello"))
|
||||||
f.Add(bytes.Repeat([]byte("hello"), windowSize+1))
|
f.Add(bytes.Repeat([]byte("hello"), windowSize+1))
|
||||||
|
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
defer cancel()
|
||||||
f.Fuzz(func(t *testing.T, expected []byte) {
|
f.Fuzz(func(t *testing.T, expected []byte) {
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
runSendAndReceiveFuzz(ctx, t, expected)
|
||||||
defer cancel()
|
runSendAndReceiveChainFuzz(ctx, t, expected)
|
||||||
|
runWriterFuzz(ctx, t, expected)
|
||||||
rs, ws := pipeStream()
|
|
||||||
r, w := io.Pipe()
|
|
||||||
SendStream(ctx, r, ws)
|
|
||||||
or := ReceiveStream(ctx, rs)
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
io.Copy(w, bytes.NewBuffer(expected))
|
|
||||||
w.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
actual, err := io.ReadAll(or)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !bytes.Equal(expected, actual) {
|
|
||||||
t.Fatalf("received bytes are not equal\n\tactual: %v\n\texpected:%v", actual, expected)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzSendAndReceiveChain(f *testing.F) {
|
|
||||||
f.Add([]byte{})
|
|
||||||
f.Add([]byte{0})
|
|
||||||
f.Add(bytes.Repeat([]byte{0}, windowSize+1))
|
|
||||||
f.Add([]byte("hello"))
|
|
||||||
f.Add(bytes.Repeat([]byte("hello"), windowSize+1))
|
|
||||||
f.Fuzz(func(t *testing.T, expected []byte) {
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
r, w := io.Pipe()
|
|
||||||
|
|
||||||
or := chainStreams(ctx, chainStreams(ctx, chainStreams(ctx, r)))
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
io.Copy(w, bytes.NewBuffer(expected))
|
|
||||||
w.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
actual, err := io.ReadAll(or)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !bytes.Equal(expected, actual) {
|
|
||||||
t.Fatalf("received bytes are not equal\n\tactual: %v\n\texpected:%v", actual, expected)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func FuzzWriter(f *testing.F) {
|
func runSendAndReceiveFuzz(ctx context.Context, t *testing.T, expected []byte) {
|
||||||
f.Add([]byte{})
|
rs, ws := pipeStream()
|
||||||
f.Add([]byte{0})
|
r, w := io.Pipe()
|
||||||
f.Add(bytes.Repeat([]byte{0}, windowSize+1))
|
SendStream(ctx, r, ws)
|
||||||
f.Add([]byte("hello"))
|
or := ReceiveStream(ctx, rs)
|
||||||
f.Add(bytes.Repeat([]byte("hello"), windowSize+1))
|
|
||||||
f.Fuzz(func(t *testing.T, expected []byte) {
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
rs, ws := pipeStream()
|
go func() {
|
||||||
wc := WriteByteStream(ctx, ws)
|
io.Copy(w, bytes.NewBuffer(expected))
|
||||||
or := ReceiveStream(ctx, rs)
|
w.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
go func() {
|
actual, err := io.ReadAll(or)
|
||||||
io.Copy(wc, bytes.NewBuffer(expected))
|
if err != nil {
|
||||||
wc.Close()
|
t.Fatal(err)
|
||||||
}()
|
}
|
||||||
|
|
||||||
actual, err := io.ReadAll(or)
|
if !bytes.Equal(expected, actual) {
|
||||||
if err != nil {
|
t.Fatalf("received bytes are not equal\n\tactual: %v\n\texpected:%v", actual, expected)
|
||||||
t.Fatal(err)
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !bytes.Equal(expected, actual) {
|
func runSendAndReceiveChainFuzz(ctx context.Context, t *testing.T, expected []byte) {
|
||||||
t.Fatalf("received bytes are not equal\n\tactual: %v\n\texpected:%v", actual, expected)
|
r, w := io.Pipe()
|
||||||
}
|
|
||||||
})
|
or := chainStreams(ctx, chainStreams(ctx, chainStreams(ctx, r)))
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
io.Copy(w, bytes.NewBuffer(expected))
|
||||||
|
w.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
|
actual, err := io.ReadAll(or)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !bytes.Equal(expected, actual) {
|
||||||
|
t.Fatalf("received bytes are not equal\n\tactual: %v\n\texpected:%v", actual, expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func runWriterFuzz(ctx context.Context, t *testing.T, expected []byte) {
|
||||||
|
rs, ws := pipeStream()
|
||||||
|
wc := WriteByteStream(ctx, ws)
|
||||||
|
or := ReceiveStream(ctx, rs)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
io.Copy(wc, bytes.NewBuffer(expected))
|
||||||
|
wc.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
|
actual, err := io.ReadAll(or)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !bytes.Equal(expected, actual) {
|
||||||
|
t.Fatalf("received bytes are not equal\n\tactual: %v\n\texpected:%v", actual, expected)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func chainStreams(ctx context.Context, r io.Reader) io.Reader {
|
func chainStreams(ctx context.Context, r io.Reader) io.Reader {
|
||||||
|
Loading…
Reference in New Issue
Block a user