aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/server
diff options
context:
space:
mode:
Diffstat (limited to 'searchcore/src/tests/proton/server')
-rw-r--r--searchcore/src/tests/proton/server/feedstates_test.cpp4
-rw-r--r--searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp65
2 files changed, 40 insertions, 29 deletions
diff --git a/searchcore/src/tests/proton/server/feedstates_test.cpp b/searchcore/src/tests/proton/server/feedstates_test.cpp
index fd1e24c1f17..15083975824 100644
--- a/searchcore/src/tests/proton/server/feedstates_test.cpp
+++ b/searchcore/src/tests/proton/server/feedstates_test.cpp
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for feedstates.
-
#include <vespa/document/base/documentid.h>
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/bucket/bucketid.h>
@@ -102,11 +101,10 @@ struct RemoveOperationContext
RemoveOperationContext::RemoveOperationContext(search::SerialNum serial)
: doc_id("id:ns:doctypename::bar"),
op(BucketFactory::getBucketId(doc_id), Timestamp(10), doc_id),
- str(), packet()
+ str(), packet(std::make_unique<Packet>(0xf000))
{
op.serialize(str);
ConstBufferRef buf(str.data(), str.wp());
- packet = std::make_unique<Packet>();
packet->add(Packet::Entry(serial, FeedOperation::REMOVE, buf));
}
RemoveOperationContext::~RemoveOperationContext() = default;
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
index 56d82ed8695..1d69b7cec3c 100644
--- a/searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp
+++ b/searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp
@@ -40,7 +40,7 @@ class MyFeedView : public DummyFeedView
uint32_t _forceCommitCount;
SerialNum _committedSerialNum;
public:
- proton::PendingLidTracker _tracker;
+ std::unique_ptr<proton::PendingLidTrackerBase> _tracker;
MyFeedView()
@@ -48,11 +48,20 @@ public:
_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) override
{
EXPECT_TRUE(serialNum >= _committedSerialNum);
_committedSerialNum = serialNum;
++_forceCommitCount;
+ _tracker->produceSnapshot();
}
uint32_t getForceCommitCount() const { return _forceCommitCount; }
@@ -85,25 +94,22 @@ public:
void
checkCommitPostCondition(uint32_t expForceCommitCount,
SerialNum expCommittedSerialNum,
- uint32_t expMasterExecuteCnt,
- uint32_t expAttributeFieldWriterSyncCnt)
+ uint32_t expMasterExecuteCnt)
{
EXPECT_EQUAL(expForceCommitCount, _feedViewReal->getForceCommitCount());
EXPECT_EQUAL(expCommittedSerialNum,
_feedViewReal->getCommittedSerialNum());
EXPECT_EQUAL(expMasterExecuteCnt,
_writeService.masterObserver().getExecuteCnt());
- EXPECT_EQUAL(expAttributeFieldWriterSyncCnt,
- _writeService.attributeFieldWriterObserver().getSyncCnt());
}
void
testCommit(vespalib::duration visibilityDelay, bool internal,
uint32_t expForceCommitCount, SerialNum expCommittedSerialNum,
uint32_t expMasterExecuteCnt,
- uint32_t expAttributeFieldWriterSyncCnt,
SerialNum currSerialNum = 10u)
{
+ _feedViewReal->setTracker(visibilityDelay);
_getSerialNum.setSerialNum(currSerialNum);
_visibilityHandler.setVisibilityDelay(visibilityDelay);
if (internal) {
@@ -116,8 +122,16 @@ public:
_writeService.master().sync();
checkCommitPostCondition(expForceCommitCount,
expCommittedSerialNum,
- expMasterExecuteCnt,
- expAttributeFieldWriterSyncCnt);
+ expMasterExecuteCnt);
+ }
+
+ 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
@@ -125,16 +139,16 @@ public:
uint32_t expForceCommitCount,
SerialNum expCommittedSerialNum,
uint32_t expMasterExecuteCnt,
- uint32_t expAttributeFieldWriterSyncCnt,
SerialNum currSerialNum = 10u)
{
+ _feedViewReal->setTracker(visibilityDelay);
_getSerialNum.setSerialNum(currSerialNum);
_visibilityHandler.setVisibilityDelay(visibilityDelay);
constexpr uint32_t MY_LID=13;
- if (currSerialNum != 0) {
- _feedViewReal->_tracker.produce(MY_LID);
+ proton::PendingLidTrackerBase * lidTracker = _feedViewReal->_tracker.get();
+ {
+ proton::PendingLidTracker::Token token = createToken(*lidTracker, currSerialNum, MY_LID);
}
- proton::PendingLidTracker * lidTracker = & _feedViewReal->_tracker;
if (internal) {
VisibilityHandler *visibilityHandler = &_visibilityHandler;
auto task = makeLambdaTask([=]() { visibilityHandler->commitAndWait(*lidTracker, MY_LID); });
@@ -145,8 +159,7 @@ public:
}
checkCommitPostCondition(expForceCommitCount,
expCommittedSerialNum,
- expMasterExecuteCnt,
- expAttributeFieldWriterSyncCnt);
+ expMasterExecuteCnt);
}
};
@@ -154,62 +167,62 @@ public:
TEST_F("Check external commit with zero visibility delay", Fixture)
{
- f.testCommit(0s, false, 0u, 0u, 0u, 0u);
+ f.testCommit(0s, false, 0u, 0u, 0u);
}
TEST_F("Check external commit with nonzero visibility delay", Fixture)
{
- f.testCommit(1s, false, 1u, 10u, 1u, 0u);
+ f.testCommit(1s, false, 1u, 10u, 1u);
}
TEST_F("Check external commit with nonzero visibility delay and no new feed operation", Fixture)
{
- f.testCommit(1s, false, 1u, 0u, 1u, 0u, 0u);
+ f.testCommit(1s, false, 1u, 0u, 1u, 0u);
}
TEST_F("Check internal commit with zero visibility delay", Fixture)
{
- f.testCommit(0s, true, 0u, 0u, 1u, 0u);
+ f.testCommit(0s, true, 0u, 0u, 1u);
}
TEST_F("Check internal commit with nonzero visibility delay", Fixture)
{
- f.testCommit(1s, true, 1u, 10u, 1u, 0u);
+ f.testCommit(1s, true, 1u, 10u, 1u);
}
TEST_F("Check internal commit with nonzero visibility delay and no new feed operation", Fixture)
{
- f.testCommit(1s, true, 1u, 0u, 1u, 0u, 0u);
+ f.testCommit(1s, true, 1u, 0u, 1u, 0u);
}
TEST_F("Check external commitAndWait with zero visibility delay", Fixture)
{
- f.testCommitAndWait(0s, false, 0u, 0u, 0u, 1u);
+ f.testCommitAndWait(0s, false, 0u, 0u, 0u);
}
TEST_F("Check external commitAndWait with nonzero visibility delay", Fixture)
{
- f.testCommitAndWait(1s, false, 1u, 10u, 1u, 1u);
+ 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, 1u, 0u);
+ 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, 1u);
+ f.testCommitAndWait(0s, true, 0u, 0u, 1u);
}
TEST_F("Check internal commitAndWait with nonzero visibility delay", Fixture)
{
- f.testCommitAndWait(1s, true, 1u, 10u, 1u, 1u);
+ 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, 1u, 0u);
+ f.testCommitAndWait(1s, true, 0u, 0u, 1u, 0u);
}
TEST_MAIN() { TEST_RUN_ALL(); }