diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-06-13 18:52:46 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-06-13 18:52:46 +0200 |
commit | 0155137e7d56730665d406c37aa75649e5a3418a (patch) | |
tree | 05100870215c7852cc27b6970b60c9ff5f77e763 /searchlib/src/tests/docstore/chunk/chunk_test.cpp | |
parent | 4e5d87a9baa4176a1089f7afd1f433a8da275725 (diff) | |
parent | 6a64952133fc05136a0e445851b49bd0fc71c00e (diff) |
Merge with master
Diffstat (limited to 'searchlib/src/tests/docstore/chunk/chunk_test.cpp')
-rw-r--r-- | searchlib/src/tests/docstore/chunk/chunk_test.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/searchlib/src/tests/docstore/chunk/chunk_test.cpp b/searchlib/src/tests/docstore/chunk/chunk_test.cpp index 7411fc668f8..4687f45acde 100644 --- a/searchlib/src/tests/docstore/chunk/chunk_test.cpp +++ b/searchlib/src/tests/docstore/chunk/chunk_test.cpp @@ -68,4 +68,34 @@ TEST("require that Chunk formats does not change between releases") testChunkFormat(v2, 34, "34 015BA32DE7000000220000000010ABCDEF987654321000000000000000074D000694"); } +constexpr const char * MY_LONG_STRING = "This is medium long string that hopefully will compress to something where lz4, zstandard and none" +" will make a difference. The intentions is to verify that we trigger all compresssions possible and are able to decompress them too." +" I guess that we need a considerable length in order to get the rather inefficient lz4 compression triger. ZStandard compression" +" should trigger a lot earlier"; + +void verifyChunkCompression(CompressionConfig::Type cfgType, const void * buf, size_t sz, size_t expectedLen) { + uint64_t MAGIC_CONTENT(0xabcdef9876543210); + ChunkFormatV2 chunk(10); + chunk.getBuffer() << MAGIC_CONTENT; + chunk.getBuffer().write(buf, sz); + vespalib::DataBuffer buffer; + CompressionConfig cfg(cfgType); + chunk.pack(7, buffer, cfg); + EXPECT_EQUAL(expectedLen, buffer.getDataLen()); + vespalib::nbostream is(buffer.getData(), buffer.getDataLen()); + ChunkFormat::UP deserialized = ChunkFormat::deserialize(buffer.getData(), buffer.getDataLen(), false); + uint64_t magic(0); + deserialized->getBuffer() >> magic; + EXPECT_EQUAL(MAGIC_CONTENT, magic); + std::vector<char> v(sz); + deserialized->getBuffer().read(&v[0], sz); + EXPECT_EQUAL(0, memcmp(buf, &v[0], sz)); +} + +TEST("require that V2 can create and handle lz4, zstd, and none") { + verifyChunkCompression(CompressionConfig::NONE, MY_LONG_STRING, strlen(MY_LONG_STRING), 421); + verifyChunkCompression(CompressionConfig::LZ4, MY_LONG_STRING, strlen(MY_LONG_STRING), 360); + verifyChunkCompression(CompressionConfig::ZSTD, MY_LONG_STRING, strlen(MY_LONG_STRING), 282); +} + TEST_MAIN() { TEST_RUN_ALL(); } |