summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-10-30 11:08:57 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-10-30 11:08:57 +0000
commit468e68675aa55e3b6200e61ac5aa5bfbe5a6e791 (patch)
tree42200f07080dbe96450b0f59663c40b3466a296d /searchcore/src/tests
parent55d3dbb705a58a66901fb384fce83fdf55f2e51e (diff)
Remove the ICommitable interface as it is now void.
Wait happens directly og the LidCommitState interface.
Diffstat (limited to 'searchcore/src/tests')
-rw-r--r--searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp59
-rw-r--r--searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp15
-rw-r--r--searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp11
-rw-r--r--searchcore/src/tests/proton/server/visibility_handler/.gitignore1
-rw-r--r--searchcore/src/tests/proton/server/visibility_handler/CMakeLists.txt9
-rw-r--r--searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp175
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(); }