diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-14 10:06:02 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-14 10:06:02 +0000 |
commit | c42f79f549cf5d292c343bf359ed73ad55c38183 (patch) | |
tree | 51179e4792e08cdeadafc51c41f5c0f9bb933791 /searchlib/src/tests/transactionlog/chunks_test.cpp | |
parent | e07397569ebe62ef3ecb62f2f2698d4cb798893f (diff) |
Add CommitChunk
Diffstat (limited to 'searchlib/src/tests/transactionlog/chunks_test.cpp')
-rw-r--r-- | searchlib/src/tests/transactionlog/chunks_test.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/searchlib/src/tests/transactionlog/chunks_test.cpp b/searchlib/src/tests/transactionlog/chunks_test.cpp index 8605fa2b4d6..692bde54727 100644 --- a/searchlib/src/tests/transactionlog/chunks_test.cpp +++ b/searchlib/src/tests/transactionlog/chunks_test.cpp @@ -2,6 +2,7 @@ #include <vespa/searchlib/transactionlog/chunks.h> #include <vespa/vespalib/testkit/testapp.h> +#include <atomic> #include <vespa/log/log.h> LOG_SETUP("translog_chunks_test"); @@ -12,6 +13,7 @@ using vespalib::nbostream; using vespalib::compression::CompressionConfig; constexpr const char * TEXT = "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz"; +constexpr const char * TEXT2 = "something else"; void verifySerializationAndDeserialization(IChunk & org, size_t numEntries, Encoding expected) { @@ -69,4 +71,51 @@ TEST("test serialization and deserialization of uncompressable zstd") { verifySerializationAndDeserialization(chunk, 1, Encoding(Encoding::Crc::xxh64, Encoding::Compression::none_multi)); } +TEST("test empty commitchunk") { + CommitChunk cc(1,1); + EXPECT_EQUAL(0ms, cc.age()); + EXPECT_EQUAL(0u, cc.sizeBytes()); + EXPECT_EQUAL(0u, cc.getNumCallBacks()); +} + +struct Counter : public search::IDestructorCallback { + std::atomic<uint32_t> & _counter; + Counter(std::atomic<uint32_t> & counter) : _counter(counter) { _counter++; } + ~Counter() override { _counter--; } +}; + +TEST("test single element commitchunk") { + std::atomic<uint32_t> counter(0); + { + Packet p(100); + p.add(Packet::Entry(1, 1, ConstBufferRef(TEXT, strlen(TEXT)))); + CommitChunk cc(0, 0); + + cc.add(p, std::make_shared<Counter>(counter)); + EXPECT_EQUAL(1u, counter); + EXPECT_GREATER(cc.age(), 0ms); + EXPECT_EQUAL(150u, cc.sizeBytes()); + EXPECT_EQUAL(1u, cc.getNumCallBacks()); + } + EXPECT_EQUAL(0u, counter); +} + +TEST("test multi element commitchunk") { + std::atomic<uint32_t> counter(0); + { + Packet p(100); + p.add(Packet::Entry(1, 3, ConstBufferRef(TEXT, strlen(TEXT)))); + CommitChunk cc(1000, 10); + + cc.add(p, std::make_shared<Counter>(counter)); + Packet p2(100); + p2.add(Packet::Entry(2, 2, ConstBufferRef(TEXT2, strlen(TEXT2)))); + cc.add(p2, std::make_shared<Counter>(counter)); + EXPECT_EQUAL(2u, counter); + EXPECT_GREATER(cc.age(), 0ms); + EXPECT_EQUAL(180u, cc.sizeBytes()); + EXPECT_EQUAL(2u, cc.getNumCallBacks()); + } + EXPECT_EQUAL(0u, counter); +} TEST_MAIN() { TEST_RUN_ALL(); } |