aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp')
-rw-r--r--searchcore/src/tests/proton/server/visibility_handler/visibility_handler_test.cpp65
1 files changed, 39 insertions, 26 deletions
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(); }