summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2018-04-26 16:00:43 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2018-04-30 12:00:48 -0400
commitcc7a103bd71ee98ad85e1b5dcca8763b4eb16679 (patch)
tree79d69534528aab8438b6f9bd84bf84a92d4b2ccb /src/mongo/db/s/config/sharding_catalog_manager_split_chunk_test.cpp
parentbd93ed7abe5b4fd862065e240be493702ad4d790 (diff)
downloadmongo-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.cpp46
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