summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@oath.com>2018-02-23 15:28:09 +0000
committerTor Egge <Tor.Egge@oath.com>2018-02-23 15:28:09 +0000
commit3747f96e80ad43548af67cbe1b4a7cba1817d9e0 (patch)
tree45fdaaa97410a1f4bde9ca72b9b8799df83c90aa
parent180bc0034ae5ba6f2b5644a7c520486bbcc511bd (diff)
Simplify distributor unit tests.
-rw-r--r--storage/src/tests/distributor/bucketdbupdatertest.cpp18
-rw-r--r--storage/src/tests/distributor/distributortest.cpp7
-rw-r--r--storage/src/tests/distributor/distributortestutil.cpp8
-rw-r--r--storage/src/tests/distributor/distributortestutil.h2
-rw-r--r--storage/src/tests/distributor/garbagecollectiontest.cpp2
-rw-r--r--storage/src/tests/distributor/getoperationtest.cpp2
-rw-r--r--storage/src/tests/distributor/joinbuckettest.cpp5
-rw-r--r--storage/src/tests/distributor/mergeoperationtest.cpp11
-rw-r--r--storage/src/tests/distributor/putoperationtest.cpp2
-rw-r--r--storage/src/tests/distributor/removebucketoperationtest.cpp6
-rw-r--r--storage/src/tests/distributor/removelocationtest.cpp2
-rw-r--r--storage/src/tests/distributor/removeoperationtest.cpp5
-rw-r--r--storage/src/tests/distributor/splitbuckettest.cpp12
-rw-r--r--storage/src/tests/distributor/statecheckerstest.cpp4
-rw-r--r--storage/src/tests/distributor/statoperationtest.cpp2
-rw-r--r--storage/src/tests/distributor/twophaseupdateoperationtest.cpp5
-rw-r--r--storage/src/tests/distributor/visitoroperationtest.cpp65
-rw-r--r--vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp6
-rw-r--r--vdslib/src/vespa/vdslib/state/cluster_state_bundle.h1
19 files changed, 84 insertions, 81 deletions
diff --git a/storage/src/tests/distributor/bucketdbupdatertest.cpp b/storage/src/tests/distributor/bucketdbupdatertest.cpp
index 77b661c2606..7831328460d 100644
--- a/storage/src/tests/distributor/bucketdbupdatertest.cpp
+++ b/storage/src/tests/distributor/bucketdbupdatertest.cpp
@@ -896,7 +896,7 @@ void
BucketDBUpdaterTest::testNodeDown()
{
setStorageNodes(3);
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
for (int i=1; i<100; i++) {
addIdealNodes(document::BucketId(16, i));
@@ -913,7 +913,7 @@ void
BucketDBUpdaterTest::testStorageNodeInMaintenanceClearsBucketsForNode()
{
setStorageNodes(3);
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
for (int i=1; i<100; i++) {
addIdealNodes(document::BucketId(16, i));
@@ -1173,7 +1173,7 @@ BucketDBUpdaterTest::testRecheckNode()
void
BucketDBUpdaterTest::testNotifyBucketChange()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
addNodesToBucketDB(document::BucketId(16, 1), "0=1234");
_sender.replies.clear();
@@ -1243,7 +1243,7 @@ BucketDBUpdaterTest::testNotifyBucketChange()
void
BucketDBUpdaterTest::testNotifyBucketChangeFromNodeDown()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
addNodesToBucketDB(document::BucketId(16, 1), "1=1234");
@@ -1258,7 +1258,7 @@ BucketDBUpdaterTest::testNotifyBucketChangeFromNodeDown()
}
// Enable here to avoid having request bucket info be silently swallowed
// (sendRequestBucketInfo drops message if node is down).
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:2 .0.s:d"));
+ enableDistributorClusterState("distributor:1 storage:2 .0.s:d");
CPPUNIT_ASSERT_EQUAL(
std::string("BucketId(0x4000000000000001) : "
@@ -1346,7 +1346,7 @@ BucketDBUpdaterTest::testNotifyChangeWithPendingStateQueuesBucketInfoRequests()
void
BucketDBUpdaterTest::testMergeReply()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
addNodesToBucketDB(document::BucketId(16, 1234),
"0=1234,1=1234,2=1234");
@@ -1393,7 +1393,7 @@ BucketDBUpdaterTest::testMergeReply()
void
BucketDBUpdaterTest::testMergeReplyNodeDown()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
std::vector<api::MergeBucketCommand::Node> nodes;
addNodesToBucketDB(document::BucketId(16, 1234), "0=1234,1=1234,2=1234");
@@ -1440,7 +1440,7 @@ BucketDBUpdaterTest::testMergeReplyNodeDown()
void
BucketDBUpdaterTest::testMergeReplyNodeDownAfterRequestSent()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
std::vector<api::MergeBucketCommand::Node> nodes;
addNodesToBucketDB(document::BucketId(16, 1234), "0=1234,1=1234,2=1234");
@@ -1488,7 +1488,7 @@ BucketDBUpdaterTest::testMergeReplyNodeDownAfterRequestSent()
void
BucketDBUpdaterTest::testFlush()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
_sender.clear();
addNodesToBucketDB(document::BucketId(16, 1234), "0=1234,1=1234,2=1234");
diff --git a/storage/src/tests/distributor/distributortest.cpp b/storage/src/tests/distributor/distributortest.cpp
index 776f4e200e8..8a48e8853c9 100644
--- a/storage/src/tests/distributor/distributortest.cpp
+++ b/storage/src/tests/distributor/distributortest.cpp
@@ -256,8 +256,7 @@ Distributor_Test::testRecoveryModeOnClusterStateChange()
{
setupDistributor(Redundancy(1), NodeCount(2),
"storage:1 .0.s:d distributor:1");
- _distributor->enableClusterState(
- lib::ClusterState("storage:1 distributor:1"));
+ enableDistributorClusterState("storage:1 distributor:1");
CPPUNIT_ASSERT(_distributor->isInRecoveryMode());
for (uint32_t i = 0; i < 3; ++i) {
@@ -270,7 +269,7 @@ Distributor_Test::testRecoveryModeOnClusterStateChange()
tick();
CPPUNIT_ASSERT(!_distributor->isInRecoveryMode());
- _distributor->enableClusterState(lib::ClusterState("storage:2 distributor:1"));
+ enableDistributorClusterState("storage:2 distributor:1");
CPPUNIT_ASSERT(_distributor->isInRecoveryMode());
}
@@ -339,7 +338,7 @@ Distributor_Test::testContainsTimeStatement()
void
Distributor_Test::testUpdateBucketDatabase()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
CPPUNIT_ASSERT_EQUAL(
std::string("BucketId(0x4000000000000001) : "
diff --git a/storage/src/tests/distributor/distributortestutil.cpp b/storage/src/tests/distributor/distributortestutil.cpp
index 8aa9ffadebe..fbf5a14c052 100644
--- a/storage/src/tests/distributor/distributortestutil.cpp
+++ b/storage/src/tests/distributor/distributortestutil.cpp
@@ -48,7 +48,7 @@ DistributorTestUtil::setupDistributor(int redundancy,
config.ensurePrimaryPersisted = requirePrimaryToBeWritten;
auto distribution = std::make_shared<lib::Distribution>(config);
_node->getComponentRegister().setDistribution(distribution);
- _distributor->enableClusterState(lib::ClusterState(systemState));
+ enableDistributorClusterState(systemState);
// This is for all intents and purposes a hack to avoid having the
// distributor treat setting the distribution explicitly as a signal that
// it should send RequestBucketInfo to all configured nodes.
@@ -386,4 +386,10 @@ DistributorTestUtil::getBucketSpaces() const
return res;
}
+void
+DistributorTestUtil::enableDistributorClusterState(vespalib::stringref state)
+{
+ _distributor->enableClusterState(lib::ClusterState(state));
+}
+
}
diff --git a/storage/src/tests/distributor/distributortestutil.h b/storage/src/tests/distributor/distributortestutil.h
index 45aaf6b1dc7..e19cf491fc7 100644
--- a/storage/src/tests/distributor/distributortestutil.h
+++ b/storage/src/tests/distributor/distributortestutil.h
@@ -191,6 +191,8 @@ protected:
}
};
MessageSenderImpl _messageSender;
+
+ void enableDistributorClusterState(vespalib::stringref state);
};
}
diff --git a/storage/src/tests/distributor/garbagecollectiontest.cpp b/storage/src/tests/distributor/garbagecollectiontest.cpp
index f65fa4b0cd3..e2a6bb84065 100644
--- a/storage/src/tests/distributor/garbagecollectiontest.cpp
+++ b/storage/src/tests/distributor/garbagecollectiontest.cpp
@@ -37,7 +37,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(GarbageCollectionOperationTest);
void
GarbageCollectionOperationTest::testSimple()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
addNodesToBucketDB(document::BucketId(16, 1), "0=250/50/300,1=250/50/300");
getConfig().setGarbageCollection("music.date < 34", 3600);
diff --git a/storage/src/tests/distributor/getoperationtest.cpp b/storage/src/tests/distributor/getoperationtest.cpp
index 80c093dea87..80636bd33a7 100644
--- a/storage/src/tests/distributor/getoperationtest.cpp
+++ b/storage/src/tests/distributor/getoperationtest.cpp
@@ -135,7 +135,7 @@ public:
}
void setClusterState(const std::string& clusterState) {
- _distributor->enableClusterState(lib::ClusterState(clusterState));
+ enableDistributorClusterState(clusterState);
}
void testSimple();
diff --git a/storage/src/tests/distributor/joinbuckettest.cpp b/storage/src/tests/distributor/joinbuckettest.cpp
index e0275214c34..42ba0c0c0b9 100644
--- a/storage/src/tests/distributor/joinbuckettest.cpp
+++ b/storage/src/tests/distributor/joinbuckettest.cpp
@@ -48,7 +48,7 @@ JoinOperationTest::testSimple()
addNodesToBucketDB(document::BucketId(33, 1), "0=250/50/300");
addNodesToBucketDB(document::BucketId(33, 0x100000001), "0=300/40/200");
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
JoinOperation op("storage",
BucketAndNodes(makeDocumentBucket(document::BucketId(32, 0)),
@@ -108,8 +108,7 @@ JoinOperationTest::sendSparseJoinsToNodesWithoutBothSourceBuckets()
addNodesToBucketDB(document::BucketId(33, 1), "0=250/50/300,1=250/50/300");
addNodesToBucketDB(document::BucketId(33, 0x100000001), "0=300/40/200");
- _distributor->enableClusterState(
- lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
JoinOperation op("storage",
BucketAndNodes(makeDocumentBucket(document::BucketId(32, 0)),
diff --git a/storage/src/tests/distributor/mergeoperationtest.cpp b/storage/src/tests/distributor/mergeoperationtest.cpp
index 7ca58ba54f3..468ddd47790 100644
--- a/storage/src/tests/distributor/mergeoperationtest.cpp
+++ b/storage/src/tests/distributor/mergeoperationtest.cpp
@@ -70,7 +70,7 @@ MergeOperationTest::testSimple()
"1=20/1/1,"
"2=10/1/1/t");
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
toVector<uint16_t>(0, 1, 2)));
@@ -103,7 +103,7 @@ MergeOperationTest::testFailIfSourceOnlyCopiesChanged()
"1=20/1/1,"
"2=10/1/1/t");
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
toVector<uint16_t>(0, 1, 2)));
@@ -301,7 +301,7 @@ MergeOperationTest::doNotRemoveCopiesWithPendingMessages() {
document::BucketId bucket(16, 1);
getClock().setAbsoluteTimeInSeconds(10);
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
addNodesToBucketDB(bucket,
"0=10/1/1/t,"
"1=20/1/1,"
@@ -367,8 +367,7 @@ MergeOperationTest::allow_deleting_active_source_only_replica()
"1=20/1/1/u/a,"
"2=10/1/1/t");
- _distributor->enableClusterState(
- lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
toVector<uint16_t>(0, 1, 2)));
op.setIdealStateManager(&getIdealStateManager());
@@ -485,7 +484,7 @@ void MergeOperationTest::mark_post_merge_redundant_replicas_source_only() {
void MergeOperationTest::merge_operation_is_blocked_by_any_busy_target_node() {
getClock().setAbsoluteTimeInSeconds(10);
addNodesToBucketDB(document::BucketId(16, 1), "0=10/1/1/t,1=20/1/1,2=10/1/1/t");
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)), toVector<uint16_t>(0, 1, 2)));
op.setIdealStateManager(&getIdealStateManager());
diff --git a/storage/src/tests/distributor/putoperationtest.cpp b/storage/src/tests/distributor/putoperationtest.cpp
index e621ef8645c..776e0275f68 100644
--- a/storage/src/tests/distributor/putoperationtest.cpp
+++ b/storage/src/tests/distributor/putoperationtest.cpp
@@ -644,7 +644,7 @@ PutOperationTest::testDoNotResurrectDownedNodesInBucketDB()
CPPUNIT_ASSERT_EQUAL(std::string("Put => 1,Put => 0"),
_sender.getCommands(true));
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2 .1.s:d"));
+ enableDistributorClusterState("distributor:1 storage:2 .1.s:d");
addNodesToBucketDB(bId, "0=1/2/3/t"); // This will actually remove node #1.
sendReply(0, api::ReturnCode::OK, api::BucketInfo(9,9,9));
diff --git a/storage/src/tests/distributor/removebucketoperationtest.cpp b/storage/src/tests/distributor/removebucketoperationtest.cpp
index f289d374509..f11c29bc55c 100644
--- a/storage/src/tests/distributor/removebucketoperationtest.cpp
+++ b/storage/src/tests/distributor/removebucketoperationtest.cpp
@@ -48,7 +48,7 @@ RemoveBucketOperationTest::testSimple()
"1=10/100/1/t,"
"2=10/100/1/t");
setRedundancy(1);
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
RemoveBucketOperation op("storage",
BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
@@ -85,7 +85,7 @@ RemoveBucketOperationTest::testBucketInfoMismatchFailure()
new lib::Distribution(
lib::Distribution::getDefaultDistributionConfig(1, 10))));
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
RemoveBucketOperation op("storage",
BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
@@ -126,7 +126,7 @@ RemoveBucketOperationTest::testFailWithInvalidBucketInfo()
new lib::Distribution(
lib::Distribution::getDefaultDistributionConfig(1, 10))));
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
RemoveBucketOperation op("storage",
BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
diff --git a/storage/src/tests/distributor/removelocationtest.cpp b/storage/src/tests/distributor/removelocationtest.cpp
index 52612048daa..5a6013c6fc4 100644
--- a/storage/src/tests/distributor/removelocationtest.cpp
+++ b/storage/src/tests/distributor/removelocationtest.cpp
@@ -54,7 +54,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(RemoveLocationOperationTest);
void
RemoveLocationOperationTest::testSimple()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:3"));
+ enableDistributorClusterState("distributor:1 storage:3");
addNodesToBucketDB(document::BucketId(34, 0x000001234), "0=1,1=1");
addNodesToBucketDB(document::BucketId(34, 0x100001234), "0=1,2=1");
diff --git a/storage/src/tests/distributor/removeoperationtest.cpp b/storage/src/tests/distributor/removeoperationtest.cpp
index 423e0816c13..24c40f50894 100644
--- a/storage/src/tests/distributor/removeoperationtest.cpp
+++ b/storage/src/tests/distributor/removeoperationtest.cpp
@@ -46,7 +46,7 @@ public:
docId = document::DocumentId(document::DocIdString("test", "uri"));
bucketId = getExternalOperationHandler().getBucketId(docId);
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:4"));
+ enableDistributorClusterState("distributor:1 storage:4");
};
void tearDown() override {
@@ -189,8 +189,7 @@ RemoveOperationTest::testMultipleCopies()
void
RemoveOperationTest::canSendRemoveWhenAllReplicaNodesRetired()
{
- _distributor->enableClusterState(
- lib::ClusterState("distributor:1 storage:1 .0.s:r"));
+ enableDistributorClusterState("distributor:1 storage:1 .0.s:r");
addNodesToBucketDB(bucketId, "0=123");
sendRemove();
diff --git a/storage/src/tests/distributor/splitbuckettest.cpp b/storage/src/tests/distributor/splitbuckettest.cpp
index 47452aac391..e0986930e1d 100644
--- a/storage/src/tests/distributor/splitbuckettest.cpp
+++ b/storage/src/tests/distributor/splitbuckettest.cpp
@@ -69,8 +69,7 @@ SplitOperationTest::SplitOperationTest()
void
SplitOperationTest::testSimple()
{
- _distributor->enableClusterState(
- lib::ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
insertBucketInfo(document::BucketId(16, 1), 0, 0xabc, 1000,
tooLargeBucketSize, 250);
@@ -151,8 +150,7 @@ SplitOperationTest::testMultiNodeFailure()
getBucketDatabase().update(entry);
}
- _distributor->enableClusterState(
- lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
SplitOperation op("storage",
@@ -241,8 +239,7 @@ SplitOperationTest::testMultiNodeFailure()
void
SplitOperationTest::testCopyTrustedStatusNotCarriedOverAfterSplit()
{
- _distributor->enableClusterState(
- lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
document::BucketId sourceBucket(16, 1);
/*
@@ -312,8 +309,7 @@ SplitOperationTest::testOperationBlockedByPendingJoin()
clock.setAbsoluteTimeInSeconds(1);
PendingMessageTracker tracker(compReg);
- _distributor->enableClusterState(
- lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
document::BucketId joinTarget(2, 1);
std::vector<document::BucketId> joinSources = {
diff --git a/storage/src/tests/distributor/statecheckerstest.cpp b/storage/src/tests/distributor/statecheckerstest.cpp
index 1130a8ae2d2..e49cd811dc3 100644
--- a/storage/src/tests/distributor/statecheckerstest.cpp
+++ b/storage/src/tests/distributor/statecheckerstest.cpp
@@ -784,7 +784,7 @@ StateCheckersTest::testSynchronizeAndMove(const std::string& bucketInfo,
SynchronizeAndMoveStateChecker checker;
setRedundancy(redundancy);
- _distributor->enableClusterState(lib::ClusterState(clusterState));
+ enableDistributorClusterState(clusterState);
NodeMaintenanceStatsTracker statsTracker;
StateChecker::Context c(getExternalOperationHandler(), getDistributorBucketSpace(), statsTracker, makeDocumentBucket(bid));
return testStateChecker(checker, c, false, blocker, includePriority);
@@ -977,7 +977,7 @@ StateCheckersTest::testDeleteExtraCopies(
setRedundancy(redundancy);
if (!clusterState.empty()) {
- _distributor->enableClusterState(lib::ClusterState(clusterState));
+ enableDistributorClusterState(clusterState);
}
DeleteExtraCopiesStateChecker checker;
NodeMaintenanceStatsTracker statsTracker;
diff --git a/storage/src/tests/distributor/statoperationtest.cpp b/storage/src/tests/distributor/statoperationtest.cpp
index b010c5f6b79..19337a0d52a 100644
--- a/storage/src/tests/distributor/statoperationtest.cpp
+++ b/storage/src/tests/distributor/statoperationtest.cpp
@@ -40,7 +40,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(StatOperationTest);
void
StatOperationTest::testBucketInfo()
{
- _distributor->enableClusterState(lib::ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
addNodesToBucketDB(document::BucketId(16, 5),
"0=4/2/100,1=4/2/100");
diff --git a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
index 16d317551e0..ed961b29b1c 100644
--- a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
+++ b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
@@ -579,7 +579,7 @@ TwoPhaseUpdateOperationTest::testFastPathInconsistentTimestampsPutNotStarted()
sender.getLastCommand(true));
checkMessageSettingsPropagatedTo(sender.commands.back());
- _distributor->enableClusterState(lib::ClusterState("storage:0 distributor:1"));
+ enableDistributorClusterState("storage:0 distributor:1");
CPPUNIT_ASSERT(sender.replies.empty());
replyToGet(*cb, sender, 2, 110);
@@ -992,8 +992,7 @@ TwoPhaseUpdateOperationTest::testUpdateFailsIfOwnershipChangesBetweenGetAndPut()
// this new state, the distributor no longer owns the bucket in question
// and the operation should thus be failed. We must not try to send Puts
// to a bucket we no longer own.
- _distributor->enableClusterState(
- lib::ClusterState("storage:2 distributor:1 .0.s:d"));
+ enableDistributorClusterState("storage:2 distributor:1 .0.s:d");
getBucketDatabase().clear();
replyToGet(*cb, sender, 0, 70);
replyToGet(*cb, sender, 1, 70);
diff --git a/storage/src/tests/distributor/visitoroperationtest.cpp b/storage/src/tests/distributor/visitoroperationtest.cpp
index 17d1bc288ca..b6afcd4f3ab 100644
--- a/storage/src/tests/distributor/visitoroperationtest.cpp
+++ b/storage/src/tests/distributor/visitoroperationtest.cpp
@@ -257,7 +257,7 @@ VisitorOperationTest::testParameterForwarding()
void
VisitorOperationTest::doStandardVisitTest(const std::string& clusterState)
{
- _distributor->enableClusterState(ClusterState(clusterState));
+ enableDistributorClusterState(clusterState);
// Create bucket in bucketdb
document::BucketId id(uint64_t(0x400000000000007b));
@@ -326,7 +326,7 @@ VisitorOperationTest::doStandardVisitTest(const std::string& clusterState)
void
VisitorOperationTest::testShutdown()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Create bucket in bucketdb
document::BucketId id(uint64_t(0x400000000000007b));
@@ -362,7 +362,7 @@ VisitorOperationTest::testShutdown()
void
VisitorOperationTest::testNoBucket()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Send create visitor
api::CreateVisitorCommand::SP msg(new api::CreateVisitorCommand(
@@ -378,7 +378,7 @@ VisitorOperationTest::testNoBucket()
void
VisitorOperationTest::testOnlySuperBucketAndProgressAllowed()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Send create visitor
api::CreateVisitorCommand::SP msg(new api::CreateVisitorCommand(
@@ -406,7 +406,7 @@ VisitorOperationTest::testNoResendAfterTimeoutPassed()
{
document::BucketId id(uint64_t(0x400000000000007b));
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
addNodesToBucketDB(id, "0=1/1/1/t,1=1/1/1/t");
auto op = createOpWithDefaultConfig(
@@ -431,7 +431,7 @@ VisitorOperationTest::testNoResendAfterTimeoutPassed()
void
VisitorOperationTest::testDistributorNotReady()
{
- _distributor->enableClusterState(ClusterState("distributor:0 storage:0"));
+ enableDistributorClusterState("distributor:0 storage:0");
document::BucketId id(uint64_t(0x400000000000007b));
CPPUNIT_ASSERT_EQUAL(
std::string(
@@ -447,7 +447,7 @@ VisitorOperationTest::testDistributorNotReady()
void
VisitorOperationTest::testInvalidOrderDocSelection()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
document::BucketId id(0x400000000000007b);
addNodesToBucketDB(id, "0=1/1/1/t");
@@ -473,7 +473,7 @@ void
VisitorOperationTest::testNonExistingBucket()
{
document::BucketId id(uint64_t(0x400000000000007b));
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
CPPUNIT_ASSERT_EQUAL(
std::string("CreateVisitorReply(last=BucketId(0x000000007fffffff)) "
"ReturnCode(NONE)"),
@@ -488,7 +488,7 @@ VisitorOperationTest::testUserSingleBucket()
{
document::BucketId id(uint64_t(0x400000000000007b));
document::BucketId userid(uint64_t(0x800000000000007b));
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
addNodesToBucketDB(id, "0=1/1/1/t");
@@ -549,7 +549,7 @@ VisitorOperationTest::runVisitor(document::BucketId id,
void
VisitorOperationTest::testUserInconsistentlySplitBucket()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Not containing (19, 0x40001)
addNodesToBucketDB(document::BucketId(17, 0x0), "0=1/1/1/t");
@@ -596,7 +596,7 @@ VisitorOperationTest::testUserInconsistentlySplitBucket()
void
VisitorOperationTest::testBucketRemovedWhileVisitorPending()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Create bucket in bucketdb
document::BucketId id(uint64_t(0x400000000000007b));
@@ -626,7 +626,7 @@ VisitorOperationTest::testBucketRemovedWhileVisitorPending()
void
VisitorOperationTest::testEmptyBucketsVisitedWhenVisitingRemoves()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
document::BucketId id(uint64_t(0x400000000000007b));
addNodesToBucketDB(id, "0=0/0/0/1/2/t");
@@ -649,7 +649,7 @@ VisitorOperationTest::testEmptyBucketsVisitedWhenVisitingRemoves()
void
VisitorOperationTest::testResendToOtherStorageNodeOnFailure()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
document::BucketId id(uint64_t(0x400000000000007b));
addNodesToBucketDB(id, "0=1/1/1/t,1=1/1/1/t");
@@ -676,7 +676,7 @@ VisitorOperationTest::testResendToOtherStorageNodeOnFailure()
void
VisitorOperationTest::testTimeoutOnlyAfterReplyFromAllStorageNodes()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
// Contained in (16, 0x1)
addNodesToBucketDB(document::BucketId(17, 0x00001), "0=1/1/1/t");
@@ -717,7 +717,7 @@ VisitorOperationTest::testTimeoutOnlyAfterReplyFromAllStorageNodes()
void
VisitorOperationTest::testTimeoutDoesNotOverrideCriticalError()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
addNodesToBucketDB(document::BucketId(17, 0x00001), "0=1/1/1/t");
addNodesToBucketDB(document::BucketId(17, 0x10001), "1=1/1/1/t");
@@ -799,7 +799,7 @@ VisitorOperationTest::testVisitorAbortedIfNodeIsMarkedAsDown()
void
VisitorOperationTest::testBucketHighBitCount()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1 bits:16"));
+ enableDistributorClusterState("distributor:1 storage:1 bits:16");
document::BucketId id(18, 0x0);
addNodesToBucketDB(id, "0=1/1/1/t");
@@ -830,7 +830,7 @@ VisitorOperationTest::testBucketHighBitCount()
void
VisitorOperationTest::testBucketLowBitCount()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1 bits:16"));
+ enableDistributorClusterState("distributor:1 storage:1 bits:16");
document::BucketId id(1, 0x0);
addNodesToBucketDB(id, "0=1/1/1/t");
@@ -862,7 +862,7 @@ VisitorOperationTest::testBucketLowBitCount()
void
VisitorOperationTest::testParallelVisitorsToOneStorageNode()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Create buckets in bucketdb
for (int i=0; i<32; i++) {
@@ -944,7 +944,7 @@ VisitorOperationTest::testParallelVisitorsToOneStorageNode()
void
VisitorOperationTest::testParallelVisitorsResendOnlyFailing()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
// Create buckets in bucketdb
for (int i=0; i<32; i++) {
@@ -988,7 +988,7 @@ VisitorOperationTest::testParallelVisitorsResendOnlyFailing()
void
VisitorOperationTest::testParallelVisitorsToOneStorageNodeOneSuperBucket()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Create buckets in bucketdb
for (int i=0; i<8; i++) {
@@ -1026,7 +1026,7 @@ VisitorOperationTest::testParallelVisitorsToOneStorageNodeOneSuperBucket()
void
VisitorOperationTest::testVisitWhenOneBucketCopyIsInvalid()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
document::BucketId id(16, 0);
@@ -1043,7 +1043,7 @@ VisitorOperationTest::testVisitWhenOneBucketCopyIsInvalid()
void
VisitorOperationTest::testVisitingWhenAllBucketsAreInvalid()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
document::BucketId id(16, 0);
@@ -1060,7 +1060,7 @@ VisitorOperationTest::testVisitingWhenAllBucketsAreInvalid()
void
VisitorOperationTest::testInconsistencyHandling()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
document::BucketId id(16, 0);
@@ -1131,8 +1131,7 @@ VisitorOperationTest::testVisitIdealNode()
void
VisitorOperationTest::testNoResendingOnCriticalFailure()
{
- ClusterState state("distributor:1 storage:3");
- _distributor->enableClusterState(state);
+ enableDistributorClusterState("distributor:1 storage:3");
// Create buckets in bucketdb
for (int i=0; i<32; i++ ) {
@@ -1160,8 +1159,7 @@ VisitorOperationTest::testNoResendingOnCriticalFailure()
void
VisitorOperationTest::testFailureOnAllNodes()
{
- ClusterState state("distributor:1 storage:3");
- _distributor->enableClusterState(state);
+ enableDistributorClusterState("distributor:1 storage:3");
// Create buckets in bucketdb
for (int i=0; i<32; i++ ) {
@@ -1250,7 +1248,7 @@ VisitorOperationTest::testVisitOrder()
void
VisitorOperationTest::testVisitInChunks()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
for (int i = 0; i < 9; ++i) {
addNodesToBucketDB(document::BucketId(30, i << 16), "0=1/1/1/t");
@@ -1472,7 +1470,7 @@ VisitorOperationTest::doOrderedVisitor(document::BucketId startBucket)
void
VisitorOperationTest::testUserVisitorOrder()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Create buckets in bucketdb
std::vector<document::BucketId> buckets;
@@ -1501,7 +1499,7 @@ VisitorOperationTest::testUserVisitorOrder()
void
VisitorOperationTest::testUserVisitorOrderSplitPastOrderBits()
{
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
// Create buckets in bucketdb
std::vector<document::BucketId> buckets;
@@ -1532,8 +1530,7 @@ VisitorOperationTest::testUserVisitorOrderSplitPastOrderBits()
std::unique_ptr<VisitorOperation>
VisitorOperationTest::startOperationWith2StorageNodeVisitors(bool inconsistent)
{
- ClusterState state("distributor:1 storage:3");
- _distributor->enableClusterState(state);
+ enableDistributorClusterState("distributor:1 storage:3");
addNodesToBucketDB(document::BucketId(17, 1), "0=1/1/1/t");
addNodesToBucketDB(document::BucketId(17, 1 << 16 | 1),
@@ -1603,7 +1600,7 @@ void
VisitorOperationTest::testQueueTimeoutIsFactorOfTotalTimeout()
{
document::BucketId id(uint64_t(0x400000000000007b));
- _distributor->enableClusterState(ClusterState("distributor:1 storage:2"));
+ enableDistributorClusterState("distributor:1 storage:2");
addNodesToBucketDB(id, "0=1/1/1/t,1=1/1/1/t");
auto op = createOpWithDefaultConfig(
@@ -1622,7 +1619,7 @@ VisitorOperationTest::do_visitor_roundtrip_with_statistics(
const api::ReturnCode& result)
{
document::BucketId id(0x400000000000007bULL);
- _distributor->enableClusterState(ClusterState("distributor:1 storage:1"));
+ enableDistributorClusterState("distributor:1 storage:1");
addNodesToBucketDB(id, "0=1/1/1/t");
auto op = createOpWithDefaultConfig(
diff --git a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
index c55f1aadd06..a2bbba5e52c 100644
--- a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
+++ b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
@@ -31,4 +31,10 @@ ClusterStateBundle::getVersion() const
return _baselineClusterState->getVersion();
}
+bool
+ClusterStateBundle::operator==(const ClusterStateBundle &rhs) const
+{
+ return *_baselineClusterState == *rhs._baselineClusterState;
+}
+
}
diff --git a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
index c54df1d1952..77d26092f4e 100644
--- a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
+++ b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
@@ -21,6 +21,7 @@ public:
const std::shared_ptr<const ClusterState> &getBaselineClusterState() const;
const std::shared_ptr<const ClusterState> &getDerivedClusterState(document::BucketSpace bucketSpace) const;
uint32_t getVersion() const;
+ bool operator==(const ClusterStateBundle &rhs) const;
};
}