MCPcopy Create free account
hub / github.com/apache/arrow / TestPageCompressionRoundTrip

Method TestPageCompressionRoundTrip

cpp/src/parquet/file_deserialize_test.cc:729–775  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

727}
728
729void TestPageSerde::TestPageCompressionRoundTrip(const std::vector<int>& page_sizes) {
730 auto codec_types = GetSupportedCodecTypes();
731
732 const int32_t num_rows = 32; // dummy value
733 data_page_header_.num_values = num_rows;
734
735 std::vector<std::vector<uint8_t>> faux_data;
736 int num_pages = static_cast<int>(page_sizes.size());
737 faux_data.resize(num_pages);
738 for (int i = 0; i < num_pages; ++i) {
739 test::random_bytes(page_sizes[i], 0, &faux_data[i]);
740 }
741 for (auto codec_type : codec_types) {
742 auto codec = GetCodec(codec_type);
743
744 std::vector<uint8_t> buffer;
745 for (int i = 0; i < num_pages; ++i) {
746 const uint8_t* data = faux_data[i].data();
747 int data_size = static_cast<int>(faux_data[i].size());
748
749 int64_t max_compressed_size = codec->MaxCompressedLen(data_size, data);
750 buffer.resize(max_compressed_size);
751
752 int64_t actual_size;
753 ASSERT_OK_AND_ASSIGN(
754 actual_size, codec->Compress(data_size, data, max_compressed_size, &buffer[0]));
755
756 ASSERT_NO_FATAL_FAILURE(
757 WriteDataPageHeader(1024, data_size, static_cast<int32_t>(actual_size)));
758 ASSERT_OK(out_stream_->Write(buffer.data(), actual_size));
759 }
760
761 InitSerializedPageReader(num_rows * num_pages, codec_type);
762
763 std::shared_ptr<Page> page;
764 const DataPageV1* data_page;
765 for (int i = 0; i < num_pages; ++i) {
766 int data_size = static_cast<int>(faux_data[i].size());
767 page = page_reader_->NextPage();
768 data_page = static_cast<const DataPageV1*>(page.get());
769 ASSERT_EQ(data_size, data_page->size());
770 ASSERT_EQ(0, memcmp(faux_data[i].data(), data_page->data(), data_size));
771 }
772
773 ResetStream();
774 }
775}
776
777TEST_F(TestPageSerde, Compression) {
778 std::vector<int> page_sizes;

Callers 1

TEST_FFunction · 0.80

Calls 12

GetSupportedCodecTypesFunction · 0.85
GetCodecFunction · 0.85
resizeMethod · 0.80
random_bytesFunction · 0.70
ASSERT_OK_AND_ASSIGNFunction · 0.70
sizeMethod · 0.45
dataMethod · 0.45
MaxCompressedLenMethod · 0.45
CompressMethod · 0.45
WriteMethod · 0.45
NextPageMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected