diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2018-04-26 16:00:43 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2018-04-30 12:00:48 -0400 |
commit | cc7a103bd71ee98ad85e1b5dcca8763b4eb16679 (patch) | |
tree | 79d69534528aab8438b6f9bd84bf84a92d4b2ccb /src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp | |
parent | bd93ed7abe5b4fd862065e240be493702ad4d790 (diff) | |
download | mongo-cc7a103bd71ee98ad85e1b5dcca8763b4eb16679.tar.gz |
SERVER-34644 Only explicitly do $-prefix check when writing sharded metadata
Diffstat (limited to 'src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp')
-rw-r--r-- | src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp b/src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp index df7734f0372..58cebd7ef26 100644 --- a/src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp +++ b/src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp @@ -63,7 +63,7 @@ TEST_F(SplitChunkTest, SplitExistingChunkCorrectlyShouldSucceed) { ASSERT_OK(ShardingCatalogManager::get(operationContext()) ->commitChunkSplit(operationContext(), - NamespaceString("TestDB.TestColl"), + kNamespace, origVersion.epoch(), ChunkRange(chunkMin, chunkMax), splitPoints, @@ -124,7 +124,7 @@ TEST_F(SplitChunkTest, MultipleSplitsOnExistingChunkShouldSucceed) { ASSERT_OK(ShardingCatalogManager::get(operationContext()) ->commitChunkSplit(operationContext(), - NamespaceString("TestDB.TestColl"), + kNamespace, origVersion.epoch(), ChunkRange(chunkMin, chunkMax), splitPoints, @@ -208,7 +208,7 @@ TEST_F(SplitChunkTest, NewSplitShouldClaimHighestVersion) { ASSERT_OK(ShardingCatalogManager::get(operationContext()) ->commitChunkSplit(operationContext(), - NamespaceString("TestDB.TestColl"), + kNamespace, collEpoch, ChunkRange(chunkMin, chunkMax), splitPoints, @@ -258,7 +258,7 @@ TEST_F(SplitChunkTest, PreConditionFailErrors) { auto splitStatus = ShardingCatalogManager::get(operationContext()) ->commitChunkSplit(operationContext(), - NamespaceString("TestDB.TestColl"), + kNamespace, origVersion.epoch(), ChunkRange(chunkMin, BSON("a" << 7)), splitPoints, @@ -312,7 +312,7 @@ TEST_F(SplitChunkTest, NonMatchingEpochsOfChunkAndRequestErrors) { auto splitStatus = ShardingCatalogManager::get(operationContext()) ->commitChunkSplit(operationContext(), - NamespaceString("TestDB.TestColl"), + kNamespace, OID::gen(), ChunkRange(chunkMin, chunkMax), splitPoints, @@ -339,7 +339,7 @@ TEST_F(SplitChunkTest, SplitPointsOutOfOrderShouldFail) { auto splitStatus = ShardingCatalogManager::get(operationContext()) ->commitChunkSplit(operationContext(), - NamespaceString("TestDB.TestColl"), + kNamespace, origVersion.epoch(), ChunkRange(chunkMin, chunkMax), splitPoints, @@ -366,7 +366,7 @@ TEST_F(SplitChunkTest, SplitPointsOutOfRangeAtMinShouldFail) { auto splitStatus = ShardingCatalogManager::get(operationContext()) ->commitChunkSplit(operationContext(), - NamespaceString("TestDB.TestColl"), + kNamespace, origVersion.epoch(), ChunkRange(chunkMin, chunkMax), splitPoints, @@ -393,7 +393,7 @@ TEST_F(SplitChunkTest, SplitPointsOutOfRangeAtMaxShouldFail) { auto splitStatus = ShardingCatalogManager::get(operationContext()) ->commitChunkSplit(operationContext(), - NamespaceString("TestDB.TestColl"), + kNamespace, origVersion.epoch(), ChunkRange(chunkMin, chunkMax), splitPoints, @@ -401,5 +401,35 @@ TEST_F(SplitChunkTest, SplitPointsOutOfRangeAtMaxShouldFail) { ASSERT_EQ(ErrorCodes::InvalidOptions, splitStatus); } +TEST_F(SplitChunkTest, SplitPointsWithDollarPrefixShouldFail) { + ChunkType chunk; + chunk.setNS(kNamespace); + + auto origVersion = ChunkVersion(1, 0, OID::gen()); + chunk.setVersion(origVersion); + chunk.setShard(ShardId("shard0000")); + + auto chunkMin = BSON("a" << kMinBSONKey); + auto chunkMax = BSON("a" << kMaxBSONKey); + chunk.setMin(chunkMin); + chunk.setMax(chunkMax); + ASSERT_OK(setupChunks({chunk})); + + ASSERT_NOT_OK(ShardingCatalogManager::get(operationContext()) + ->commitChunkSplit(operationContext(), + kNamespace, + origVersion.epoch(), + ChunkRange(chunkMin, chunkMax), + {BSON("a" << BSON("$minKey" << 1))}, + "shard0000")); + ASSERT_NOT_OK(ShardingCatalogManager::get(operationContext()) + ->commitChunkSplit(operationContext(), + kNamespace, + origVersion.epoch(), + ChunkRange(chunkMin, chunkMax), + {BSON("a" << BSON("$maxKey" << 1))}, + "shard0000")); +} + } // namespace } // namespace mongo |