From 8ff0032860cc4053e6f129e10da09535c27b55e8 Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Wed, 16 Oct 2024 16:03:21 +0300 Subject: fix: channel reader incorrectly reading anything more than bufferSize --- pkg/util/io_test.go | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) (limited to 'pkg/util/io_test.go') diff --git a/pkg/util/io_test.go b/pkg/util/io_test.go index 9d63e5d..f05b833 100644 --- a/pkg/util/io_test.go +++ b/pkg/util/io_test.go @@ -16,9 +16,44 @@ func TestChannelReader(t *testing.T) { select { case data := <-reader.Out: if !bytes.Equal(b, data) { - t.Errorf("TestChannelReader() %v != %v", b, data) + t.Errorf("%v != %v", b, data) } case err := <-reader.Err: - t.Errorf("TestChannelReader() err = %v", err) + t.Errorf("reading err: %v", err) + } +} + +func TestChannelReaderMultiPartRead(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + + b := []byte("Testing FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting FramerTesting Framer") + b1 := b[:512] + b2 := b[512:] + reader := NewChannelReader(ctx, bytes.NewReader(b)) + + counter := 0 +outer: + for { + select { + case data := <-reader.Out: + if counter == 0 { + if !bytes.Equal(b1, data) { + t.Errorf("%v != %v", b, data) + } + } else { + if !bytes.Equal(b2[:len(data)], data) { + t.Errorf("%v != %v", b, data) + } + } + counter++ + if counter == 2 { + break outer + } + + case err := <-reader.Err: + t.Errorf("reading err: %v", err) + break outer + } } } -- cgit v1.3.1