diff options
author | Geir Storli <geirst@verizonmedia.com> | 2019-08-09 14:31:39 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2019-08-09 14:31:39 +0000 |
commit | 0a6641a9d793ca956437e42d180a4faa68bf3c99 (patch) | |
tree | 94055fe0b82f31004eec8fddca2ac94582e6c449 /searchcore | |
parent | 942a5e956b0a143d122d7aa89e4c87c750fe82ec (diff) |
Rewrite document meta store tests to gtest.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/tests/proton/documentmetastore/CMakeLists.txt | 1 | ||||
-rw-r--r-- | searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp | 1014 |
2 files changed, 492 insertions, 523 deletions
diff --git a/searchcore/src/tests/proton/documentmetastore/CMakeLists.txt b/searchcore/src/tests/proton/documentmetastore/CMakeLists.txt index 626243459eb..f31d82240e0 100644 --- a/searchcore/src/tests/proton/documentmetastore/CMakeLists.txt +++ b/searchcore/src/tests/proton/documentmetastore/CMakeLists.txt @@ -9,6 +9,7 @@ vespa_add_executable(searchcore_documentmetastore_test_app TEST searchcore_attribute searchcore_feedoperation searchcore_fconfig + gtest ) vespa_add_test(NAME searchcore_documentmetastore_test_app COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/documentmetastore_test.sh DEPENDS searchcore_documentmetastore_test_app) diff --git a/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp b/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp index 8fa66e65af3..4509f11af58 100644 --- a/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp +++ b/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp @@ -1,31 +1,34 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/vespalib/testkit/testapp.h> + #include <vespa/document/base/documentid.h> -#include <vespa/searchcore/proton/documentmetastore/documentmetastore.h> -#include <vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h> #include <vespa/searchcore/proton/bucketdb/bucketdbhandler.h> #include <vespa/searchcore/proton/bucketdb/checksumaggregators.h> #include <vespa/searchcore/proton/bucketdb/i_bucket_create_listener.h> +#include <vespa/searchcore/proton/common/hw_info.h> +#include <vespa/searchcore/proton/documentmetastore/documentmetastore.h> +#include <vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h> +#include <vespa/searchcore/proton/server/itlssyncer.h> #include <vespa/searchlib/attribute/attributefilesavetarget.h> -#include <vespa/searchlib/fef/matchdatalayout.h> -#include <vespa/searchlib/queryeval/simpleresult.h> #include <vespa/searchlib/common/tunefileinfo.h> +#include <vespa/searchlib/fef/matchdatalayout.h> #include <vespa/searchlib/index/dummyfileheadercontext.h> -#include <vespa/vespalib/util/threadstackexecutor.h> +#include <vespa/searchlib/query/queryterm.h> +#include <vespa/searchlib/queryeval/simpleresult.h> +#include <vespa/vespalib/gtest/gtest.h> #include <vespa/vespalib/io/fileutil.h> -#include <vespa/vespalib/util/exceptions.h> #include <vespa/vespalib/test/insertion_operators.h> -#include <vespa/searchcore/proton/server/itlssyncer.h> -#include <vespa/searchcore/proton/common/hw_info.h> -#include <vespa/searchlib/query/queryterm.h> +#include <vespa/vespalib/util/exceptions.h> +#include <vespa/vespalib/util/threadstackexecutor.h> +#include <thread> + #include <vespa/log/log.h> LOG_SETUP("documentmetastore_test"); using namespace document; using proton::bucketdb::BucketState; +using proton::bucketdb::IBucketCreateListener; using proton::bucketdb::LegacyChecksumAggregator; using proton::bucketdb::XXH64ChecksumAggregator; -using proton::bucketdb::IBucketCreateListener; using search::AttributeFileSaveTarget; using search::AttributeGuard; using search::AttributeVector; @@ -42,12 +45,12 @@ using search::index::DummyFileHeaderContext; using search::queryeval::Blueprint; using search::queryeval::SearchIterator; using search::queryeval::SimpleResult; +using searchcorespi::IFlushTarget; using storage::spi::BucketChecksum; using storage::spi::BucketInfo; using storage::spi::Timestamp; using vespalib::GenerationHandler; using vespalib::GenerationHolder; -using searchcorespi::IFlushTarget; using namespace std::literals; namespace proton { @@ -59,17 +62,14 @@ static constexpr uint64_t timestampBias = UINT64_C(2000000000000); } - -class DummyTlsSyncer : public ITlsSyncer -{ +class DummyTlsSyncer : public ITlsSyncer { public: virtual ~DummyTlsSyncer() = default; virtual void sync() override { } }; -class ReverseGidCompare : public DocumentMetaStore::IGidCompare -{ +class ReverseGidCompare : public DocumentMetaStore::IGidCompare { GlobalId::BucketOrderCmp _comp; public: ReverseGidCompare() @@ -78,9 +78,7 @@ public: { } - virtual bool - operator()(const GlobalId &lhs, const GlobalId &rhs) const override - { + virtual bool operator()(const GlobalId &lhs, const GlobalId &rhs) const override { return _comp(rhs, lhs); } }; @@ -103,8 +101,8 @@ struct BoolVector : public std::vector<bool> { } }; -typedef DocumentMetaStore::Result PutRes; -typedef DocumentMetaStore::Result Result; +using PutRes = DocumentMetaStore::Result; +using Result = DocumentMetaStore::Result; BucketDBOwner::SP createBucketDB() @@ -112,7 +110,7 @@ createBucketDB() return std::make_shared<BucketDBOwner>(); } -bool +void assertPut(const BucketId &bucketId, const Timestamp ×tamp, uint32_t lid, @@ -120,28 +118,28 @@ assertPut(const BucketId &bucketId, DocumentMetaStore &dms) { Result inspect = dms.inspect(gid); - PutRes putRes; uint32_t docSize = 1; - if (!EXPECT_TRUE((putRes = dms.put(gid, bucketId, timestamp, docSize, inspect.getLid())). - ok())) return false; - return EXPECT_EQUAL(lid, putRes.getLid()); + PutRes putRes = dms.put(gid, bucketId, timestamp, docSize, inspect.getLid()); + EXPECT_TRUE(putRes.ok()); + EXPECT_EQ(lid, putRes.getLid()); } bool compare(const GlobalId &lhs, const GlobalId &rhs) { - return EXPECT_EQUAL(lhs.toString(), rhs.toString()); + EXPECT_EQ(lhs.toString(), rhs.toString()); + return (lhs.toString() == rhs.toString()); } -bool +void assertGid(const GlobalId &exp, uint32_t lid, const DocumentMetaStore &dms) { GlobalId act; - if (!EXPECT_TRUE(dms.getGid(lid, act))) return false; - return compare(exp, act); + EXPECT_TRUE(dms.getGid(lid, act)); + EXPECT_TRUE(compare(exp, act)); } -bool +void assertGid(const GlobalId &exp, uint32_t lid, const DocumentMetaStore &dms, @@ -151,55 +149,46 @@ assertGid(const GlobalId &exp, GlobalId act; BucketId bucketId; Timestamp timestamp(1); - if (!EXPECT_TRUE(dms.getGid(lid, act))) - return false; - if (!compare(exp, act)) - return false; + EXPECT_TRUE(dms.getGid(lid, act)); + EXPECT_TRUE(compare(exp, act)); DocumentMetaData meta = dms.getMetaData(act); - if (!EXPECT_TRUE(meta.valid())) - return false; + EXPECT_TRUE(meta.valid()); bucketId = meta.bucketId; timestamp = meta.timestamp; - if (!EXPECT_EQUAL(expBucketId.getRawId(), bucketId.getRawId())) - return false; - if (!EXPECT_EQUAL(expBucketId.getId(), bucketId.getId())) - return false; - if (!EXPECT_EQUAL(expTimestamp, timestamp)) - return false; - return true; + EXPECT_EQ(expBucketId.getRawId(), bucketId.getRawId()); + EXPECT_EQ(expBucketId.getId(), bucketId.getId()); + EXPECT_EQ(expTimestamp, timestamp); } -bool +void assertLid(uint32_t exp, const GlobalId &gid, const DocumentMetaStore &dms) { uint32_t act; - if (!EXPECT_TRUE(dms.getLid(gid, act))) return false; - return EXPECT_EQUAL(exp, act); + EXPECT_TRUE(dms.getLid(gid, act)); + EXPECT_EQ(exp, act); } -bool +void assertMetaData(const DocumentMetaData &exp, const DocumentMetaData &act) { - if (!EXPECT_EQUAL(exp.lid, act.lid)) return false; - if (!EXPECT_EQUAL(exp.timestamp, act.timestamp)) return false; - if (!EXPECT_EQUAL(exp.bucketId, act.bucketId)) return false; - if (!EXPECT_EQUAL(exp.gid, act.gid)) return false; - if (!EXPECT_EQUAL(exp.removed, act.removed)) return false; - return true; + EXPECT_EQ(exp.lid, act.lid); + EXPECT_EQ(exp.timestamp, act.timestamp); + EXPECT_EQ(exp.bucketId, act.bucketId); + EXPECT_EQ(exp.gid, act.gid); + EXPECT_EQ(exp.removed, act.removed); } -bool +void assertActiveLids(const BoolVector &exp, const search::BitVector &act) { // lid 0 is reserved - if (!EXPECT_EQUAL(exp.size() + 1, act.size())) return false; + EXPECT_EQ(exp.size() + 1, act.size()); for (size_t i = 0; i < exp.size(); ++i) { - if (!EXPECT_EQUAL(exp[i], act.testBit(i + 1))) return false; + EXPECT_EQ(exp[i], act.testBit(i + 1)); } - return true; } -bool +void assertWhiteList(const SimpleResult &exp, Blueprint::UP whiteListBlueprint, bool strict, uint32_t docIdLimit) { MatchDataLayout mdl; @@ -210,10 +199,10 @@ assertWhiteList(const SimpleResult &exp, Blueprint::UP whiteListBlueprint, bool SearchIterator::UP sb = whiteListBlueprint->createSearch(*md, strict); SimpleResult act; act.searchStrict(*sb, docIdLimit); - return EXPECT_EQUAL(exp, act); + EXPECT_EQ(exp, act); } -bool +void assertSearchResult(const SimpleResult &exp, const DocumentMetaStore &dms, const vespalib::string &term, const QueryTermSimple::SearchTerm &termType, bool strict, uint32_t docIdLimit = 100) @@ -228,19 +217,16 @@ assertSearchResult(const SimpleResult &exp, const DocumentMetaStore &dms, } else { act.search(*sb, docIdLimit); } - return EXPECT_EQUAL(exp, act); + EXPECT_EQ(exp, act); } -bool +void assertBucketInfo(uint32_t expDocCount, uint32_t expMetaCount, const BucketInfo &act) { - if (!EXPECT_EQUAL(expDocCount, act.getDocumentCount())) - return false; - if (!EXPECT_EQUAL(expMetaCount, act.getEntryCount())) - return false; - return true; + EXPECT_EQ(expDocCount, act.getDocumentCount()); + EXPECT_EQ(expMetaCount, act.getEntryCount()); } GlobalId gid1("111111111111"); @@ -292,155 +278,155 @@ putGid(DocumentMetaStore &dms, const GlobalId &gid, uint32_t lid, Timestamp time EXPECT_TRUE(dms.put(gid, bid, timestamp, docSize, lid).ok()); } -TEST("require that removed documents are bucketized to bucket 0") +TEST(DocumentMetaStoreTest, removed_documents_are_bucketized_to_bucket_0) { DocumentMetaStore dms(createBucketDB()); dms.constructFreeList(); - EXPECT_EQUAL(1u, dms.getNumDocs()); - EXPECT_EQUAL(0u, dms.getNumUsedLids()); + EXPECT_EQ(1u, dms.getNumDocs()); + EXPECT_EQ(0u, dms.getNumUsedLids()); vespalib::GenerationHandler::Guard guard = dms.getGuard(); - EXPECT_EQUAL(BucketId(), dms.getBucketOf(guard, 1)); - EXPECT_TRUE(assertPut(bucketId1, time1, 1, gid1, dms)); - EXPECT_EQUAL(bucketId1, dms.getBucketOf(guard, 1)); - EXPECT_TRUE(assertPut(bucketId2, time2, 2, gid2, dms)); - EXPECT_EQUAL(bucketId2, dms.getBucketOf(guard, 2)); + EXPECT_EQ(BucketId(), dms.getBucketOf(guard, 1)); + assertPut(bucketId1, time1, 1, gid1, dms); + EXPECT_EQ(bucketId1, dms.getBucketOf(guard, 1)); + assertPut(bucketId2, time2, 2, gid2, dms); + EXPECT_EQ(bucketId2, dms.getBucketOf(guard, 2)); EXPECT_TRUE(dms.remove(1)); - EXPECT_EQUAL(BucketId(), dms.getBucketOf(guard, 1)); - EXPECT_EQUAL(bucketId2, dms.getBucketOf(guard, 2)); + EXPECT_EQ(BucketId(), dms.getBucketOf(guard, 1)); + EXPECT_EQ(bucketId2, dms.getBucketOf(guard, 2)); } -TEST("requireThatGidsCanBeInsertedAndRetrieved") +TEST(DocumentMetaStoreTest, gids_can_be_inserted_and_retrieved) { DocumentMetaStore dms(createBucketDB()); dms.constructFreeList(); // put() - EXPECT_EQUAL(1u, dms.getNumDocs()); - EXPECT_EQUAL(0u, dms.getNumUsedLids()); - EXPECT_TRUE(assertPut(bucketId1, time1, 1, gid1, dms)); - EXPECT_EQUAL(2u, dms.getNumDocs()); - EXPECT_EQUAL(1u, dms.getNumUsedLids()); - EXPECT_TRUE(assertPut(bucketId2, time2, 2, gid2, dms)); - EXPECT_EQUAL(3u, dms.getNumDocs()); - EXPECT_EQUAL(2u, dms.getNumUsedLids()); + EXPECT_EQ(1u, dms.getNumDocs()); + EXPECT_EQ(0u, dms.getNumUsedLids()); + assertPut(bucketId1, time1, 1, gid1, dms); + EXPECT_EQ(2u, dms.getNumDocs()); + EXPECT_EQ(1u, dms.getNumUsedLids()); + assertPut(bucketId2, time2, 2, gid2, dms); + EXPECT_EQ(3u, dms.getNumDocs()); + EXPECT_EQ(2u, dms.getNumUsedLids()); // gid1 already inserted - EXPECT_TRUE(assertPut(bucketId1, time1, 1, gid1, dms)); + assertPut(bucketId1, time1, 1, gid1, dms); // gid2 already inserted - EXPECT_TRUE(assertPut(bucketId2, time2, 2, gid2, dms)); + assertPut(bucketId2, time2, 2, gid2, dms); // getGid() GlobalId gid; - EXPECT_TRUE(assertGid(gid1, 1, dms)); - EXPECT_TRUE(assertGid(gid2, 2, dms)); + assertGid(gid1, 1, dms); + assertGid(gid2, 2, dms); EXPECT_TRUE(!dms.getGid(3, gid)); // getLid() uint32_t lid = 0; - EXPECT_TRUE(assertLid(1, gid1, dms)); - EXPECT_TRUE(assertLid(2, gid2, dms)); + assertLid(1, gid1, dms); + assertLid(2, gid2, dms); EXPECT_TRUE(!dms.getLid(gid3, lid)); } -TEST("requireThatGidsCanBeCleared") +TEST(DocumentMetaStore, gids_can_be_cleared) { DocumentMetaStore dms(createBucketDB()); GlobalId gid; uint32_t lid = 0u; dms.constructFreeList(); addGid(dms, gid1, bucketId1, time1); - EXPECT_TRUE(assertGid(gid1, 1, dms)); - EXPECT_TRUE(assertLid(1, gid1, dms)); - EXPECT_EQUAL(1u, dms.getNumUsedLids()); + assertGid(gid1, 1, dms); + assertLid(1, gid1, dms); + EXPECT_EQ(1u, dms.getNumUsedLids()); EXPECT_TRUE(dms.remove(1)); dms.removeComplete(1); - EXPECT_EQUAL(0u, dms.getNumUsedLids()); + EXPECT_EQ(0u, dms.getNumUsedLids()); EXPECT_TRUE(!dms.getGid(1, gid)); EXPECT_TRUE(!dms.getLid(gid1, lid)); // reuse lid addGid(dms, gid2, bucketId2, time2); - EXPECT_TRUE(assertGid(gid2, 1, dms)); - EXPECT_TRUE(assertLid(1, gid2, dms)); - EXPECT_EQUAL(1u, dms.getNumUsedLids()); + assertGid(gid2, 1, dms); + assertLid(1, gid2, dms); + EXPECT_EQ(1u, dms.getNumUsedLids()); EXPECT_TRUE(dms.remove(1)); dms.removeComplete(1); - EXPECT_EQUAL(0u, dms.getNumUsedLids()); + EXPECT_EQ(0u, dms.getNumUsedLids()); EXPECT_TRUE(!dms.getGid(1, gid)); EXPECT_TRUE(!dms.getLid(gid2, lid)); EXPECT_TRUE(!dms.remove(1)); // not used EXPECT_TRUE(!dms.remove(2)); // outside range } -TEST("requireThatGenerationHandlingIsWorking") +TEST(DocumentMetaStore, generation_handling_is_working) { AttributeVector::SP av(new DocumentMetaStore(createBucketDB())); DocumentMetaStore * dms = static_cast<DocumentMetaStore *>(av.get()); dms->constructFreeList(); const GenerationHandler & gh = dms->getGenerationHandler(); - EXPECT_EQUAL(1u, gh.getCurrentGeneration()); + EXPECT_EQ(1u, gh.getCurrentGeneration()); addGid(*dms, gid1, bucketId1, time1); - EXPECT_EQUAL(2u, gh.getCurrentGeneration()); - EXPECT_EQUAL(0u, gh.getGenerationRefCount()); + EXPECT_EQ(2u, gh.getCurrentGeneration()); + EXPECT_EQ(0u, gh.getGenerationRefCount()); { AttributeGuard g1(av); - EXPECT_EQUAL(1u, gh.getGenerationRefCount()); + EXPECT_EQ(1u, gh.getGenerationRefCount()); { AttributeGuard g2(av); - EXPECT_EQUAL(2u, gh.getGenerationRefCount()); + EXPECT_EQ(2u, gh.getGenerationRefCount()); } - EXPECT_EQUAL(1u, gh.getGenerationRefCount()); + EXPECT_EQ(1u, gh.getGenerationRefCount()); } - EXPECT_EQUAL(0u, gh.getGenerationRefCount()); + EXPECT_EQ(0u, gh.getGenerationRefCount()); dms->remove(1); dms->removeComplete(1); - EXPECT_EQUAL(4u, gh.getCurrentGeneration()); + EXPECT_EQ(4u, gh.getCurrentGeneration()); } -TEST("requireThatBasicFreeListIsWorking") +TEST(DocumentMetaStoreTest, basic_free_list_is_working) { GenerationHolder genHold; LidStateVector freeLids(100, 100, genHold, true, false); LidHoldList list; EXPECT_TRUE(freeLids.empty()); - EXPECT_EQUAL(0u, freeLids.count()); - EXPECT_EQUAL(0u, list.size()); + EXPECT_EQ(0u, freeLids.count()); + EXPECT_EQ(0u, list.size()); list.add(10, 10); EXPECT_TRUE(freeLids.empty()); - EXPECT_EQUAL(0u, freeLids.count()); - EXPECT_EQUAL(1u, list.size()); + EXPECT_EQ(0u, freeLids.count()); + EXPECT_EQ(1u, list.size()); list.add(20, 20); list.add(30, 30); EXPECT_TRUE(freeLids.empty()); - EXPECT_EQUAL(0u, freeLids.count()); - EXPECT_EQUAL(3u, list.size()); + EXPECT_EQ(0u, freeLids.count()); + EXPECT_EQ(3u, list.size()); list.trimHoldLists(20, freeLids); EXPECT_FALSE(freeLids.empty()); - EXPECT_EQUAL(1u, freeLids.count()); + EXPECT_EQ(1u, freeLids.count()); - EXPECT_EQUAL(10u, freeLids.getLowest()); + EXPECT_EQ(10u, freeLids.getLowest()); freeLids.clearBit(10); EXPECT_TRUE(freeLids.empty()); - EXPECT_EQUAL(0u, freeLids.count()); - EXPECT_EQUAL(2u, list.size()); + EXPECT_EQ(0u, freeLids.count()); + EXPECT_EQ(2u, list.size()); list.trimHoldLists(31, freeLids); EXPECT_FALSE(freeLids.empty()); - EXPECT_EQUAL(2u, freeLids.count()); + EXPECT_EQ(2u, freeLids.count()); - EXPECT_EQUAL(20u, freeLids.getLowest()); + EXPECT_EQ(20u, freeLids.getLowest()); freeLids.clearBit(20); EXPECT_FALSE(freeLids.empty()); - EXPECT_EQUAL(1u, freeLids.count()); - EXPECT_EQUAL(0u, list.size()); + EXPECT_EQ(1u, freeLids.count()); + EXPECT_EQ(0u, list.size()); - EXPECT_EQUAL(30u, freeLids.getLowest()); + EXPECT_EQ(30u, freeLids.getLowest()); freeLids.clearBit(30); EXPECT_TRUE(freeLids.empty()); - EXPECT_EQUAL(0u, list.size()); - EXPECT_EQUAL(0u, freeLids.count()); + EXPECT_EQ(0u, list.size()); + EXPECT_EQ(0u, freeLids.count()); } void @@ -448,24 +434,24 @@ assertLidStateVector(const std::vector<uint32_t> &expLids, uint32_t lowest, uint const LidStateVector &actLids) { if (!expLids.empty()) { - EXPECT_EQUAL(expLids.size(), actLids.count()); + EXPECT_EQ(expLids.size(), actLids.count()); uint32_t trueBit = 0; for (auto i : expLids) { EXPECT_TRUE(actLids.testBit(i)); trueBit = actLids.getNextTrueBit(trueBit); - EXPECT_EQUAL(i, trueBit); + EXPECT_EQ(i, trueBit); ++trueBit; } trueBit = actLids.getNextTrueBit(trueBit); - EXPECT_EQUAL(actLids.size(), trueBit); - EXPECT_EQUAL(lowest, actLids.getLowest()); - EXPECT_EQUAL(highest, actLids.getHighest()); + EXPECT_EQ(actLids.size(), trueBit); + EXPECT_EQ(lowest, actLids.getLowest()); + EXPECT_EQ(highest, actLids.getHighest()); } else { EXPECT_TRUE(actLids.empty()); } } -TEST("requireThatLidStateVectorResizingIsWorking") +TEST(DocumentMetaStoreTest, lid_state_vector_resizing_is_working) { GenerationHolder genHold; LidStateVector lids(1000, 1000, genHold, true, true); @@ -513,47 +499,47 @@ TEST("requireThatLidStateVectorResizingIsWorking") genHold.clearHoldLists(); } -TEST("requireThatLidAndGidSpaceIsReused") +TEST(DocumentMetaStoreTest, lid_and_gid_space_is_reused) { AttributeVector::SP av(new DocumentMetaStore(createBucketDB())); DocumentMetaStore * dms = static_cast<DocumentMetaStore *>(av.get()); dms->constructFreeList(); - EXPECT_EQUAL(1u, dms->getNumDocs()); - EXPECT_EQUAL(0u, dms->getNumUsedLids()); - EXPECT_TRUE(assertPut(bucketId1, time1, 1, gid1, *dms)); // -> gen 1 - EXPECT_EQUAL(2u, dms->getNumDocs()); - EXPECT_EQUAL(1u, dms->getNumUsedLids()); - EXPECT_TRUE(assertPut(bucketId2, time2, 2, gid2, *dms)); // -> gen 2 - EXPECT_EQUAL(3u, dms->getNumDocs()); - EXPECT_EQUAL(2u, dms->getNumUsedLids()); + EXPECT_EQ(1u, dms->getNumDocs()); + EXPECT_EQ(0u, dms->getNumUsedLids()); + assertPut(bucketId1, time1, 1, gid1, *dms); // -> gen 1 + EXPECT_EQ(2u, dms->getNumDocs()); + EXPECT_EQ(1u, dms->getNumUsedLids()); + assertPut(bucketId2, time2, 2, gid2, *dms); // -> gen 2 + EXPECT_EQ(3u, dms->getNumDocs()); + EXPECT_EQ(2u, dms->getNumUsedLids()); dms->remove(2); // -> gen 3 dms->removeComplete(2); // -> gen 4 - EXPECT_EQUAL(3u, dms->getNumDocs()); - EXPECT_EQUAL(1u, dms->getNumUsedLids()); + EXPECT_EQ(3u, dms->getNumDocs()); + EXPECT_EQ(1u, dms->getNumUsedLids()); // -> gen 5 (reuse of lid 2) - EXPECT_TRUE(assertPut(bucketId3, time3, 2, gid3, *dms)); - EXPECT_EQUAL(3u, dms->getNumDocs()); - EXPECT_EQUAL(2u, dms->getNumUsedLids()); // reuse - EXPECT_TRUE(assertGid(gid3, 2, *dms)); + assertPut(bucketId3, time3, 2, gid3, *dms); + EXPECT_EQ(3u, dms->getNumDocs()); + EXPECT_EQ(2u, dms->getNumUsedLids()); // reuse + assertGid(gid3, 2, *dms); { AttributeGuard g1(av); // guard on gen 5 dms->remove(2); dms->removeComplete(2); - EXPECT_EQUAL(3u, dms->getNumDocs()); - EXPECT_EQUAL(1u, dms->getNumUsedLids()); // lid 2 free but guarded - EXPECT_TRUE(assertPut(bucketId4, time4, 3, gid4, *dms)); - EXPECT_EQUAL(4u, dms->getNumDocs()); // generation guarded, new lid - EXPECT_EQUAL(2u, dms->getNumUsedLids()); - EXPECT_TRUE(assertGid(gid4, 3, *dms)); + EXPECT_EQ(3u, dms->getNumDocs()); + EXPECT_EQ(1u, dms->getNumUsedLids()); // lid 2 free but guarded + assertPut(bucketId4, time4, 3, gid4, *dms); + EXPECT_EQ(4u, dms->getNumDocs()); // generation guarded, new lid + EXPECT_EQ(2u, dms->getNumUsedLids()); + assertGid(gid4, 3, *dms); } - EXPECT_TRUE(assertPut(bucketId5, time5, 4, gid5, *dms)); - EXPECT_EQUAL(5u, dms->getNumDocs()); // reuse blocked by previous guard. released at end of put() - EXPECT_EQUAL(3u, dms->getNumUsedLids()); - EXPECT_TRUE(assertGid(gid5, 4, *dms)); - EXPECT_TRUE(assertPut(bucketId2, time2, 2, gid2, *dms)); // reuse of lid 2 - EXPECT_EQUAL(5u, dms->getNumDocs()); - EXPECT_EQUAL(4u, dms->getNumUsedLids()); - EXPECT_TRUE(assertGid(gid2, 2, *dms)); + assertPut(bucketId5, time5, 4, gid5, *dms); + EXPECT_EQ(5u, dms->getNumDocs()); // reuse blocked by previous guard. released at end of put() + EXPECT_EQ(3u, dms->getNumUsedLids()); + assertGid(gid5, 4, *dms); + assertPut(bucketId2, time2, 2, gid2, *dms); // reuse of lid 2 + EXPECT_EQ(5u, dms->getNumDocs()); + EXPECT_EQ(4u, dms->getNumUsedLids()); + assertGid(gid2, 2, *dms); } GlobalId @@ -570,7 +556,7 @@ createGid(uint32_t userId, uint32_t lid) return docId.getGlobalId(); } -TEST("requireThatWeCanStoreBucketIdAndTimestamp") +TEST(DocumentMetaStoreTest, can_store_bucket_id_and_timestamp) { DocumentMetaStore dms(createBucketDB()); uint32_t numLids = 1000; @@ -581,19 +567,19 @@ TEST("requireThatWeCanStoreBucketIdAndTimestamp") BucketId bucketId(gid.convertToBucketId()); bucketId.setUsedBits(numBucketBits); uint32_t addLid = addGid(dms, gid, bucketId, Timestamp(lid + timestampBias)); - EXPECT_EQUAL(lid, addLid); + EXPECT_EQ(lid, addLid); } for (uint32_t lid = 1; lid <= numLids; ++lid) { GlobalId gid = createGid(lid); BucketId bucketId(gid.convertToBucketId()); bucketId.setUsedBits(numBucketBits); - EXPECT_TRUE(assertGid(gid, lid, dms, bucketId, - Timestamp(lid + timestampBias))); - EXPECT_TRUE(assertLid(lid, gid, dms)); + assertGid(gid, lid, dms, bucketId, + Timestamp(lid + timestampBias)); + assertLid(lid, gid, dms); } } -TEST("requireThatGidsCanBeSavedAndLoaded") +TEST(DocumentMetaStoreTest, gids_can_be_saved_and_loaded) { DocumentMetaStore dms1(createBucketDB()); uint32_t numLids = 1000; @@ -608,7 +594,7 @@ TEST("requireThatGidsCanBeSavedAndLoaded") BucketId bucketId(gid.convertToBucketId()); bucketId.setUsedBits(numBucketBits); uint32_t addLid = addGid(dms1, gid, bucketId, Timestamp(lid + timestampBias)); - EXPECT_EQUAL(lid, addLid); + EXPECT_EQ(lid, addLid); } for (size_t i = 0; i < removeLids.size(); ++i) { dms1.remove(removeLids[i]); @@ -616,7 +602,7 @@ TEST("requireThatGidsCanBeSavedAndLoaded") } uint64_t expSaveBytesSize = DocumentMetaStore::minHeaderLen + (1000 - 4) * DocumentMetaStore::entrySize; - EXPECT_EQUAL(expSaveBytesSize, dms1.getEstimatedSaveByteSize()); + EXPECT_EQ(expSaveBytesSize, dms1.getEstimatedSaveByteSize()); TuneFileAttributes tuneFileAttributes; DummyFileHeaderContext fileHeaderContext; AttributeFileSaveTarget saveTarget(tuneFileAttributes, fileHeaderContext); @@ -625,16 +611,16 @@ TEST("requireThatGidsCanBeSavedAndLoaded") DocumentMetaStore dms2(createBucketDB(), "documentmetastore2"); EXPECT_TRUE(dms2.load()); dms2.constructFreeList(); - EXPECT_EQUAL(numLids + 1, dms2.getNumDocs()); - EXPECT_EQUAL(numLids - 4, dms2.getNumUsedLids()); // 4 removed + EXPECT_EQ(numLids + 1, dms2.getNumDocs()); + EXPECT_EQ(numLids - 4, dms2.getNumUsedLids()); // 4 removed for (uint32_t lid = 1; lid <= numLids; ++lid) { GlobalId gid = createGid(lid); BucketId bucketId(gid.convertToBucketId()); bucketId.setUsedBits(numBucketBits); if (std::count(removeLids.begin(), removeLids.end(), lid) == 0) { - EXPECT_TRUE(assertGid(gid, lid, dms2, bucketId, - Timestamp(lid + timestampBias))); - EXPECT_TRUE(assertLid(lid, gid, dms2)); + assertGid(gid, lid, dms2, bucketId, + Timestamp(lid + timestampBias)); + assertLid(lid, gid, dms2); } else { LOG(info, "Lid %u was removed before saving", lid); uint32_t myLid; @@ -651,43 +637,43 @@ TEST("requireThatGidsCanBeSavedAndLoaded") gid.convertToBucketId().getRawId()); // re-use removeLid[i] uint32_t addLid = addGid(dms2, gid, bucketId, Timestamp(43u + i)); - EXPECT_EQUAL(removeLids[i], addLid); - EXPECT_EQUAL(numLids + 1, dms2.getNumDocs()); - EXPECT_EQUAL(numLids - (3 - i), dms2.getNumUsedLids()); + EXPECT_EQ(removeLids[i], addLid); + EXPECT_EQ(numLids + 1, dms2.getNumDocs()); + EXPECT_EQ(numLids - (3 - i), dms2.getNumUsedLids()); } } -TEST("requireThatStatsAreUpdated") +TEST(DocumentMetaStore, stats_are_updated) { DocumentMetaStore dms(createBucketDB()); dms.constructFreeList(); size_t perGidUsed = sizeof(uint32_t) + GlobalId::LENGTH; - EXPECT_EQUAL(1u, dms.getStatus().getNumDocs()); - EXPECT_EQUAL(1u, dms.getStatus().getNumValues()); + EXPECT_EQ(1u, dms.getStatus().getNumDocs()); + EXPECT_EQ(1u, dms.getStatus().getNumValues()); uint64_t lastAllocated = dms.getStatus().getAllocated(); uint64_t lastUsed = dms.getStatus().getUsed(); - EXPECT_GREATER(lastAllocated, perGidUsed); - EXPECT_GREATER(lastUsed, perGidUsed); + EXPECT_GT(lastAllocated, perGidUsed); + EXPECT_GT(lastUsed, perGidUsed); std::this_thread::sleep_for(6000ms); addGid(dms, gid1, bucketId1, time1); - EXPECT_EQUAL(2u, dms.getStatus().getNumDocs()); - EXPECT_EQUAL(2u, dms.getStatus().getNumValues()); - EXPECT_GREATER_EQUAL(dms.getStatus().getAllocated(), lastAllocated); - EXPECT_GREATER_EQUAL(dms.getStatus().getAllocated(), lastUsed); - EXPECT_GREATER(dms.getStatus().getUsed(), lastUsed); - EXPECT_GREATER(dms.getStatus().getUsed(), 2 * perGidUsed); + EXPECT_EQ(2u, dms.getStatus().getNumDocs()); + EXPECT_EQ(2u, dms.getStatus().getNumValues()); + EXPECT_GE(dms.getStatus().getAllocated(), lastAllocated); + EXPECT_GE(dms.getStatus().getAllocated(), lastUsed); + EXPECT_GT(dms.getStatus().getUsed(), lastUsed); + EXPECT_GT(dms.getStatus().getUsed(), 2 * perGidUsed); lastAllocated = dms.getStatus().getAllocated(); lastUsed = dms.getStatus().getUsed(); addGid(dms, gid2, bucketId2, time2); dms.commit(true); - EXPECT_EQUAL(3u, dms.getStatus().getNumDocs()); - EXPECT_EQUAL(3u, dms.getStatus().getNumValues()); - EXPECT_GREATER_EQUAL(dms.getStatus().getAllocated(), lastAllocated); - EXPECT_GREATER_EQUAL(dms.getStatus().getAllocated(), lastUsed); - EXPECT_GREATER(dms.getStatus().getUsed(), lastUsed); - EXPECT_GREATER(dms.getStatus().getUsed(), 3 * perGidUsed); + EXPECT_EQ(3u, dms.getStatus().getNumDocs()); + EXPECT_EQ(3u, dms.getStatus().getNumValues()); + EXPECT_GE(dms.getStatus().getAllocated(), lastAllocated); + EXPECT_GE(dms.getStatus().getAllocated(), lastUsed); + EXPECT_GT(dms.getStatus().getUsed(), lastUsed); + EXPECT_GT(dms.getStatus().getUsed(), 3 * perGidUsed); LOG(info, "stats after 2 gids added: allocated %d, used is %d > %d (3 * %d)", static_cast<int>(dms.getStatus().getAllocated()), @@ -696,49 +682,47 @@ TEST("requireThatStatsAreUpdated") static_cast<int>(perGidUsed)); } -TEST("requireThatWeCanPutAndRemoveBeforeFreeListConstruct") +TEST(DocumentMetaStoreTest, can_put_and_remove_before_free_list_construct) { DocumentMetaStore dms(createBucketDB()); EXPECT_TRUE(dms.put(gid4, bucketId4, time4, docSize4, 4).ok()); - EXPECT_TRUE(assertLid(4, gid4, dms)); - EXPECT_TRUE(assertGid(gid4, 4, dms)); - EXPECT_EQUAL(1u, dms.getNumUsedLids()); - EXPECT_EQUAL(5u, dms.getNumDocs()); + assertLid(4, gid4, dms); + assertGid(gid4, 4, dms); + EXPECT_EQ(1u, dms.getNumUsedLids()); + EXPECT_EQ(5u, dms.getNumDocs()); EXPECT_TRUE(dms.put(gid1, bucketId1, time1, docSize1, 1).ok()); // already there, nothing changes EXPECT_TRUE(dms.put(gid1, bucketId1, time1, docSize1, 1).ok()); - EXPECT_TRUE(assertLid(1, gid1, dms)); - EXPECT_TRUE(assertGid(gid1, 1, dms)); - EXPECT_EQUAL(2u, dms.getNumUsedLids()); - EXPECT_EQUAL(5u, dms.getNumDocs()); + assertLid(1, gid1, dms); + assertGid(gid1, 1, dms); + EXPECT_EQ(2u, dms.getNumUsedLids()); + EXPECT_EQ(5u, dms.getNumDocs()); // gid1 already there with lid 1 - EXPECT_EXCEPTION(dms.put(gid1, bucketId1, time1, docSize1, 2).ok(), - vespalib::IllegalStateException, - "gid found, but using another lid"); - EXPECT_EXCEPTION(dms.put(gid5, bucketId5, time5, docSize5, 1).ok(), - vespalib::IllegalStateException, - "gid not found, but lid is used by another gid"); - EXPECT_TRUE(assertLid(1, gid1, dms)); - EXPECT_TRUE(assertGid(gid1, 1, dms)); - EXPECT_EQUAL(2u, dms.getNumUsedLids()); - EXPECT_EQUAL(5u, dms.getNumDocs()); + EXPECT_THROW(dms.put(gid1, bucketId1, time1, docSize1, 2).ok(), + vespalib::IllegalStateException); + EXPECT_THROW(dms.put(gid5, bucketId5, time5, docSize5, 1).ok(), + vespalib::IllegalStateException); + assertLid(1, gid1, dms); + assertGid(gid1, 1, dms); + EXPECT_EQ(2u, dms.getNumUsedLids()); + EXPECT_EQ(5u, dms.getNumDocs()); EXPECT_TRUE(dms.remove(4)); // -> goes to free list. cleared and re-applied in constructFreeList(). uint32_t lid; GlobalId gid; EXPECT_TRUE(!dms.getLid(gid4, lid)); EXPECT_TRUE(!dms.getGid(4, gid)); - EXPECT_EQUAL(1u, dms.getNumUsedLids()); - EXPECT_EQUAL(5u, dms.getNumDocs()); + EXPECT_EQ(1u, dms.getNumUsedLids()); + EXPECT_EQ(5u, dms.getNumDocs()); dms.constructFreeList(); - EXPECT_EQUAL(1u, dms.getNumUsedLids()); - EXPECT_EQUAL(5u, dms.getNumDocs()); - EXPECT_TRUE(assertPut(bucketId2, time2, 2, gid2, dms)); - EXPECT_TRUE(assertPut(bucketId3, time3, 3, gid3, dms)); - EXPECT_EQUAL(3u, dms.getNumUsedLids()); - EXPECT_EQUAL(5u, dms.getNumDocs()); + EXPECT_EQ(1u, dms.getNumUsedLids()); + EXPECT_EQ(5u, dms.getNumDocs()); + assertPut(bucketId2, time2, 2, gid2, dms); + assertPut(bucketId3, time3, 3, gid3, dms); + EXPECT_EQ(3u, dms.getNumUsedLids()); + EXPECT_EQ(5u, dms.getNumDocs()); } -TEST("requireThatWeCanSortGids") +TEST(DocumentMetaStoreTest, can_sort_gids) { DocumentMetaStore dms(createBucketDB()); DocumentMetaStore rdms(createBucketDB(), @@ -756,9 +740,9 @@ TEST("requireThatWeCanSortGids") BucketId bucketId(minNumBits, gid.convertToBucketId().getRawId()); uint32_t addLid = addGid(dms, gid, bucketId, Timestamp(0u)); - EXPECT_EQUAL(lid, addLid); + EXPECT_EQ(lid, addLid); uint32_t addLid2 = addGid(rdms, gid, bucketId, Timestamp(0u)); - EXPECT_EQUAL(lid, addLid2); + EXPECT_EQ(lid, addLid2); } std::vector<uint32_t> lids; std::vector<uint32_t> rlids; @@ -767,10 +751,10 @@ TEST("requireThatWeCanSortGids") for (DocumentMetaStore::ConstIterator rit = rdms.beginFrozen(); rit.valid(); ++rit) rlids.push_back(rit.getKey()); - EXPECT_EQUAL(numLids, lids.size()); - EXPECT_EQUAL(numLids, rlids.size()); + EXPECT_EQ(numLids, lids.size()); + EXPECT_EQ(numLids, rlids.size()); for (uint32_t i = 0; i < numLids; ++i) { - EXPECT_EQUAL(lids[numLids - 1 - i], rlids[i]); + EXPECT_EQ(lids[numLids - 1 - i], rlids[i]); } } @@ -791,7 +775,7 @@ requireThatBasicBucketInfoWorks() BucketId bucketId(minNumBits, gid.convertToBucketId().getRawId()); uint32_t addLid = addGid(dms, gid, bucketId, timestamp); - EXPECT_EQUAL(lid, addLid); + EXPECT_EQ(lid, addLid); m[std::make_pair(bucketId, gid)] = timestamp; } for (uint32_t lid = 2; lid <= numLids; lid += 7) { @@ -801,7 +785,7 @@ requireThatBasicBucketInfoWorks() BucketId bucketId(minNumBits, gid.convertToBucketId().getRawId()); uint32_t addLid = addGid(dms, gid, bucketId, timestamp); - EXPECT_EQUAL(lid, addLid); + EXPECT_EQ(lid, addLid); m[std::make_pair(bucketId, gid)] = timestamp; } for (uint32_t lid = 3; lid <= numLids; lid += 5) { @@ -824,8 +808,8 @@ requireThatBasicBucketInfoWorks() ++cnt; } else { BucketInfo bi = bucketDB->get(prevBucket); - EXPECT_EQUAL(cnt, bi.getDocumentCount()); - EXPECT_EQUAL(cksum.getChecksum(), bi.getChecksum()); + EXPECT_EQ(cnt, bi.getDocumentCount()); + EXPECT_EQ(cksum.getChecksum(), bi.getChecksum()); prevBucket = i->first.first; cksum = ChecksumType(BucketChecksum(0)); cksum.addDoc(i->first.second, i->second); @@ -835,12 +819,12 @@ requireThatBasicBucketInfoWorks() } maxcnt = std::max(maxcnt, cnt); BucketInfo bi = bucketDB->get(prevBucket); - EXPECT_EQUAL(cnt, bi.getDocumentCount()); - EXPECT_EQUAL(cksum.getChecksum(), bi.getChecksum()); + EXPECT_EQ(cnt, bi.getDocumentCount()); + EXPECT_EQ(cksum.getChecksum(), bi.getChecksum()); LOG(info, "Largest bucket: %u elements", maxcnt); } -TEST("requireThatBasicBucketInfoWorks") +TEST(DocumentMetaStoreTest, basic_bucket_info_works) { BucketState::setChecksumType(BucketState::ChecksumType::LEGACY); requireThatBasicBucketInfoWorks<LegacyChecksumAggregator>(); @@ -848,10 +832,10 @@ TEST("requireThatBasicBucketInfoWorks") requireThatBasicBucketInfoWorks<XXH64ChecksumAggregator>(); } -TEST("requireThatWeCanRetrieveListOfLidsFromBucketId") +TEST(DocumentMetaStoreTest, can_retrieve_list_of_lids_from_bucket_id) { - typedef std::vector<uint32_t> LidVector; - typedef std::map<BucketId, LidVector> Map; + using LidVector = std::vector<uint32_t>; + using Map = std::map<BucketId, LidVector>; DocumentMetaStore dms(createBucketDB()); const uint32_t bucketBits = 2; // -> 4 buckets uint32_t numLids = 1000; @@ -864,12 +848,12 @@ TEST("requireThatWeCanRetrieveListOfLidsFromBucketId") BucketId bucketId(bucketBits, gid.convertToBucketId().getRawId()); uint32_t addLid = addGid(dms, gid, bucketId, Timestamp(0)); - EXPECT_EQUAL(lid, addLid); + EXPECT_EQ(lid, addLid); m[bucketId].push_back(lid); } // Verify that bucket id x has y lids - EXPECT_EQUAL(4u, m.size()); + EXPECT_EQ(4u, m.size()); for (Map::const_iterator itr = m.begin(); itr != m.end(); ++itr) { const BucketId &bucketId = itr->first; const LidVector &expLids = itr->second; @@ -877,7 +861,7 @@ TEST("requireThatWeCanRetrieveListOfLidsFromBucketId") bucketId.toString().c_str(), expLids.size()); LidVector actLids; dms.getLids(bucketId, actLids); - EXPECT_EQUAL(expLids.size(), actLids.size()); + EXPECT_EQ(expLids.size(), actLids.size()); for (size_t i = 0; i < expLids.size(); ++i) { EXPECT_TRUE(std::find(actLids.begin(), actLids.end(), expLids[i]) != actLids.end()); } @@ -916,7 +900,7 @@ struct UserDocFixture { ~UserDocFixture(); void addGlobalId(const GlobalId &gid, uint32_t expLid, uint32_t timestampConst = 100) { uint32_t actLid = addGid(dms, gid, Timestamp(expLid + timestampConst)); - EXPECT_EQUAL(expLid, actLid); + EXPECT_EQ(expLid, actLid); } void putGlobalId(const GlobalId &gid, uint32_t lid, uint32_t timestampConst = 100) { putGid(dms, gid, lid, Timestamp(lid + timestampConst)); @@ -954,13 +938,13 @@ UserDocFixture::addGlobalIds(size_t numGids) { } } -TEST("requireThatWeCanRetrieveListOfMetaDataFromBucketId") +TEST(DocumentMetaStoreTest, can_retrieve_list_of_meta_data_from_bucket_id) { UserDocFixture f; { // empty bucket DocumentMetaData::Vector result; f.dms.getMetaData(f.bid1, result); - EXPECT_EQUAL(0u, result.size()); + EXPECT_EQ(0u, result.size()); } f.dms.constructFreeList(); f.addGlobalIds(); @@ -968,137 +952,137 @@ TEST("requireThatWeCanRetrieveListOfMetaDataFromBucketId") DocumentMetaData::Vector result; f.dms.getMetaData(f.bid1, result); std::sort(result.begin(), result.end(), Comparator()); - EXPECT_EQUAL(4u, result.size()); - EXPECT_TRUE(assertMetaData(DocumentMetaData(1, Timestamp(101), f.bid1, - f.gids[0]), result[0])); - EXPECT_TRUE(assertMetaData(DocumentMetaData(2, Timestamp(102), f.bid1, - f.gids[1]), result[1])); - EXPECT_TRUE(assertMetaData(DocumentMetaData(4, Timestamp(104), f.bid1, - f.gids[3]), result[2])); - EXPECT_TRUE(assertMetaData(DocumentMetaData(5, Timestamp(105), f.bid1, - f.gids[4]), result[3])); + EXPECT_EQ(4u, result.size()); + assertMetaData(DocumentMetaData(1, Timestamp(101), f.bid1, + f.gids[0]), result[0]); + assertMetaData(DocumentMetaData(2, Timestamp(102), f.bid1, + f.gids[1]), result[1]); + assertMetaData(DocumentMetaData(4, Timestamp(104), f.bid1, + f.gids[3]), result[2]); + assertMetaData(DocumentMetaData(5, Timestamp(105), f.bid1, + f.gids[4]), result[3]); } { // verify bucket 2 DocumentMetaData::Vector result; f.dms.getMetaData(f.bid2, result); std::sort(result.begin(), result.end(), Comparator()); - EXPECT_EQUAL(3u, result.size()); - EXPECT_TRUE(assertMetaData(DocumentMetaData(3, Timestamp(103), f.bid2, - f.gids[2]), result[0])); - EXPECT_TRUE(assertMetaData(DocumentMetaData(6, Timestamp(106), f.bid2, - f.gids[5]), result[1])); - EXPECT_TRUE(assertMetaData(DocumentMetaData(7, Timestamp(107), f.bid2, - f.gids[6]), result[2])); + EXPECT_EQ(3u, result.size()); + assertMetaData(DocumentMetaData(3, Timestamp(103), f.bid2, + f.gids[2]), result[0]); + assertMetaData(DocumentMetaData(6, Timestamp(106), f.bid2, + f.gids[5]), result[1]); + assertMetaData(DocumentMetaData(7, Timestamp(107), f.bid2, + f.gids[6]), result[2]); } } -TEST("requireThatBucketStateCanBeUpdated") +TEST(DocumentMetaStoreTest, bucket_state_can_be_updated) { UserDocFixture f; f.dms.constructFreeList(); - EXPECT_EQUAL(1u, f.dms.getActiveLids().size()); // lid 0 is reserved + EXPECT_EQ(1u, f.dms.getActiveLids().size()); // lid 0 is reserved f.addGlobalIds(); - EXPECT_TRUE(assertActiveLids(BoolVector().F().F().F().F().F().F().F(), f.dms.getActiveLids())); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().F().F().F().F().F().F().F(), f.dms.getActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid1).isActive()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid2).isActive()); f.dms.setBucketState(f.bid1, true); - EXPECT_TRUE(assertActiveLids(BoolVector().T().T().F().T().T().F().F(), f.dms.getActiveLids())); - EXPECT_EQUAL(4u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().T().T().F().T().T().F().F(), f.dms.getActiveLids()); + EXPECT_EQ(4u, f.dms.getNumActiveLids()); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->get(f.bid1).isActive()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid2).isActive()); f.dms.setBucketState(f.bid2, true); - EXPECT_TRUE(assertActiveLids(BoolVector().T().T().T().T().T().T().T(), f.dms.getActiveLids())); - EXPECT_EQUAL(7u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().T().T().T().T().T().T().T(), f.dms.getActiveLids()); + EXPECT_EQ(7u, f.dms.getNumActiveLids()); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->get(f.bid1).isActive()); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->get(f.bid2).isActive()); f.addGlobalId(createGid(30, 8), 8); f.addGlobalId(createGid(10, 9), 9); // bid1 is active so added document should be active as well - EXPECT_TRUE(assertActiveLids(BoolVector().T().T().T().T().T().T().T().F().T(), f.dms.getActiveLids())); - EXPECT_EQUAL(8u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().T().T().T().T().T().T().T().F().T(), f.dms.getActiveLids()); + EXPECT_EQ(8u, f.dms.getNumActiveLids()); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->get(f.bid1).isActive()); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->get(f.bid2).isActive()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid3).isActive()); f.dms.setBucketState(f.bid1, false); - EXPECT_TRUE(assertActiveLids(BoolVector().F().F().T().F().F().T().T().F().F(), f.dms.getActiveLids())); - EXPECT_EQUAL(3u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().F().F().T().F().F().T().T().F().F(), f.dms.getActiveLids()); + EXPECT_EQ(3u, f.dms.getNumActiveLids()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid1).isActive()); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->get(f.bid2).isActive()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid3).isActive()); f.dms.setBucketState(f.bid2, false); - EXPECT_TRUE(assertActiveLids(BoolVector().F().F().F().F().F().F().F().F().F(), f.dms.getActiveLids())); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().F().F().F().F().F().F().F().F().F(), f.dms.getActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid1).isActive()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid2).isActive()); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->get(f.bid3).isActive()); } -TEST("requireThatRemovedLidsAreClearedAsActive") +TEST(DocumentMetaStoreTest, removed_lids_are_cleared_as_active) { UserDocFixture f; f.dms.constructFreeList(); f.addGlobalIds(2); f.dms.setBucketState(f.bid1, true); - EXPECT_TRUE(assertActiveLids(BoolVector().T().T(), f.dms.getActiveLids())); - EXPECT_EQUAL(2u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().T().T(), f.dms.getActiveLids()); + EXPECT_EQ(2u, f.dms.getNumActiveLids()); f.dms.remove(2); f.dms.removeComplete(2); - EXPECT_TRUE(assertActiveLids(BoolVector().T().F(), f.dms.getActiveLids())); - EXPECT_EQUAL(1u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().T().F(), f.dms.getActiveLids()); + EXPECT_EQ(1u, f.dms.getNumActiveLids()); f.addGlobalId(f.gids[2], 2); // from bid2 - EXPECT_TRUE(assertActiveLids(BoolVector().T().F(), f.dms.getActiveLids())); - EXPECT_EQUAL(1u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().T().F(), f.dms.getActiveLids()); + EXPECT_EQ(1u, f.dms.getNumActiveLids()); f.dms.remove(2); f.dms.removeComplete(2); f.addGlobalId(f.gids[3], 2); // from bid1 - EXPECT_TRUE(assertActiveLids(BoolVector().T().T(), f.dms.getActiveLids())); - EXPECT_EQUAL(2u, f.dms.getNumActiveLids()); + assertActiveLids(BoolVector().T().T(), f.dms.getActiveLids()); + EXPECT_EQ(2u, f.dms.getNumActiveLids()); } -TEST("require that whitelist blueprint is created") +TEST(DocumentMetaStoreTest, whitelist_blueprint_is_created) { UserDocFixture f; f.dms.constructFreeList(); f.addGlobalIds(); f.dms.setBucketState(f.bid1, true); - EXPECT_TRUE(assertWhiteList(SimpleResult().addHit(1).addHit(2).addHit(4).addHit(5), f.dms.createWhiteListBlueprint(), - true, f.dms.getCommittedDocIdLimit())); + assertWhiteList(SimpleResult().addHit(1).addHit(2).addHit(4).addHit(5), f.dms.createWhiteListBlueprint(), + true, f.dms.getCommittedDocIdLimit()); f.dms.setBucketState(f.bid2, true); - EXPECT_TRUE(assertWhiteList(SimpleResult().addHit(1).addHit(2).addHit(3).addHit(4).addHit(5).addHit(6).addHit(7), f.dms.createWhiteListBlueprint(), - true, f.dms.getCommittedDocIdLimit())); + assertWhiteList(SimpleResult().addHit(1).addHit(2).addHit(3).addHit(4).addHit(5).addHit(6).addHit(7), f.dms.createWhiteListBlueprint(), + true, f.dms.getCommittedDocIdLimit()); } -TEST("requireThatDocumentAndMetaEntryCountIsUpdated") +TEST(DocumentMetaStoreTest, document_and_meta_entry_count_is_updated) { UserDocFixture f; f.dms.constructFreeList(); - EXPECT_EQUAL(0u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getDocumentCount()); - EXPECT_EQUAL(0u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getEntryCount()); - EXPECT_EQUAL(0u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getDocumentCount()); - EXPECT_EQUAL(0u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getEntryCount()); + EXPECT_EQ(0u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getDocumentCount()); + EXPECT_EQ(0u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getEntryCount()); + EXPECT_EQ(0u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getDocumentCount()); + EXPECT_EQ(0u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getEntryCount()); f.addGlobalIds(); - EXPECT_EQUAL(4u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getDocumentCount()); - EXPECT_EQUAL(4u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getEntryCount()); - EXPECT_EQUAL(3u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getDocumentCount()); - EXPECT_EQUAL(3u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getEntryCount()); + EXPECT_EQ(4u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getDocumentCount()); + EXPECT_EQ(4u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getEntryCount()); + EXPECT_EQ(3u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getDocumentCount()); + EXPECT_EQ(3u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getEntryCount()); f.dms.remove(3); // from bid2 f.dms.removeComplete(3); - EXPECT_EQUAL(4u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getDocumentCount()); - EXPECT_EQUAL(4u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getEntryCount()); - EXPECT_EQUAL(2u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getDocumentCount()); - EXPECT_EQUAL(2u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getEntryCount()); + EXPECT_EQ(4u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getDocumentCount()); + EXPECT_EQ(4u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getEntryCount()); + EXPECT_EQ(2u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getDocumentCount()); + EXPECT_EQ(2u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getEntryCount()); } -TEST("requireThatEmptyBucketsAreRemoved") +TEST(DocumentMetaStoreTest, empty_buckets_are_removed) { UserDocFixture f; f.dms.constructFreeList(); @@ -1111,7 +1095,7 @@ TEST("requireThatEmptyBucketsAreRemoved") f.dms.removeComplete(3); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->hasBucket(f.bid1)); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->hasBucket(f.bid2)); - EXPECT_EQUAL(0u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getEntryCount()); + EXPECT_EQ(0u, f.dms.getBucketDB().takeGuard()->get(f.bid2).getEntryCount()); f._bucketDBHandler.handleDeleteBucket(f.bid2); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->hasBucket(f.bid2)); f.dms.remove(1); // from bid1 @@ -1121,13 +1105,12 @@ TEST("requireThatEmptyBucketsAreRemoved") f.dms.remove(2); // from bid1 f.dms.removeComplete(2); EXPECT_TRUE(f.dms.getBucketDB().takeGuard()->hasBucket(f.bid1)); - EXPECT_EQUAL(0u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getEntryCount()); + EXPECT_EQ(0u, f.dms.getBucketDB().takeGuard()->get(f.bid1).getEntryCount()); f._bucketDBHandler.handleDeleteBucket(f.bid1); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->hasBucket(f.bid1)); EXPECT_FALSE(f.dms.getBucketDB().takeGuard()->hasBucket(f.bid2)); } - struct GlobalIdEntry { uint32_t lid; GlobalId gid; @@ -1143,10 +1126,9 @@ struct GlobalIdEntry { {} }; -typedef std::vector<GlobalIdEntry> GlobalIdVector; +using GlobalIdVector = std::vector<GlobalIdEntry>; -struct MyBucketCreateListener : public IBucketCreateListener -{ +struct MyBucketCreateListener : public IBucketCreateListener { std::vector<document::BucketId> _buckets; MyBucketCreateListener(); @@ -1162,15 +1144,13 @@ MyBucketCreateListener::~MyBucketCreateListener() { } - void MyBucketCreateListener::notifyCreateBucket(const document::BucketId &bucket) { _buckets.emplace_back(bucket); } -struct SplitAndJoinEmptyFixture -{ +struct SplitAndJoinEmptyFixture { DocumentMetaStore dms; BucketId bid10; BucketId bid11; @@ -1193,7 +1173,7 @@ struct SplitAndJoinEmptyFixture } void assertNotifyCreateBuckets(std::vector<document::BucketId> expBuckets) { - EXPECT_EQUAL(expBuckets, _bucketCreateListener._buckets); + EXPECT_EQ(expBuckets, _bucketCreateListener._buckets); } }; @@ -1214,8 +1194,7 @@ SplitAndJoinEmptyFixture::~SplitAndJoinEmptyFixture() } -struct SplitAndJoinFixture : public SplitAndJoinEmptyFixture -{ +struct SplitAndJoinFixture : public SplitAndJoinEmptyFixture { typedef std::map<BucketId, GlobalIdVector> BucketMap; GlobalIdVector gids; BucketMap bid1s; @@ -1282,9 +1261,9 @@ SplitAndJoinFixture::SplitAndJoinFixture() bid2s[gids.back().bid2].push_back(gids.back()); bid3s[gids.back().bid3].push_back(gids.back()); } - ASSERT_EQUAL(2u, bid1s.size()); - ASSERT_EQUAL(4u, bid2s.size()); - ASSERT_EQUAL(8u, bid3s.size()); + assert(2u == bid1s.size()); + assert(4u == bid2s.size()); + assert(8u == bid3s.size()); bid10Gids = &bid1s[bid10]; bid11Gids = &bid1s[bid11]; bid21Gids = &bid2s[bid21]; @@ -1300,7 +1279,7 @@ getBoolVector(const GlobalIdVector &gids, size_t sz) BoolVector retval(sz); for (size_t i = 0; i < gids.size(); ++i) { uint32_t lid(gids[i].lid); - ASSERT_TRUE(lid <= sz && lid > 0u); + assert(lid <= sz && lid > 0u); retval[lid - 1] = true; } return retval; @@ -1315,15 +1294,16 @@ getBoolVectorFiltered(const GlobalIdVector &gids, size_t sz, for (size_t i = 0; i < gids.size(); ++i) { const GlobalIdEntry &g(gids[i]); uint32_t lid(g.lid); - ASSERT_TRUE(lid <= sz && lid > 0u); - if (g.bid3 == skip) + assert(lid <= sz && lid > 0u); + if (g.bid3 == skip) { continue; + } retval[lid - 1] = true; } return retval; } -TEST("requireThatBucketInfoIsCorrectAfterSplit") +TEST(DocumentMetaStoreTest, bucket_info_is_correct_after_split) { SplitAndJoinFixture f; f.insertGids1(); @@ -1331,10 +1311,10 @@ TEST("requireThatBucketInfoIsCorrectAfterSplit") BucketInfo bi11 = f.getInfo(f.bid11); LOG(info, "%s: %s", f.bid10.toString().c_str(), bi10.toString().c_str()); LOG(info, "%s: %s", f.bid11.toString().c_str(), bi11.toString().c_str()); - EXPECT_TRUE(assertBucketInfo(f.bid10Gids->size(), f.bid10Gids->size(), bi10)); - EXPECT_TRUE(assertBucketInfo(f.bid11Gids->size(), f.bid11Gids->size(), bi11)); - EXPECT_NOT_EQUAL(bi10.getEntryCount(), bi11.getEntryCount()); - EXPECT_EQUAL(31u, bi10.getEntryCount() + bi11.getEntryCount()); + assertBucketInfo(f.bid10Gids->size(), f.bid10Gids->size(), bi10); + assertBucketInfo(f.bid11Gids->size(), f.bid11Gids->size(), bi11); + EXPECT_NE(bi10.getEntryCount(), bi11.getEntryCount()); + EXPECT_EQ(31u, bi10.getEntryCount() + bi11.getEntryCount()); f._bucketDBHandler.handleSplit(10, f.bid11, f.bid21, f.bid23); @@ -1346,25 +1326,24 @@ TEST("requireThatBucketInfoIsCorrectAfterSplit") LOG(info, "%s: %s", f.bid11.toString().c_str(), nbi11.toString().c_str()); LOG(info, "%s: %s", f.bid21.toString().c_str(), bi21.toString().c_str()); LOG(info, "%s: %s", f.bid23.toString().c_str(), bi23.toString().c_str()); - EXPECT_TRUE(assertBucketInfo(f.bid10Gids->size(), - f.bid10Gids->size(), - nbi10)); - EXPECT_TRUE(assertBucketInfo(0u, 0u, nbi11)); - EXPECT_TRUE(assertBucketInfo(f.bid21Gids->size(), - f.bid21Gids->size(), - bi21)); - EXPECT_TRUE(assertBucketInfo(f.bid23Gids->size(), - f.bid23Gids->size(), - bi23)); - EXPECT_EQUAL(bi11.getEntryCount(), - bi21.getEntryCount() + bi23.getEntryCount()); - EXPECT_EQUAL(bi11.getDocumentCount(), - bi21.getDocumentCount() + - bi23.getDocumentCount()); + assertBucketInfo(f.bid10Gids->size(), + f.bid10Gids->size(), + nbi10); + assertBucketInfo(0u, 0u, nbi11); + assertBucketInfo(f.bid21Gids->size(), + f.bid21Gids->size(), + bi21); + assertBucketInfo(f.bid23Gids->size(), + f.bid23Gids->size(), + bi23); + EXPECT_EQ(bi11.getEntryCount(), + bi21.getEntryCount() + bi23.getEntryCount()); + EXPECT_EQ(bi11.getDocumentCount(), + bi21.getDocumentCount() + bi23.getDocumentCount()); f.assertNotifyCreateBuckets({ f.bid21, f.bid23 }); } -TEST("requireThatActiveStateIsPreservedAfterSplit") +TEST(DocumentMetaStoreTest, active_state_is_preserved_after_split) { { // non-active bucket SplitAndJoinFixture f; @@ -1374,7 +1353,7 @@ TEST("requireThatActiveStateIsPreservedAfterSplit") EXPECT_FALSE(f.getInfo(f.bid20).isActive()); EXPECT_FALSE(f.getInfo(f.bid22).isActive()); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); } { // active bucket SplitAndJoinFixture f; @@ -1386,7 +1365,7 @@ TEST("requireThatActiveStateIsPreservedAfterSplit") EXPECT_TRUE(f.getInfo(f.bid22).isActive()); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); } { // non-active source, active overlapping target1 SplitAndJoinFixture f; @@ -1394,17 +1373,17 @@ TEST("requireThatActiveStateIsPreservedAfterSplit") EXPECT_FALSE(f.getInfo(f.bid10).isActive()); EXPECT_FALSE(f.getInfo(f.bid20).isActive()); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); f.dms.setBucketState(f.bid20, true); EXPECT_TRUE(f.getInfo(f.bid20).isActive()); assertActiveLids(getBoolVector(*f.bid30Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid30Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid30Gids->size(), f.dms.getNumActiveLids()); f._bucketDBHandler.handleSplit(10, f.bid10, f.bid20, f.bid22); EXPECT_FALSE(f.getInfo(f.bid20).isActive()); EXPECT_FALSE(f.getInfo(f.bid22).isActive()); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); } { // non-active source, active overlapping target2 SplitAndJoinFixture f; @@ -1412,17 +1391,17 @@ TEST("requireThatActiveStateIsPreservedAfterSplit") EXPECT_FALSE(f.getInfo(f.bid10).isActive()); EXPECT_FALSE(f.getInfo(f.bid20).isActive()); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); f.dms.setBucketState(f.bid22, true); EXPECT_TRUE(f.getInfo(f.bid22).isActive()); assertActiveLids(getBoolVector(*f.bid32Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid32Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid32Gids->size(), f.dms.getNumActiveLids()); f._bucketDBHandler.handleSplit(10, f.bid10, f.bid20, f.bid22); EXPECT_FALSE(f.getInfo(f.bid20).isActive()); EXPECT_FALSE(f.getInfo(f.bid22).isActive()); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); } { // active source, non-active overlapping target1 SplitAndJoinFixture f; @@ -1432,13 +1411,13 @@ TEST("requireThatActiveStateIsPreservedAfterSplit") EXPECT_FALSE(f.getInfo(f.bid20).isActive()); BoolVector filtered(getBoolVectorFiltered(*f.bid10Gids, 31, f.bid30)); assertActiveLids(filtered, f.dms.getActiveLids()); - EXPECT_EQUAL(filtered.countTrue(), f.dms.getNumActiveLids()); + EXPECT_EQ(filtered.countTrue(), f.dms.getNumActiveLids()); f._bucketDBHandler.handleSplit(10, f.bid10, f.bid20, f.bid22); EXPECT_TRUE(f.getInfo(f.bid20).isActive()); EXPECT_TRUE(f.getInfo(f.bid22).isActive()); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); } { // active source, non-active overlapping target2 SplitAndJoinFixture f; @@ -1448,17 +1427,17 @@ TEST("requireThatActiveStateIsPreservedAfterSplit") EXPECT_FALSE(f.getInfo(f.bid20).isActive()); BoolVector filtered(getBoolVectorFiltered(*f.bid10Gids, 31, f.bid32)); assertActiveLids(filtered, f.dms.getActiveLids()); - EXPECT_EQUAL(filtered.countTrue(), f.dms.getNumActiveLids()); + EXPECT_EQ(filtered.countTrue(), f.dms.getNumActiveLids()); f._bucketDBHandler.handleSplit(10, f.bid10, f.bid20, f.bid22); EXPECT_TRUE(f.getInfo(f.bid20).isActive()); EXPECT_TRUE(f.getInfo(f.bid22).isActive()); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); } } -TEST("requireThatActiveStateIsPreservedAfterEmptySplit") +TEST(DocumentMetaStoreTest, active_state_is_preserved_after_empty_split) { { // non-active bucket SplitAndJoinEmptyFixture f; @@ -1479,7 +1458,7 @@ TEST("requireThatActiveStateIsPreservedAfterEmptySplit") } } -TEST("requireThatBucketInfoIsCorrectAfterJoin") +TEST(DocumentMetaStoreTest, bucket_info_is_correct_after_join) { SplitAndJoinFixture f; f.insertGids2(); @@ -1487,10 +1466,10 @@ TEST("requireThatBucketInfoIsCorrectAfterJoin") BucketInfo bi23 = f.getInfo(f.bid23); LOG(info, "%s: %s", f.bid21.toString().c_str(), bi21.toString().c_str()); LOG(info, "%s: %s", f.bid23.toString().c_str(), bi23.toString().c_str()); - EXPECT_TRUE(assertBucketInfo(f.bid21Gids->size(), f.bid21Gids->size(), bi21)); - EXPECT_TRUE(assertBucketInfo(f.bid23Gids->size(), f.bid23Gids->size(), bi23)); - EXPECT_NOT_EQUAL(bi21.getEntryCount(), bi23.getEntryCount()); - EXPECT_EQUAL(f.bid11Gids->size(), bi21.getEntryCount() + bi23.getEntryCount()); + assertBucketInfo(f.bid21Gids->size(), f.bid21Gids->size(), bi21); + assertBucketInfo(f.bid23Gids->size(), f.bid23Gids->size(), bi23); + EXPECT_NE(bi21.getEntryCount(), bi23.getEntryCount()); + EXPECT_EQ(f.bid11Gids->size(), bi21.getEntryCount() + bi23.getEntryCount()); f._bucketDBHandler.handleJoin(10, f.bid21, f.bid23, f.bid11); BucketInfo bi11 = f.getInfo(f.bid11); @@ -1499,19 +1478,19 @@ TEST("requireThatBucketInfoIsCorrectAfterJoin") LOG(info, "%s: %s", f.bid11.toString().c_str(), bi11.toString().c_str()); LOG(info, "%s: %s", f.bid21.toString().c_str(), nbi21.toString().c_str()); LOG(info, "%s: %s", f.bid23.toString().c_str(), nbi23.toString().c_str()); - EXPECT_TRUE(assertBucketInfo(f.bid11Gids->size(), - f.bid11Gids->size(), bi11)); - EXPECT_TRUE(assertBucketInfo(0u, 0u, nbi21)); - EXPECT_TRUE(assertBucketInfo(0u, 0u, nbi23)); - EXPECT_EQUAL(bi21.getEntryCount() + bi23.getEntryCount(), - bi11.getEntryCount()); - EXPECT_EQUAL(bi21.getDocumentCount() + - bi23.getDocumentCount(), - bi11.getDocumentCount()); + assertBucketInfo(f.bid11Gids->size(), + f.bid11Gids->size(), bi11); + assertBucketInfo(0u, 0u, nbi21); + assertBucketInfo(0u, 0u, nbi23); + EXPECT_EQ(bi21.getEntryCount() + bi23.getEntryCount(), + bi11.getEntryCount()); + EXPECT_EQ(bi21.getDocumentCount() + + bi23.getDocumentCount(), + bi11.getDocumentCount()); f.assertNotifyCreateBuckets({ f.bid11 }); } -TEST("requireThatActiveStateIsPreservedAfterJoin") +TEST(DocumentMetaStoreTest, active_state_is_preserved_after_join) { { // non-active buckets SplitAndJoinFixture f; @@ -1522,7 +1501,7 @@ TEST("requireThatActiveStateIsPreservedAfterJoin") f._bucketDBHandler.handleJoin(10, f.bid20, f.bid22, f.bid10); EXPECT_FALSE(f.getInfo(f.bid10).isActive()); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); } { // active buckets SplitAndJoinFixture f; @@ -1536,7 +1515,7 @@ TEST("requireThatActiveStateIsPreservedAfterJoin") EXPECT_TRUE(f.getInfo(f.bid10).isActive()); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); } { // 1 active bucket SplitAndJoinFixture f; @@ -1549,7 +1528,7 @@ TEST("requireThatActiveStateIsPreservedAfterJoin") EXPECT_TRUE(f.getInfo(f.bid10).isActive()); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); } { // 1 active bucket SplitAndJoinFixture f; @@ -1562,7 +1541,7 @@ TEST("requireThatActiveStateIsPreservedAfterJoin") EXPECT_TRUE(f.getInfo(f.bid10).isActive()); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); } { // non-active buckets, active target SplitAndJoinFixture f; @@ -1573,12 +1552,12 @@ TEST("requireThatActiveStateIsPreservedAfterJoin") EXPECT_FALSE(f.getInfo(f.bid22).isActive()); assertActiveLids(getBoolVector(*f.bid30Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid30Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid30Gids->size(), f.dms.getNumActiveLids()); f._bucketDBHandler.handleJoin(10, f.bid20, f.bid22, f.bid10); EXPECT_FALSE(f.getInfo(f.bid10).isActive()); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); } { // non-active buckets, active target SplitAndJoinFixture f; @@ -1589,12 +1568,12 @@ TEST("requireThatActiveStateIsPreservedAfterJoin") EXPECT_FALSE(f.getInfo(f.bid22).isActive()); assertActiveLids(getBoolVector(*f.bid32Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid32Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid32Gids->size(), f.dms.getNumActiveLids()); f._bucketDBHandler.handleJoin(10, f.bid20, f.bid22, f.bid10); EXPECT_FALSE(f.getInfo(f.bid10).isActive()); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); } { // active buckets, non-active target SplitAndJoinFixture f; @@ -1606,13 +1585,13 @@ TEST("requireThatActiveStateIsPreservedAfterJoin") EXPECT_TRUE(f.getInfo(f.bid22).isActive()); BoolVector filtered(getBoolVectorFiltered(*f.bid10Gids, 31, f.bid30)); assertActiveLids(filtered, f.dms.getActiveLids()); - EXPECT_EQUAL(filtered.countTrue(), f.dms.getNumActiveLids()); + EXPECT_EQ(filtered.countTrue(), f.dms.getNumActiveLids()); f._bucketDBHandler.handleJoin(10, f.bid20, f.bid22, f.bid10); EXPECT_TRUE(f.getInfo(f.bid10).isActive()); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); } { // active buckets, non-active target SplitAndJoinFixture f; @@ -1624,17 +1603,17 @@ TEST("requireThatActiveStateIsPreservedAfterJoin") EXPECT_TRUE(f.getInfo(f.bid22).isActive()); BoolVector filtered(getBoolVectorFiltered(*f.bid10Gids, 31, f.bid32)); assertActiveLids(filtered, f.dms.getActiveLids()); - EXPECT_EQUAL(filtered.countTrue(), f.dms.getNumActiveLids()); + EXPECT_EQ(filtered.countTrue(), f.dms.getNumActiveLids()); f._bucketDBHandler.handleJoin(10, f.bid20, f.bid22, f.bid10); EXPECT_TRUE(f.getInfo(f.bid10).isActive()); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); } } -TEST("requireThatActiveStateIsPreservedAfterEmptyJoin") +TEST(DocumentMetaStoreTest, active_state_is_preserved_after_empty_join) { { // non-active buckets SplitAndJoinEmptyFixture f; @@ -1671,31 +1650,30 @@ TEST("requireThatActiveStateIsPreservedAfterEmptyJoin") } } -TEST("requireThatOverlappingBucketActiveStateWorks") +TEST(DocumentMetaStoreTest, overlapping_bucket_active_state_works) { SplitAndJoinFixture f; f.insertGids1Mostly(f.bid30); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); f.dms.setBucketState(f.bid10, true); BoolVector filtered(getBoolVectorFiltered(*f.bid10Gids, 31, f.bid30)); assertActiveLids(filtered, f.dms.getActiveLids()); - EXPECT_EQUAL(filtered.countTrue(), f.dms.getNumActiveLids()); + EXPECT_EQ(filtered.countTrue(), f.dms.getNumActiveLids()); f.dms.setBucketState(f.bid20, true); assertActiveLids(getBoolVector(*f.bid10Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid10Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid10Gids->size(), f.dms.getNumActiveLids()); f.dms.setBucketState(f.bid10, false); assertActiveLids(getBoolVector(*f.bid30Gids, 31), f.dms.getActiveLids()); - EXPECT_EQUAL(f.bid30Gids->size(), f.dms.getNumActiveLids()); + EXPECT_EQ(f.bid30Gids->size(), f.dms.getNumActiveLids()); f.dms.setBucketState(f.bid20, false); assertActiveLids(BoolVector(31), f.dms.getActiveLids()); - EXPECT_EQUAL(0u, f.dms.getNumActiveLids()); + EXPECT_EQ(0u, f.dms.getNumActiveLids()); } -struct RemovedFixture -{ +struct RemovedFixture { std::shared_ptr<BucketDBOwner> _bucketDB; DocumentMetaStore dms; bucketdb::BucketDBHandler _bucketDBHandler; @@ -1723,117 +1701,117 @@ RemovedFixture::RemovedFixture() } RemovedFixture::~RemovedFixture() {} -TEST("requireThatRemoveChangedBucketWorks") +TEST(DocumentMetaStoreTest, remove_changed_bucket_works) { RemovedFixture f; GlobalIdEntry g(1); f.dms.constructFreeList(); f._bucketDBHandler.handleCreateBucket(g.bid1); uint32_t addLid1 = addGid(f.dms, g.gid, g.bid1, Timestamp(0)); - EXPECT_EQUAL(1u, addLid1); + EXPECT_EQ(1u, addLid1); uint32_t addLid2 = addGid(f.dms, g.gid, g.bid2, Timestamp(0)); EXPECT_TRUE(1u == addLid2); EXPECT_TRUE(f.dms.remove(1u)); f.dms.removeComplete(1u); } -TEST("requireThatGetLidUsageStatsWorks") +TEST(DocumentMetaStoreTest, get_lid_usage_stats_works) { DocumentMetaStore dms(createBucketDB()); dms.constructFreeList(); LidUsageStats s = dms.getLidUsageStats(); - EXPECT_EQUAL(1u, s.getLidLimit()); - EXPECT_EQUAL(0u, s.getUsedLids()); - EXPECT_EQUAL(1u, s.getLowestFreeLid()); - EXPECT_EQUAL(0u, s.getHighestUsedLid()); + EXPECT_EQ(1u, s.getLidLimit()); + EXPECT_EQ(0u, s.getUsedLids()); + EXPECT_EQ(1u, s.getLowestFreeLid()); + EXPECT_EQ(0u, s.getHighestUsedLid()); putGid(dms, createGid(1), 1); s = dms.getLidUsageStats(); - EXPECT_EQUAL(2u, s.getLidLimit()); - EXPECT_EQUAL(1u, s.getUsedLids()); - EXPECT_EQUAL(2u, s.getLowestFreeLid()); - EXPECT_EQUAL(1u, s.getHighestUsedLid()); + EXPECT_EQ(2u, s.getLidLimit()); + EXPECT_EQ(1u, s.getUsedLids()); + EXPECT_EQ(2u, s.getLowestFreeLid()); + EXPECT_EQ(1u, s.getHighestUsedLid()); putGid(dms, createGid(2), 2); s = dms.getLidUsageStats(); - EXPECT_EQUAL(3u, s.getLidLimit()); - EXPECT_EQUAL(2u, s.getUsedLids()); - EXPECT_EQUAL(3u, s.getLowestFreeLid()); - EXPECT_EQUAL(2u, s.getHighestUsedLid()); + EXPECT_EQ(3u, s.getLidLimit()); + EXPECT_EQ(2u, s.getUsedLids()); + EXPECT_EQ(3u, s.getLowestFreeLid()); + EXPECT_EQ(2u, s.getHighestUsedLid()); putGid(dms, createGid(3), 3); s = dms.getLidUsageStats(); - EXPECT_EQUAL(4u, s.getLidLimit()); - EXPECT_EQUAL(3u, s.getUsedLids()); - EXPECT_EQUAL(4u, s.getLowestFreeLid()); - EXPECT_EQUAL(3u, s.getHighestUsedLid()); + EXPECT_EQ(4u, s.getLidLimit()); + EXPECT_EQ(3u, s.getUsedLids()); + EXPECT_EQ(4u, s.getLowestFreeLid()); + EXPECT_EQ(3u, s.getHighestUsedLid()); dms.remove(1); dms.removeComplete(1); s = dms.getLidUsageStats(); - EXPECT_EQUAL(4u, s.getLidLimit()); - EXPECT_EQUAL(2u, s.getUsedLids()); - EXPECT_EQUAL(1u, s.getLowestFreeLid()); - EXPECT_EQUAL(3u, s.getHighestUsedLid()); + EXPECT_EQ(4u, s.getLidLimit()); + EXPECT_EQ(2u, s.getUsedLids()); + EXPECT_EQ(1u, s.getLowestFreeLid()); + EXPECT_EQ(3u, s.getHighestUsedLid()); dms.remove(3); dms.removeComplete(3); s = dms.getLidUsageStats(); - EXPECT_EQUAL(4u, s.getLidLimit()); - EXPECT_EQUAL(1u, s.getUsedLids()); - EXPECT_EQUAL(1u, s.getLowestFreeLid()); - EXPECT_EQUAL(2u, s.getHighestUsedLid()); + EXPECT_EQ(4u, s.getLidLimit()); + EXPECT_EQ(1u, s.getUsedLids()); + EXPECT_EQ(1u, s.getLowestFreeLid()); + EXPECT_EQ(2u, s.getHighestUsedLid()); dms.remove(2); dms.removeComplete(2); s = dms.getLidUsageStats(); - EXPECT_EQUAL(4u, s.getLidLimit()); - EXPECT_EQUAL(0u, s.getUsedLids()); - EXPECT_EQUAL(1u, s.getLowestFreeLid()); - EXPECT_EQUAL(0u, s.getHighestUsedLid()); + EXPECT_EQ(4u, s.getLidLimit()); + EXPECT_EQ(0u, s.getUsedLids()); + EXPECT_EQ(1u, s.getLowestFreeLid()); + EXPECT_EQ(0u, s.getHighestUsedLid()); } -bool +void assertLidBloat(uint32_t expBloat, uint32_t lidLimit, uint32_t usedLids) { LidUsageStats stats(lidLimit, usedLids, 0, 0); - return EXPECT_EQUAL(expBloat, stats.getLidBloat()); + EXPECT_EQ(expBloat, stats.getLidBloat()); } -TEST("require that LidUsageStats::getLidBloat() works") +TEST(LidUsageStatsTest, lid_bloat_is_calculated) { assertLidBloat(4, 10, 5); assertLidBloat(0, 1, 0); assertLidBloat(0, 1, 1); } -TEST("requireThatMoveWorks") +TEST(DocumentMetaStoreTest, move_works) { DocumentMetaStore dms(createBucketDB()); GlobalId gid; uint32_t lid = 0u; dms.constructFreeList(); - EXPECT_EQUAL(1u, dms.getNumDocs()); - EXPECT_EQUAL(0u, dms.getNumUsedLids()); - EXPECT_TRUE(assertPut(bucketId1, time1, 1u, gid1, dms)); - EXPECT_EQUAL(2u, dms.getNumDocs()); - EXPECT_EQUAL(1u, dms.getNumUsedLids()); - EXPECT_TRUE(assertPut(bucketId2, time2, 2u, gid2, dms)); - EXPECT_EQUAL(3u, dms.getNumDocs()); - EXPECT_EQUAL(2u, dms.getNumUsedLids()); + EXPECT_EQ(1u, dms.getNumDocs()); + EXPECT_EQ(0u, dms.getNumUsedLids()); + assertPut(bucketId1, time1, 1u, gid1, dms); + EXPECT_EQ(2u, dms.getNumDocs()); + EXPECT_EQ(1u, dms.getNumUsedLids()); + assertPut(bucketId2, time2, 2u, gid2, dms); + EXPECT_EQ(3u, dms.getNumDocs()); + EXPECT_EQ(2u, dms.getNumUsedLids()); EXPECT_TRUE(dms.getGid(1u, gid)); EXPECT_TRUE(dms.getLid(gid2, lid)); - EXPECT_EQUAL(gid1, gid); - EXPECT_EQUAL(2u, lid); + EXPECT_EQ(gid1, gid); + EXPECT_EQ(2u, lid); EXPECT_TRUE(dms.remove(1)); EXPECT_FALSE(dms.getGid(1u, gid)); EXPECT_FALSE(dms.getGidEvenIfMoved(1u, gid)); @@ -1842,7 +1820,7 @@ TEST("requireThatMoveWorks") EXPECT_FALSE(dms.getGid(1u, gid)); EXPECT_FALSE(dms.getGidEvenIfMoved(1u, gid)); EXPECT_TRUE(dms.getGid(2u, gid)); - EXPECT_EQUAL(1u, dms.getNumUsedLids()); + EXPECT_EQ(1u, dms.getNumUsedLids()); dms.move(2u, 1u); EXPECT_TRUE(dms.getGid(1u, gid)); EXPECT_FALSE(dms.getGid(2u, gid)); @@ -1852,11 +1830,11 @@ TEST("requireThatMoveWorks") EXPECT_FALSE(dms.getGid(2u, gid)); EXPECT_TRUE(dms.getGidEvenIfMoved(2u, gid)); EXPECT_TRUE(dms.getLid(gid2, lid)); - EXPECT_EQUAL(gid2, gid); - EXPECT_EQUAL(1u, lid); + EXPECT_EQ(gid2, gid); + EXPECT_EQ(1u, lid); } -bool +void assertLidSpace(uint32_t numDocs, uint32_t committedDocIdLimit, uint32_t numUsedLids, @@ -1864,12 +1842,11 @@ assertLidSpace(uint32_t numDocs, bool canShrinkLidSpace, const DocumentMetaStore &dms) { - if (!EXPECT_EQUAL(numDocs, dms.getNumDocs())) return false; - if (!EXPECT_EQUAL(committedDocIdLimit, dms.getCommittedDocIdLimit())) return false; - if (!EXPECT_EQUAL(numUsedLids, dms.getNumUsedLids())) return false; - if (!EXPECT_EQUAL(wantShrinkLidSpace, dms.wantShrinkLidSpace())) return false; - if (!EXPECT_EQUAL(canShrinkLidSpace, dms.canShrinkLidSpace())) return false; - return true; + EXPECT_EQ(numDocs, dms.getNumDocs()); + EXPECT_EQ(committedDocIdLimit, dms.getCommittedDocIdLimit()); + EXPECT_EQ(numUsedLids, dms.getNumUsedLids()); + EXPECT_EQ(wantShrinkLidSpace, dms.wantShrinkLidSpace()); + EXPECT_EQ(canShrinkLidSpace, dms.canShrinkLidSpace()); } void @@ -1879,7 +1856,7 @@ populate(uint32_t endLid, DocumentMetaStore &dms) GlobalId gid = createGid(lid); putGid(dms, gid, lid, Timestamp(10000 + lid)); } - EXPECT_TRUE(assertLidSpace(endLid, endLid, endLid - 1, false, false, dms)); + assertLidSpace(endLid, endLid, endLid - 1, false, false, dms); } void @@ -1891,7 +1868,7 @@ remove(uint32_t startLid, uint32_t shrinkTarget, DocumentMetaStore &dms) } } -TEST("requireThatShrinkWorks") +TEST(DocumentMetaStoreTest, shrink_works) { DocumentMetaStore dms(createBucketDB()); dms.constructFreeList(); @@ -1900,20 +1877,19 @@ TEST("requireThatShrinkWorks") uint32_t shrinkTarget = 5; remove(9, shrinkTarget, dms); - EXPECT_TRUE(assertLidSpace(10, 10, shrinkTarget - 1, false, false, dms)); + assertLidSpace(10, 10, shrinkTarget - 1, false, false, dms); dms.compactLidSpace(shrinkTarget); - EXPECT_TRUE(assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, false, dms)); + assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, false, dms); dms.holdUnblockShrinkLidSpace(); - EXPECT_TRUE(assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, true, dms)); + assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, true, dms); dms.shrinkLidSpace(); - EXPECT_TRUE(assertLidSpace(shrinkTarget, shrinkTarget, shrinkTarget - 1, false, false, dms)); + assertLidSpace(shrinkTarget, shrinkTarget, shrinkTarget - 1, false, false, dms); } - -TEST("requireThatShrinkViaFlushTargetWorks") +TEST(DocumentMetaStoreTest, shrink_via_flush_target_works) { DocumentMetaStore::SP dms(new DocumentMetaStore(createBucketDB())); dms->constructFreeList(); @@ -1931,24 +1907,24 @@ TEST("requireThatShrinkViaFlushTargetWorks") uint32_t shrinkTarget = 5; remove(9, shrinkTarget, *dms); - EXPECT_TRUE(assertLidSpace(10, 10, shrinkTarget - 1, false, false, *dms)); - EXPECT_EQUAL(ft->getApproxMemoryGain().getBefore(), - ft->getApproxMemoryGain().getAfter()); + assertLidSpace(10, 10, shrinkTarget - 1, false, false, *dms); + EXPECT_EQ(ft->getApproxMemoryGain().getBefore(), + ft->getApproxMemoryGain().getAfter()); dms->compactLidSpace(shrinkTarget); - EXPECT_TRUE(assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, false, *dms)); - EXPECT_EQUAL(ft->getApproxMemoryGain().getBefore(), - ft->getApproxMemoryGain().getAfter()); + assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, false, *dms); + EXPECT_EQ(ft->getApproxMemoryGain().getBefore(), + ft->getApproxMemoryGain().getAfter()); AttributeGuard::UP g(new AttributeGuard(dms)); dms->holdUnblockShrinkLidSpace(); - EXPECT_TRUE(assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, false, *dms)); - EXPECT_EQUAL(ft->getApproxMemoryGain().getBefore(), - ft->getApproxMemoryGain().getAfter()); + assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, false, *dms); + EXPECT_EQ(ft->getApproxMemoryGain().getBefore(), + ft->getApproxMemoryGain().getAfter()); g.reset(); dms->removeAllOldGenerations(); - EXPECT_TRUE(assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, true, *dms)); + assertLidSpace(10, shrinkTarget, shrinkTarget - 1, true, true, *dms); EXPECT_TRUE(ft->getApproxMemoryGain().getBefore() > ft->getApproxMemoryGain().getAfter()); @@ -1957,12 +1933,11 @@ TEST("requireThatShrinkViaFlushTargetWorks") exec.execute(std::move(task)); exec.sync(); exec.shutdown(); - EXPECT_TRUE(assertLidSpace(shrinkTarget, shrinkTarget, shrinkTarget - 1, false, false, *dms)); - EXPECT_EQUAL(ft->getApproxMemoryGain().getBefore(), - ft->getApproxMemoryGain().getAfter()); + assertLidSpace(shrinkTarget, shrinkTarget, shrinkTarget - 1, false, false, *dms); + EXPECT_EQ(ft->getApproxMemoryGain().getBefore(), + ft->getApproxMemoryGain().getAfter()); } - namespace { void @@ -1972,7 +1947,7 @@ addLid(DocumentMetaStore &dms, uint32_t lid, uint32_t docSize = 1) BucketId bucketId(gid.convertToBucketId()); bucketId.setUsedBits(numBucketBits); uint32_t addedLid = addGid(dms, gid, bucketId, Timestamp(lid + timestampBias), docSize); - EXPECT_EQUAL(lid, addedLid); + EXPECT_EQ(lid, addedLid); } void @@ -1980,7 +1955,7 @@ assertSize(DocumentMetaStore &dms, uint32_t lid, uint32_t expSize) { EXPECT_TRUE(dms.validLid(lid)); const auto &metaData = dms.getRawMetaData(lid); - EXPECT_EQUAL(expSize, metaData.getDocSize()); + EXPECT_EQ(expSize, metaData.getDocSize()); } void @@ -1990,59 +1965,55 @@ removeLid(DocumentMetaStore &dms, uint32_t lid) dms.removeComplete(lid); } - void assertCompact(DocumentMetaStore &dms, uint32_t docIdLimit, uint32_t committedDocIdLimit, uint32_t compactTarget, uint32_t numUsedLids) { - EXPECT_TRUE(assertLidSpace(docIdLimit, committedDocIdLimit, numUsedLids, false, false, dms)); + assertLidSpace(docIdLimit, committedDocIdLimit, numUsedLids, false, false, dms); dms.compactLidSpace(compactTarget); - EXPECT_TRUE(assertLidSpace(docIdLimit, compactTarget, numUsedLids, true, false, dms)); + assertLidSpace(docIdLimit, compactTarget, numUsedLids, true, false, dms); dms.holdUnblockShrinkLidSpace(); - EXPECT_TRUE(assertLidSpace(docIdLimit, compactTarget, numUsedLids, true, true, dms)); + assertLidSpace(docIdLimit, compactTarget, numUsedLids, true, true, dms); } - void -assertShrink(DocumentMetaStore &dms, uint32_t shrinkTarget, - uint32_t numUsedLids) +assertShrink(DocumentMetaStore &dms, uint32_t shrinkTarget, uint32_t numUsedLids) { dms.shrinkLidSpace(); - TEST_DO(EXPECT_TRUE(assertLidSpace(shrinkTarget, shrinkTarget, numUsedLids, false, false, dms))); + assertLidSpace(shrinkTarget, shrinkTarget, numUsedLids, false, false, dms); } } - -TEST("requireThatSecondShrinkWorksAfterCompactAndInactiveInsert") +TEST(DocumentMetaStoreTest, second_shrink_works_after_compact_and_inactive_insert) { DocumentMetaStore dms(createBucketDB()); dms.constructFreeList(); - TEST_DO(addLid(dms, 1)); - TEST_DO(addLid(dms, 2)); - TEST_DO(addLid(dms, 3)); + addLid(dms, 1); + addLid(dms, 2); + addLid(dms, 3); removeLid(dms, 2); removeLid(dms, 3); - EXPECT_TRUE(assertLidSpace(4, 4, 1, false, false, dms)); - TEST_DO(assertCompact(dms, 4, 4, 2, 1)); - TEST_DO(addLid(dms, 2)); - TEST_DO(assertShrink(dms, 3, 2)); + assertLidSpace(4, 4, 1, false, false, dms); + assertCompact(dms, 4, 4, 2, 1); + addLid(dms, 2); + assertShrink(dms, 3, 2); removeLid(dms, 2); - TEST_DO(assertCompact(dms, 3, 3, 2, 1)); - TEST_DO(assertShrink(dms, 2, 1)); + assertCompact(dms, 3, 3, 2, 1); + assertShrink(dms, 2, 1); } -TEST("require that document sizes are saved") +TEST(DocumentMetaStoreTest, document_sizes_are_saved) { DocumentMetaStore dms1(createBucketDB()); dms1.constructFreeList(); - TEST_DO(addLid(dms1, 1, 100)); - TEST_DO(addLid(dms1, 2, 10000)); - TEST_DO(addLid(dms1, 3, 100000000)); - TEST_DO(assertSize(dms1, 1, 100)); - TEST_DO(assertSize(dms1, 2, 10000)); - TEST_DO(assertSize(dms1, 3, (1u << 24) - 1)); + addLid(dms1, 1, 100); + addLid(dms1, 2, 10000); + addLid(dms1, 3, 100000000); + assertSize(dms1, 1, 100); + assertSize(dms1, 2, 10000); + assertSize(dms1, 3, (1u << 24) - 1); TuneFileAttributes tuneFileAttributes; DummyFileHeaderContext fileHeaderContext; @@ -2054,16 +2025,16 @@ TEST("require that document sizes are saved") DocumentMetaStore dms3(createBucketDB(), "documentmetastore3"); EXPECT_TRUE(dms3.load()); dms3.constructFreeList(); - TEST_DO(assertSize(dms3, 1, 100)); - TEST_DO(assertSize(dms3, 2, 10000)); - TEST_DO(assertSize(dms3, 3, (1u << 24) - 1)); + assertSize(dms3, 1, 100); + assertSize(dms3, 2, 10000); + assertSize(dms3, 3, (1u << 24) - 1); DocumentMetaStore dms4(createBucketDB(), "documentmetastore4"); EXPECT_TRUE(dms4.load()); dms4.constructFreeList(); - TEST_DO(assertSize(dms4, 1, 1)); - TEST_DO(assertSize(dms4, 2, 1)); - TEST_DO(assertSize(dms4, 3, 1)); + assertSize(dms4, 1, 1); + assertSize(dms4, 2, 1); + assertSize(dms4, 3, 1); } namespace { @@ -2072,8 +2043,8 @@ void assertLidGidFound(uint32_t lid, DocumentMetaStore &dms) { GlobalId gid = createGid(lid); - EXPECT_TRUE(assertLid(lid, gid, dms)); - EXPECT_TRUE(assertGid(gid, lid, dms)); + assertLid(lid, gid, dms); + assertGid(gid, lid, dms); EXPECT_TRUE(dms.validLid(lid)); } @@ -2090,32 +2061,29 @@ assertLidGidNotFound(uint32_t lid, DocumentMetaStore &dms) } -TEST("require that multiple lids can be removed with removeBatch()") +TEST(DocumentMetaStoreTest, multiple_lids_can_be_removed_with_removeBatch) { DocumentMetaStore dms(createBucketDB()); dms.constructFreeList(); - TEST_DO(addLid(dms, 1)); - TEST_DO(addLid(dms, 2)); - TEST_DO(addLid(dms, 3)); - TEST_DO(addLid(dms, 4)); + addLid(dms, 1); + addLid(dms, 2); + addLid(dms, 3); + addLid(dms, 4); - TEST_DO(assertLidGidFound(1, dms)); - TEST_DO(assertLidGidFound(2, dms)); - TEST_DO(assertLidGidFound(3, dms)); - TEST_DO(assertLidGidFound(4, dms)); + assertLidGidFound(1, dms); + assertLidGidFound(2, dms); + assertLidGidFound(3, dms); + assertLidGidFound(4, dms); dms.removeBatch({1, 3}, 5); dms.removeBatchComplete({1, 3}); - TEST_DO(assertLidGidNotFound(1, dms)); - TEST_DO(assertLidGidFound(2, dms)); - TEST_DO(assertLidGidNotFound(3, dms)); - TEST_DO(assertLidGidFound(4, dms)); + assertLidGidNotFound(1, dms); + assertLidGidFound(2, dms); + assertLidGidNotFound(3, dms); + assertLidGidFound(4, dms); } } -TEST_MAIN() -{ - TEST_RUN_ALL(); -} +GTEST_MAIN_RUN_ALL_TESTS() |