From 3747f96e80ad43548af67cbe1b4a7cba1817d9e0 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Fri, 23 Feb 2018 15:28:09 +0000 Subject: Simplify distributor unit tests. --- .../src/tests/distributor/bucketdbupdatertest.cpp | 18 +++--- storage/src/tests/distributor/distributortest.cpp | 7 +-- .../src/tests/distributor/distributortestutil.cpp | 8 ++- .../src/tests/distributor/distributortestutil.h | 2 + .../tests/distributor/garbagecollectiontest.cpp | 2 +- storage/src/tests/distributor/getoperationtest.cpp | 2 +- storage/src/tests/distributor/joinbuckettest.cpp | 5 +- .../src/tests/distributor/mergeoperationtest.cpp | 11 ++-- storage/src/tests/distributor/putoperationtest.cpp | 2 +- .../distributor/removebucketoperationtest.cpp | 6 +- .../src/tests/distributor/removelocationtest.cpp | 2 +- .../src/tests/distributor/removeoperationtest.cpp | 5 +- storage/src/tests/distributor/splitbuckettest.cpp | 12 ++-- .../src/tests/distributor/statecheckerstest.cpp | 4 +- .../src/tests/distributor/statoperationtest.cpp | 2 +- .../distributor/twophaseupdateoperationtest.cpp | 5 +- .../src/tests/distributor/visitoroperationtest.cpp | 65 +++++++++++----------- .../vespa/vdslib/state/cluster_state_bundle.cpp | 6 ++ .../src/vespa/vdslib/state/cluster_state_bundle.h | 1 + 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 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 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(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(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(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(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(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 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 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 buckets; @@ -1532,8 +1530,7 @@ VisitorOperationTest::testUserVisitorOrderSplitPastOrderBits() std::unique_ptr 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 &getBaselineClusterState() const; const std::shared_ptr &getDerivedClusterState(document::BucketSpace bucketSpace) const; uint32_t getVersion() const; + bool operator==(const ClusterStateBundle &rhs) const; }; } -- cgit v1.2.3