MCPcopy Create free account
hub / github.com/apache/impala / TestCompressionCodec

Function TestCompressionCodec

be/src/kudu/util/compression/compression-test.cc:48–80  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46class TestCompression : public KuduTest {};
47
48static void TestCompressionCodec(CompressionType compression) {
49 constexpr int kInputSize = 64;
50
51 const CompressionCodec* codec;
52 uint8_t ibuffer[kInputSize];
53 uint8_t ubuffer[kInputSize];
54 size_t compressed;
55
56 // Fill the test input buffer
57 memset(ibuffer, 'Z', kInputSize);
58
59 // Get the specified compression codec
60 ASSERT_OK(GetCompressionCodec(compression, &codec));
61
62 // Allocate the compression buffer
63 size_t max_compressed = codec->MaxCompressedLength(kInputSize);
64 ASSERT_LT(max_compressed, (kInputSize * 2));
65 unique_ptr<uint8_t[]> cbuffer(new uint8_t[max_compressed]);
66
67 // Compress and uncompress
68 ASSERT_OK(codec->Compress(Slice(ibuffer, kInputSize), cbuffer.get(), &compressed));
69 ASSERT_OK(codec->Uncompress(Slice(cbuffer.get(), compressed), ubuffer, kInputSize));
70 ASSERT_EQ(0, memcmp(ibuffer, ubuffer, kInputSize));
71
72 // Compress slices and uncompress
73 vector<Slice> islices;
74 constexpr int kStep = 7;
75 for (int i = 0; i < kInputSize; i += kStep)
76 islices.emplace_back(ibuffer + i, std::min(kStep, kInputSize - i));
77 ASSERT_OK(codec->Compress(islices, cbuffer.get(), &compressed));
78 ASSERT_OK(codec->Uncompress(Slice(cbuffer.get(), compressed), ubuffer, kInputSize));
79 ASSERT_EQ(0, memcmp(ibuffer, ubuffer, kInputSize));
80}
81
82static void Benchmark(Random random, CompressionType compression) {
83 constexpr int kMaterialCount = 16;

Callers 1

TEST_FFunction · 0.85

Calls 7

GetCompressionCodecFunction · 0.85
minFunction · 0.85
getMethod · 0.65
SliceClass · 0.50
MaxCompressedLengthMethod · 0.45
CompressMethod · 0.45
UncompressMethod · 0.45

Tested by

no test coverage detected