diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-02 04:25:56 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-02 04:25:56 +0000 |
commit | 4e2e7f93eaee2540e0cb9f03f9c16b326d042469 (patch) | |
tree | 243b92b4a783169c73c0912db070df31a6202624 /searchlib/src/tests/transactionlog | |
parent | 1cce6c15c29e59200aa9db5e7b61da4fabc25cf3 (diff) |
- Add contained support for current serialization formats.
- Add support for future compressed formats.
Diffstat (limited to 'searchlib/src/tests/transactionlog')
-rw-r--r-- | searchlib/src/tests/transactionlog/CMakeLists.txt | 8 | ||||
-rw-r--r-- | searchlib/src/tests/transactionlog/chunks_test.cpp | 61 |
2 files changed, 69 insertions, 0 deletions
diff --git a/searchlib/src/tests/transactionlog/CMakeLists.txt b/searchlib/src/tests/transactionlog/CMakeLists.txt index f096d79d2de..c4a637c9e15 100644 --- a/searchlib/src/tests/transactionlog/CMakeLists.txt +++ b/searchlib/src/tests/transactionlog/CMakeLists.txt @@ -7,3 +7,11 @@ vespa_add_executable(searchlib_translogclient_test_app TEST ) vespa_add_test(NAME searchlib_translogclient_test_app COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/translogclient_test.sh DEPENDS searchlib_translogclient_test_app) + +vespa_add_executable(searchlib_translog_chunks_test_app TEST + SOURCES + chunks_test.cpp + DEPENDS + searchlib +) +vespa_add_test(NAME searchlib_translog_chunks_test_app COMMAND searchlib_translog_chunks_test_app) diff --git a/searchlib/src/tests/transactionlog/chunks_test.cpp b/searchlib/src/tests/transactionlog/chunks_test.cpp new file mode 100644 index 00000000000..c2f139cc310 --- /dev/null +++ b/searchlib/src/tests/transactionlog/chunks_test.cpp @@ -0,0 +1,61 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/searchlib/transactionlog/chunks.h> +#include <vespa/vespalib/testkit/testapp.h> + +#include <vespa/log/log.h> +LOG_SETUP("translog_chunks_test"); + +using namespace search::transactionlog; +using vespalib::ConstBufferRef; +using vespalib::nbostream; +using vespalib::compression::CompressionConfig; + +constexpr const char * TEXT = "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz"; + +void +verifySerializationAndDeserialization(IChunk & org, size_t numEntries) { + for (size_t i(0); i < numEntries; i++) { + const char *start = TEXT + (i%20); + Packet::Entry entry(i, i%8, ConstBufferRef(start, strlen(start))); + org.add(entry); + } + nbostream os; + + Encoding encoding = org.encode(os); + auto deserialized = IChunk::create(encoding.getRaw()); + deserialized->decode(os); + EXPECT_TRUE(os.empty()); + EXPECT_EQUAL(numEntries, deserialized->getEntries().size()); +} + +TEST("test serialization and deserialization of current default uncompressed xxh64") { + XXH64None chunk; + verifySerializationAndDeserialization(chunk, 1); +} + +TEST("test serialization and deserialization of legacy uncompressed ccittcrc32") { + CCITTCRC32None chunk; + verifySerializationAndDeserialization(chunk, 1); +} + +TEST("test serialization and deserialization of future multientry xxh64 lz4 compression") { + for (size_t level(1); level < 9; level++) { + XXH64Compressed chunk(CompressionConfig::Type::LZ4, level); + verifySerializationAndDeserialization(chunk, 100); + } +} + +TEST("test serialization and deserialization of future multientry xxh64 zstd compression") { + for (size_t level(1); level < 9; level++) { + XXH64Compressed chunk(CompressionConfig::Type::ZSTD, level); + verifySerializationAndDeserialization(chunk, 100); + } +} + +TEST("test serialization and deserialization of future multientry xxh64 no compression") { + XXH64Compressed chunk(CompressionConfig::Type::NONE_MULTI, 1); + verifySerializationAndDeserialization(chunk, 100); +} + +TEST_MAIN() { TEST_RUN_ALL(); } |