diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-30 11:08:57 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-30 11:08:57 +0000 |
commit | 468e68675aa55e3b6200e61ac5aa5bfbe5a6e791 (patch) | |
tree | 42200f07080dbe96450b0f59663c40b3466a296d /searchcore/src/tests | |
parent | 55d3dbb705a58a66901fb384fce83fdf55f2e51e (diff) |
Remove the ICommitable interface as it is now void.
Wait happens directly og the LidCommitState interface.
Diffstat (limited to 'searchcore/src/tests')
6 files changed, 44 insertions, 226 deletions
diff --git a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp index 53f590189fa..ee22e2668c6 100644 --- a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp +++ b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp @@ -274,18 +274,6 @@ struct PairDR : DocumentRetrieverBaseForTest { } }; -struct Committer : public ICommitable { - size_t _commitAndWaitCount; - Committer() : _commitAndWaitCount(0) { } - void commitAndWait(ILidCommitState &) override { _commitAndWaitCount++; } - void commitAndWait(ILidCommitState & tracker, uint32_t ) override { - commitAndWait(tracker); - } - void commitAndWait(ILidCommitState & tracker, const std::vector<uint32_t> & ) override { - commitAndWait(tracker); - } -}; - size_t getSize() { return sizeof(DocEntry); } @@ -500,10 +488,9 @@ TEST("require that iterator ignoring maxbytes stops at the end, and does not aut TEST_DO(verifyIterateIgnoringStopSignal(itr)); } -void verifyReadConsistency(DocumentIterator & itr, Committer & committer) { - PendingLidTracker lidTracker; +void verifyReadConsistency(DocumentIterator & itr, ILidCommitState & lidCommitState) { IDocumentRetriever::SP retriever = doc("id:ns:document::1", Timestamp(2), bucket(5)); - auto commitAndWaitRetriever = std::make_shared<CommitAndWaitDocumentRetriever>(retriever, committer, lidTracker); + auto commitAndWaitRetriever = std::make_shared<CommitAndWaitDocumentRetriever>(retriever, lidCommitState); itr.add(commitAndWaitRetriever); IterateResult res = itr.iterate(largeNum); @@ -512,10 +499,46 @@ void verifyReadConsistency(DocumentIterator & itr, Committer & committer) { TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1")), Timestamp(2))); } +class ILidCommitStateProxy : public ILidCommitState { +public: + explicit ILidCommitStateProxy(ILidCommitState & lidState) + : _waitCompleteCount(0), + _lidState(lidState) + {} +private: + State waitState(State state, uint32_t lid) const override { + assert(state == State::COMPLETED); + _lidState.waitComplete(lid); + _waitCompleteCount++; + return state; + } + + State waitState(State state, const LidList &lids) const override { + assert(state == State::COMPLETED); + _lidState.waitComplete(lids); + _waitCompleteCount++; + return state; + } + + State waitState(State state) const override { + assert(state == State::COMPLETED); + _lidState.waitComplete(); + _waitCompleteCount++; + return state; + } + +public: + mutable size_t _waitCompleteCount; +private: + ILidCommitState & _lidState; +}; + void verifyStrongReadConsistency(DocumentIterator & itr) { - Committer committer; - TEST_DO(verifyReadConsistency(itr, committer)); - EXPECT_EQUAL(1u, committer._commitAndWaitCount); + PendingLidTracker lidTracker; + + ILidCommitStateProxy lidCommitState(lidTracker); + TEST_DO(verifyReadConsistency(itr, lidCommitState)); + EXPECT_EQUAL(1u, lidCommitState._waitCompleteCount); } TEST("require that default readconsistency does commit") { diff --git a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp index 53050db5a00..06f0ba4109e 100644 --- a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp +++ b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp @@ -5,7 +5,6 @@ #include <vespa/searchcore/proton/attribute/imported_attributes_repo.h> #include <vespa/searchcore/proton/bucketdb/bucketdbhandler.h> #include <vespa/searchcore/proton/common/hw_info.h> -#include <vespa/searchcore/proton/common/icommitable.h> #include <vespa/searchcore/proton/initializer/task_runner.h> #include <vespa/searchcore/proton/metrics/attribute_metrics.h> #include <vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h> @@ -253,18 +252,6 @@ struct TwoAttrSchema : public OneAttrSchema } }; -struct Committer : public ICommitable { - size_t _commitAndWaitCount; - Committer() : _commitAndWaitCount(0) { } - void commitAndWait(ILidCommitState & ) override { _commitAndWaitCount++; } - void commitAndWait(ILidCommitState & tracker, uint32_t ) override { - commitAndWait(tracker); - } - void commitAndWait(ILidCommitState & tracker, const std::vector<uint32_t> & ) override { - commitAndWait(tracker); - } -}; - struct MyConfigSnapshot { typedef std::unique_ptr<MyConfigSnapshot> UP; @@ -279,7 +266,7 @@ struct MyConfigSnapshot _bootstrap() { auto documenttypesConfig = std::make_shared<DocumenttypesConfig>(_builder.getDocumenttypesConfig()); - TuneFileDocumentDB::SP tuneFileDocumentDB(new TuneFileDocumentDB()); + auto tuneFileDocumentDB = std::make_shared<TuneFileDocumentDB>(); _bootstrap = std::make_shared<BootstrapConfig>(1, documenttypesConfig, _builder.getDocumentTypeRepo(), diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp index d309c7f8b1a..a3148aa9372 100644 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp +++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp @@ -354,7 +354,7 @@ struct MockLidSpaceCompactionHandler : public ILidSpaceCompactionHandler }; -class MaintenanceControllerFixture : public ICommitable +class MaintenanceControllerFixture { public: MyExecutor _executor; @@ -385,16 +385,9 @@ public: MaintenanceControllerFixture(); - ~MaintenanceControllerFixture() override; + ~MaintenanceControllerFixture(); void syncSubDBs(); - void commitAndWait(ILidCommitState & ) override { } - void commitAndWait(ILidCommitState & tracker, uint32_t ) override { - commitAndWait(tracker); - } - void commitAndWait(ILidCommitState & tracker, const std::vector<uint32_t> & ) override { - commitAndWait(tracker); - } void performSyncSubDBs(); void notifyClusterStateChanged(); void performNotifyClusterStateChanged(); diff --git a/searchcore/src/tests/proton/server/visibility_handler/.gitignore b/searchcore/src/tests/proton/server/visibility_handler/.gitignore deleted file mode 100644 index 3666e0c37c3..00000000000 --- a/searchcore/src/tests/proton/server/visibility_handler/.gitignore +++ /dev/null @@ -1 +0,0 @@ -searchcore_visibility_handler_test_app diff --git a/searchcore/src/tests/proton/server/visibility_handler/CMakeLists.txt b/searchcore/src/tests/proton/server/visibility_handler/CMakeLists.txt deleted file mode 100644 index cb79d0fae8a..00000000000 --- a/searchcore/src/tests/proton/server/visibility_handler/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(searchcore_visibility_handler_test_app TEST - SOURCES - visibility_handler_test.cpp - DEPENDS - searchcore_server - searchcore_test -) -vespa_add_test(NAME searchcore_visibility_handler_test_app COMMAND searchcore_visibility_handler_test_app) diff --git a/searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp b/searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp deleted file mode 100644 index 2351d5ed0a9..00000000000 --- a/searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp +++ /dev/null @@ -1,175 +0,0 @@ -// 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/searchcore/proton/server/visibilityhandler.h> -#include <vespa/searchcore/proton/test/dummy_feed_view.h> -#include <vespa/searchcore/proton/test/threading_service_observer.h> -#include <vespa/searchcore/proton/server/executorthreadingservice.h> -#include <vespa/searchcore/proton/common/pendinglidtracker.h> -#include <vespa/vespalib/util/lambdatask.h> - -#include <vespa/log/log.h> -LOG_SETUP("visibility_handler_test"); - -using search::SerialNum; -using proton::IGetSerialNum; -using proton::test::DummyFeedView; -using proton::ExecutorThreadingService; -using proton::test::ThreadingServiceObserver; -using proton::IFeedView; -using proton::VisibilityHandler; -using vespalib::makeLambdaTask; - -namespace { - -class MyGetSerialNum : public IGetSerialNum -{ - SerialNum _serialNum; -public: - MyGetSerialNum() - : _serialNum(0u) - {} - SerialNum getSerialNum() const override { return _serialNum; } - void setSerialNum(SerialNum serialNum) { _serialNum = serialNum; } -}; - - - -class MyFeedView : public DummyFeedView -{ - uint32_t _forceCommitCount; - SerialNum _committedSerialNum; -public: - std::unique_ptr<proton::PendingLidTrackerBase> _tracker; - - - MyFeedView() - : _forceCommitCount(0u), - _committedSerialNum(0u) - {} - - void setTracker(vespalib::duration visibilityDelay) { - if (visibilityDelay == vespalib::duration::zero()) { - _tracker = std::make_unique<proton::PendingLidTracker>(); - } else { - _tracker = std::make_unique<proton::TwoPhasePendingLidTracker>(); - } - } - - void forceCommit(SerialNum serialNum, DoneCallback) override - { - EXPECT_TRUE(serialNum >= _committedSerialNum); - _committedSerialNum = serialNum; - ++_forceCommitCount; - _tracker->produceSnapshot(); - } - - uint32_t getForceCommitCount() const { return _forceCommitCount; } - SerialNum getCommittedSerialNum() const { return _committedSerialNum; } -}; - - -class Fixture -{ -public: - MyGetSerialNum _getSerialNum; - vespalib::ThreadStackExecutor _sharedExecutor; - ExecutorThreadingService _writeServiceReal; - ThreadingServiceObserver _writeService; - std::shared_ptr<MyFeedView> _feedViewReal; - vespalib::VarHolder<IFeedView::SP> _feedView; - VisibilityHandler _visibilityHandler; - - - Fixture() - : _getSerialNum(), - _sharedExecutor(1, 0x10000), - _writeServiceReal(_sharedExecutor), - _writeService(_writeServiceReal), - _feedViewReal(std::make_shared<MyFeedView>()), - _feedView(_feedViewReal), - _visibilityHandler(_getSerialNum, _writeService, _feedView) - {} - - void - checkCommitPostCondition(uint32_t expForceCommitCount, - SerialNum expCommittedSerialNum, - uint32_t expMasterExecuteCnt) - { - EXPECT_EQUAL(expForceCommitCount, _feedViewReal->getForceCommitCount()); - EXPECT_EQUAL(expCommittedSerialNum, - _feedViewReal->getCommittedSerialNum()); - EXPECT_EQUAL(expMasterExecuteCnt, - _writeService.masterObserver().getExecuteCnt()); - } - - proton::PendingLidTracker::Token - createToken(proton::PendingLidTrackerBase & tracker, SerialNum serialNum, uint32_t lid) { - if (serialNum == 0) { - return proton::PendingLidTracker::Token(); - } else { - return tracker.produce(lid);; - } - } - - void - testCommitAndWait(vespalib::duration visibilityDelay, bool internal, - uint32_t expForceCommitCount, - SerialNum expCommittedSerialNum, - uint32_t expMasterExecuteCnt, - SerialNum currSerialNum = 10u) - { - _feedViewReal->setTracker(visibilityDelay); - _getSerialNum.setSerialNum(currSerialNum); - constexpr uint32_t MY_LID=13; - proton::PendingLidTrackerBase * lidTracker = _feedViewReal->_tracker.get(); - { - proton::PendingLidTracker::Token token = createToken(*lidTracker, currSerialNum, MY_LID); - } - if (internal) { - VisibilityHandler *visibilityHandler = &_visibilityHandler; - auto task = makeLambdaTask([=]() { visibilityHandler->commitAndWait(*lidTracker, MY_LID); }); - _writeService.master().execute(std::move(task)); - _writeService.master().sync(); - } else { - _visibilityHandler.commitAndWait(*lidTracker, MY_LID); - } - checkCommitPostCondition(expForceCommitCount, - expCommittedSerialNum, - expMasterExecuteCnt); - } -}; - -} - -TEST_F("Check external commitAndWait with zero visibility delay", Fixture) -{ - f.testCommitAndWait(0s, false, 0u, 0u, 0u); -} - -TEST_F("Check external commitAndWait with nonzero visibility delay", Fixture) -{ - f.testCommitAndWait(1s, false, 1u, 10u, 1u); -} - -TEST_F("Check external commitAndWait with nonzero visibility delay and no new feed operation", Fixture) -{ - f.testCommitAndWait(1s, false, 0u, 0u, 0u, 0u); -} - -TEST_F("Check internal commitAndWait with zero visibility delay", Fixture) -{ - f.testCommitAndWait(0s, true, 0u, 0u, 1u); -} - -TEST_F("Check internal commitAndWait with nonzero visibility delay", Fixture) -{ - f.testCommitAndWait(1s, true, 1u, 10u, 1u); -} - -TEST_F("Check internal commitAndWait with nonzero visibility delay and no new feed operation", Fixture) -{ - f.testCommitAndWait(1s, true, 0u, 0u, 1u, 0u); -} - -TEST_MAIN() { TEST_RUN_ALL(); } |