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

Function CheckCodecRoundtrip

cpp/src/arrow/util/compression_test.cc:61–106  ·  view source on GitHub ↗

Check roundtrip of one-shot compression and decompression functions.

Source from the content-addressed store, hash-verified

59
60// Check roundtrip of one-shot compression and decompression functions.
61void CheckCodecRoundtrip(std::unique_ptr<Codec>& c1, std::unique_ptr<Codec>& c2,
62 const std::vector<uint8_t>& data, bool check_reverse = true) {
63 int max_compressed_len =
64 static_cast<int>(c1->MaxCompressedLen(data.size(), data.data()));
65 std::vector<uint8_t> compressed(max_compressed_len);
66 std::vector<uint8_t> decompressed(data.size());
67
68 // compress with c1
69 int64_t actual_size;
70 ASSERT_OK_AND_ASSIGN(actual_size, c1->Compress(data.size(), data.data(),
71 max_compressed_len, compressed.data()));
72 compressed.resize(actual_size);
73
74 // decompress with c2
75 int64_t actual_decompressed_size;
76 ASSERT_OK_AND_ASSIGN(actual_decompressed_size,
77 c2->Decompress(compressed.size(), compressed.data(),
78 decompressed.size(), decompressed.data()));
79
80 ASSERT_EQ(data, decompressed);
81 ASSERT_EQ(data.size(), actual_decompressed_size);
82
83 if (check_reverse) {
84 // compress with c2
85 ASSERT_EQ(max_compressed_len,
86 static_cast<int>(c2->MaxCompressedLen(data.size(), data.data())));
87 // Resize to prevent ASAN from detecting container overflow.
88 compressed.resize(max_compressed_len);
89
90 int64_t actual_size2;
91 ASSERT_OK_AND_ASSIGN(
92 actual_size2,
93 c2->Compress(data.size(), data.data(), max_compressed_len, compressed.data()));
94 ASSERT_EQ(actual_size2, actual_size);
95 compressed.resize(actual_size2);
96
97 // decompress with c1
98 int64_t actual_decompressed_size2;
99 ASSERT_OK_AND_ASSIGN(actual_decompressed_size2,
100 c1->Decompress(compressed.size(), compressed.data(),
101 decompressed.size(), decompressed.data()));
102
103 ASSERT_EQ(data, decompressed);
104 ASSERT_EQ(data.size(), actual_decompressed_size2);
105 }
106}
107
108// Check the streaming compressor against one-shot decompression
109

Callers 3

TEST_PFunction · 0.85
TESTFunction · 0.85
CheckSpecifyCodecOptionsFunction · 0.85

Calls 7

resizeMethod · 0.80
ASSERT_OK_AND_ASSIGNFunction · 0.70
MaxCompressedLenMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45
CompressMethod · 0.45
DecompressMethod · 0.45

Tested by

no test coverage detected