diff options
Diffstat (limited to 'storage/src/tests/distributor')
-rw-r--r-- | storage/src/tests/distributor/distributortest.cpp | 2 | ||||
-rw-r--r-- | storage/src/tests/distributor/statecheckerstest.cpp | 35 |
2 files changed, 31 insertions, 6 deletions
diff --git a/storage/src/tests/distributor/distributortest.cpp b/storage/src/tests/distributor/distributortest.cpp index 268a58a140e..235314dd38b 100644 --- a/storage/src/tests/distributor/distributortest.cpp +++ b/storage/src/tests/distributor/distributortest.cpp @@ -521,6 +521,7 @@ TEST_F(DistributorTest, priority_config_is_propagated_to_distributor_configurati builder.prioritySplitLargeBucket = 9; builder.prioritySplitInconsistentBucket = 10; builder.priorityGarbageCollection = 11; + builder.priorityMergeGlobalBuckets = 12; getConfig().configure(builder); @@ -536,6 +537,7 @@ TEST_F(DistributorTest, priority_config_is_propagated_to_distributor_configurati EXPECT_EQ(9, static_cast<int>(mp.splitLargeBucket)); EXPECT_EQ(10, static_cast<int>(mp.splitInconsistentBucket)); EXPECT_EQ(11, static_cast<int>(mp.garbageCollection)); + EXPECT_EQ(12, static_cast<int>(mp.mergeGlobalBuckets)); } TEST_F(DistributorTest, no_db_resurrection_for_bucket_not_owned_in_pending_state) { diff --git a/storage/src/tests/distributor/statecheckerstest.cpp b/storage/src/tests/distributor/statecheckerstest.cpp index fa7afd39cf3..ad95e14fe7c 100644 --- a/storage/src/tests/distributor/statecheckerstest.cpp +++ b/storage/src/tests/distributor/statecheckerstest.cpp @@ -2,6 +2,7 @@ #include "distributortestutil.h" #include <vespa/config-stor-distribution.h> +#include <vespa/document/bucket/fixed_bucket_spaces.h> #include <vespa/document/test/make_bucket_space.h> #include <vespa/document/test/make_document_bucket.h> #include <vespa/storage/distributor/bucketdbupdater.h> @@ -79,8 +80,8 @@ struct StateCheckersTest : Test, DistributorTestUtil { .getSibling(c.getBucketId()); std::vector<BucketDatabase::Entry> entries; - getBucketDatabase().getAll(c.getBucketId(), entries); - c.siblingEntry = getBucketDatabase().get(c.siblingBucket); + getBucketDatabase(c.getBucketSpace()).getAll(c.getBucketId(), entries); + c.siblingEntry = getBucketDatabase(c.getBucketSpace()).get(c.siblingBucket); c.entries = entries; for (uint32_t j = 0; j < entries.size(); ++j) { @@ -126,7 +127,7 @@ struct StateCheckersTest : Test, DistributorTestUtil { ost << "NO OPERATIONS GENERATED"; } - getBucketDatabase().clear(); + getBucketDatabase(c.getBucketSpace()).clear(); return ost.str(); } @@ -160,6 +161,7 @@ struct StateCheckersTest : Test, DistributorTestUtil { std::string _clusterState {"distributor:1 storage:2"}; std::string _pending_cluster_state; std::string _expect; + document::BucketSpace _bucket_space {document::FixedBucketSpaces::default_space()}; static const PendingMessage NO_OP_BLOCKER; const PendingMessage* _blockerMessage {&NO_OP_BLOCKER}; uint32_t _redundancy {2}; @@ -208,6 +210,10 @@ struct StateCheckersTest : Test, DistributorTestUtil { _merge_operations_disabled = disabled; return *this; } + CheckerParams& bucket_space(document::BucketSpace bucket_space) noexcept { + _bucket_space = bucket_space; + return *this; + } }; template <typename CheckerImpl> @@ -215,7 +221,8 @@ struct StateCheckersTest : Test, DistributorTestUtil { CheckerImpl checker; document::BucketId bid(17, 0); - addNodesToBucketDB(bid, params._bucketInfo); + document::Bucket bucket(params._bucket_space, bid); + addNodesToBucketDB(bucket, params._bucketInfo); setRedundancy(params._redundancy); enableDistributorClusterState(params._clusterState); getConfig().set_merge_operations_disabled(params._merge_operations_disabled); @@ -225,8 +232,10 @@ struct StateCheckersTest : Test, DistributorTestUtil { tick(); // Trigger command processing and pending state setup. } NodeMaintenanceStatsTracker statsTracker; - StateChecker::Context c( - getExternalOperationHandler(), getDistributorBucketSpace(), statsTracker, makeDocumentBucket(bid)); + StateChecker::Context c(getExternalOperationHandler(), + getBucketSpaceRepo().get(params._bucket_space), + statsTracker, + bucket); std::string result = testStateChecker( checker, c, false, *params._blockerMessage, params._includeMessagePriority, @@ -757,6 +766,20 @@ TEST_F(StateCheckersTest, synchronize_and_move) { .clusterState("distributor:1 storage:4")); } +TEST_F(StateCheckersTest, global_bucket_merges_have_high_priority) { + runAndVerify<SynchronizeAndMoveStateChecker>( + CheckerParams().expect( + "[Synchronizing buckets with different checksums " + "node(idx=0,crc=0x1,docs=1/1,bytes=1/1,trusted=false,active=false,ready=false), " + "node(idx=1,crc=0x2,docs=2/2,bytes=2/2,trusted=false,active=false,ready=false)] " + "(pri 115) " + "(scheduling pri HIGH)") + .bucketInfo("0=1,1=2") + .bucket_space(document::FixedBucketSpaces::global_space()) + .includeSchedulingPriority(true) + .includeMessagePriority(true)); +} + // Upon entering a cluster state transition edge the distributor will // prune all replicas from its DB that are on nodes that are unavailable // in the _pending_ state. As long as this state is pending, the _current_ |