pitrou commented on code in PR #37460:
URL: https://github.com/apache/arrow/pull/37460#discussion_r1311602599
##########
cpp/src/arrow/io/buffered_test.cc:
##########
@@ -672,5 +671,123 @@ TEST_F(TestBufferedInputStreamBound,
BufferExactlyExhausted) {
}
}
-} // namespace io
-} // namespace arrow
+class TestBufferedInputStreamChunk : public TestBufferedInputStream {
+ public:
+ void SetUp() { TestBufferedInputStream::SetUp(); }
+
+ void TearDown() {
+ buffered_ = nullptr;
+ tracked_ = nullptr;
+ raw_ = nullptr;
+ }
+
+ void MakeExample(int64_t buffer_size, MemoryPool* pool =
default_memory_pool(),
+ std::optional<int64_t> read_bound = std::nullopt) {
+ test_data_ = kExample1;
+
+ ASSERT_OK_AND_ASSIGN(auto file_out, FileOutputStream::Open(path_));
+ ASSERT_OK(file_out->Write(test_data_));
+ ASSERT_OK(file_out->Close());
+
+ ASSERT_OK_AND_ASSIGN(auto file_in, ReadableFile::Open(path_));
+ raw_ = file_in;
+ tracked_ =
TrackedRandomAccessFile::Make(dynamic_cast<RandomAccessFile*>(raw_.get()));
+ if (read_bound.has_value()) {
+ ASSERT_OK_AND_ASSIGN(
+ buffered_,
+ BufferedInputStream::Create(buffer_size, pool, tracked_,
read_bound.value()));
+ } else {
+ ASSERT_OK_AND_ASSIGN(buffered_,
+ BufferedInputStream::Create(buffer_size, pool,
tracked_));
+ }
+ }
+
+ protected:
+ std::shared_ptr<TrackedRandomAccessFile> tracked_;
+};
+
+// Read bytes greater than buffer_size would not buffer.
+TEST_F(TestBufferedInputStreamChunk, NotBufferLargeRead) {
+ int64_t buffer_size = 5;
+ MakeExample(buffer_size);
+
+ ASSERT_OK_AND_ASSIGN(auto buf, buffered_->Read(6));
+ EXPECT_EQ(6, buf->size());
+ EXPECT_EQ(1, tracked_->num_reads());
+ EXPECT_EQ(0, buffered_->bytes_buffered());
+ EXPECT_EQ(6, tracked_->bytes_read());
Review Comment:
We could instead check the exact read ranges (untested):
```suggestion
EXPECT_EQ(0, buffered_->bytes_buffered());
EXPECT_EQ(tracked_->get_read_ranges(), {ReadRange{0, 6}});
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]