diff options
Diffstat (limited to 'src/mongo/db/commands/command_mirroring_test.cpp')
| -rw-r--r-- | src/mongo/db/commands/command_mirroring_test.cpp | 109 |
1 files changed, 22 insertions, 87 deletions
diff --git a/src/mongo/db/commands/command_mirroring_test.cpp b/src/mongo/db/commands/command_mirroring_test.cpp index 8222cc9b74e..286d20813a2 100644 --- a/src/mongo/db/commands/command_mirroring_test.cpp +++ b/src/mongo/db/commands/command_mirroring_test.cpp @@ -38,7 +38,6 @@ #include "mongo/unittest/unittest.h" namespace mongo { - namespace { class CommandMirroringTest : public unittest::Test { @@ -109,7 +108,6 @@ public: void setUp() override { CommandMirroringTest::setUp(); shardVersion = boost::none; - databaseVersion = boost::none; } std::string commandName() override { @@ -121,10 +119,6 @@ public: if (shardVersion) { args.push_back(shardVersion.get()); } - if (databaseVersion) { - args.push_back(databaseVersion.value()); - } - auto request = CommandMirroringTest::makeCommand(coll, args); // Directly add `updates` to `OpMsg::sequences` to emulate `OpMsg::parse()` behavior. @@ -140,7 +134,6 @@ public: } boost::optional<BSONObj> shardVersion; - boost::optional<BSONObj> databaseVersion; }; TEST_F(UpdateCommandTest, NoQuery) { @@ -199,26 +192,21 @@ TEST_F(UpdateCommandTest, MultipleQueries) { ASSERT_EQ(mirroredObj["batchSize"].Int(), 1); } -TEST_F(UpdateCommandTest, ValidateShardVersionAndDatabaseVersion) { +TEST_F(UpdateCommandTest, ValidateShardVersion) { auto update = BSON("q" << BSONObj() << "u" << BSON("$set" << BSON("_id" << 1))); { auto mirroredObj = createCommandAndGetMirrored(kCollection, {update}); ASSERT_FALSE(mirroredObj.hasField("shardVersion")); - ASSERT_FALSE(mirroredObj.hasField("databaseVersion")); } const auto kShardVersion = 123; - const auto kDatabaseVersion = 456; shardVersion = BSON("shardVersion" << kShardVersion); - databaseVersion = BSON("databaseVersion" << kDatabaseVersion); { auto mirroredObj = createCommandAndGetMirrored(kCollection, {update}); ASSERT_TRUE(mirroredObj.hasField("shardVersion")); - ASSERT_TRUE(mirroredObj.hasField("databaseVersion")); ASSERT_EQ(mirroredObj["shardVersion"].Int(), kShardVersion); - ASSERT_EQ(mirroredObj["databaseVersion"].Int(), kDatabaseVersion); } } @@ -240,8 +228,7 @@ public: "max", "batchSize", "singleBatch", - "shardVersion", - "databaseVersion"}; + "shardVersion"}; } void checkFieldNamesAreAllowed(BSONObj& mirroredObj) { @@ -276,8 +263,7 @@ TEST_F(FindCommandTest, MirrorableKeys) { BSON("awaitData" << true), BSON("allowPartialResults" << true), BSON("collation" << BSONObj()), - BSON("shardVersion" << BSONObj()), - BSON("databaseVersion" << BSONObj())}; + BSON("shardVersion" << BSONObj())}; auto mirroredObj = createCommandAndGetMirrored(kCollection, findArgs); checkFieldNamesAreAllowed(mirroredObj); @@ -305,8 +291,7 @@ TEST_F(FindCommandTest, ValidateMirroredQuery) { const auto min = BSONObj(); const auto max = BSONObj(); - const auto shardVersion = BSON("v" << 123); - const auto databaseVersion = BSON("v" << 456); + const auto shardVersion = BSONObj(); auto findArgs = {BSON("filter" << filter), BSON("skip" << skip), @@ -316,8 +301,7 @@ TEST_F(FindCommandTest, ValidateMirroredQuery) { BSON("collation" << collation), BSON("min" << min), BSON("max" << max), - BSON("shardVersion" << shardVersion), - BSON("databaseVersion" << databaseVersion)}; + BSON("shardVersion" << shardVersion)}; auto mirroredObj = createCommandAndGetMirrored(kCollection, findArgs); @@ -331,27 +315,21 @@ TEST_F(FindCommandTest, ValidateMirroredQuery) { ASSERT(compareBSONObjs(mirroredObj["min"].Obj(), min)); ASSERT(compareBSONObjs(mirroredObj["max"].Obj(), max)); ASSERT(compareBSONObjs(mirroredObj["shardVersion"].Obj(), shardVersion)); - ASSERT(compareBSONObjs(mirroredObj["databaseVersion"].Obj(), databaseVersion)); } -TEST_F(FindCommandTest, ValidateShardVersionAndDatabaseVersion) { +TEST_F(FindCommandTest, ValidateShardVersion) { std::vector<BSONObj> findArgs = {BSON("filter" << BSONObj())}; { auto mirroredObj = createCommandAndGetMirrored(kCollection, findArgs); ASSERT_FALSE(mirroredObj.hasField("shardVersion")); - ASSERT_FALSE(mirroredObj.hasField("databaseVersion")); } const auto kShardVersion = 123; - const auto kDatabaseVersion = 456; findArgs.push_back(BSON("shardVersion" << kShardVersion)); - findArgs.push_back(BSON("databaseVersion" << kDatabaseVersion)); { auto mirroredObj = createCommandAndGetMirrored(kCollection, findArgs); ASSERT_TRUE(mirroredObj.hasField("shardVersion")); - ASSERT_TRUE(mirroredObj.hasField("databaseVersion")); ASSERT_EQ(mirroredObj["shardVersion"].Int(), kShardVersion); - ASSERT_EQ(mirroredObj["databaseVersion"].Int(), kDatabaseVersion); } } @@ -362,14 +340,7 @@ public: } std::vector<std::string> getAllowedKeys() const override { - return {"sort", - "collation", - "find", - "filter", - "batchSize", - "singleBatch", - "shardVersion", - "databaseVersion"}; + return {"sort", "collation", "find", "filter", "batchSize", "singleBatch", "shardVersion"}; } }; @@ -385,9 +356,7 @@ TEST_F(FindAndModifyCommandTest, MirrorableKeys) { BSON("writeConcern" << BSONObj()), BSON("maxTimeMS" << 100), BSON("collation" << BSONObj()), - BSON("arrayFilters" << BSONArray()), - BSON("shardVersion" << 123), - BSON("databaseVersion" << 456)}; + BSON("arrayFilters" << BSONArray())}; auto mirroredObj = createCommandAndGetMirrored(kCollection, findAndModifyArgs); checkFieldNamesAreAllowed(mirroredObj); @@ -412,16 +381,12 @@ TEST_F(FindAndModifyCommandTest, ValidateMirroredQuery) { constexpr auto upsert = true; const auto collation = BSON("locale" << "\"fr\""); - const auto shardVersion = BSON("v" << 123); - const auto databaseVersion = BSON("v" << 456); auto findAndModifyArgs = {BSON("query" << query), BSON("sort" << sortObj), BSON("update" << update), BSON("upsert" << upsert), - BSON("collation" << collation), - BSON("shardVersion" << shardVersion), - BSON("databaseVersion" << databaseVersion)}; + BSON("collation" << collation)}; auto mirroredObj = createCommandAndGetMirrored(kCollection, findAndModifyArgs); @@ -430,11 +395,9 @@ TEST_F(FindAndModifyCommandTest, ValidateMirroredQuery) { ASSERT(compareBSONObjs(mirroredObj["filter"].Obj(), query)); ASSERT(compareBSONObjs(mirroredObj["sort"].Obj(), sortObj)); ASSERT(compareBSONObjs(mirroredObj["collation"].Obj(), collation)); - ASSERT(compareBSONObjs(mirroredObj["shardVersion"].Obj(), shardVersion)); - ASSERT(compareBSONObjs(mirroredObj["databaseVersion"].Obj(), databaseVersion)); } -TEST_F(FindAndModifyCommandTest, ValidateShardVersionAndDatabaseVersion) { +TEST_F(FindAndModifyCommandTest, ValidateShardVersion) { std::vector<BSONObj> findAndModifyArgs = {BSON("query" << BSON("name" << "Andy")), BSON("update" << BSON("$inc" << BSON("score" << 1)))}; @@ -442,19 +405,14 @@ TEST_F(FindAndModifyCommandTest, ValidateShardVersionAndDatabaseVersion) { { auto mirroredObj = createCommandAndGetMirrored(kCollection, findAndModifyArgs); ASSERT_FALSE(mirroredObj.hasField("shardVersion")); - ASSERT_FALSE(mirroredObj.hasField("databaseVersion")); } const auto kShardVersion = 123; - const auto kDatabaseVersion = 456; findAndModifyArgs.push_back(BSON("shardVersion" << kShardVersion)); - findAndModifyArgs.push_back(BSON("databaseVersion" << kDatabaseVersion)); { auto mirroredObj = createCommandAndGetMirrored(kCollection, findAndModifyArgs); ASSERT_TRUE(mirroredObj.hasField("shardVersion")); - ASSERT_TRUE(mirroredObj.hasField("databaseVersion")); ASSERT_EQ(mirroredObj["shardVersion"].Int(), kShardVersion); - ASSERT_EQ(mirroredObj["databaseVersion"].Int(), kDatabaseVersion); } } @@ -465,7 +423,7 @@ public: } std::vector<std::string> getAllowedKeys() const override { - return {"distinct", "key", "query", "collation", "shardVersion", "databaseVersion"}; + return {"distinct", "key", "query", "collation", "shardVersion"}; } }; @@ -475,8 +433,7 @@ TEST_F(DistinctCommandTest, MirrorableKeys) { BSON("query" << BSONObj()), BSON("readConcern" << BSONObj()), BSON("collation" << BSONObj()), - BSON("shardVersion" << BSONObj()), - BSON("databaseVersion" << BSONObj())}; + BSON("shardVersion" << BSONObj())}; auto mirroredObj = createCommandAndGetMirrored(kCollection, distinctArgs); checkFieldNamesAreAllowed(mirroredObj); @@ -489,15 +446,13 @@ TEST_F(DistinctCommandTest, ValidateMirroredQuery) { const auto readConcern = BSON("level" << "majority"); const auto collation = BSON("strength" << 1); - const auto shardVersion = BSON("v" << 123); - const auto databaseVersion = BSON("v" << 456); + const auto shardVersion = BSONObj(); auto distinctArgs = {BSON("key" << key), BSON("query" << query), BSON("readConcern" << readConcern), BSON("collation" << collation), - BSON("shardVersion" << shardVersion), - BSON("databaseVersion" << databaseVersion)}; + BSON("shardVersion" << shardVersion)}; auto mirroredObj = createCommandAndGetMirrored(kCollection, distinctArgs); @@ -507,27 +462,23 @@ TEST_F(DistinctCommandTest, ValidateMirroredQuery) { ASSERT(compareBSONObjs(mirroredObj["query"].Obj(), query)); ASSERT(compareBSONObjs(mirroredObj["collation"].Obj(), collation)); ASSERT(compareBSONObjs(mirroredObj["shardVersion"].Obj(), shardVersion)); - ASSERT(compareBSONObjs(mirroredObj["databaseVersion"].Obj(), databaseVersion)); } -TEST_F(DistinctCommandTest, ValidateShardVersionAndDatabaseVersion) { +TEST_F(DistinctCommandTest, ValidateShardVersion) { + const auto kCollection = "test"; + std::vector<BSONObj> distinctArgs = {BSON("distinct" << BSONObj())}; { auto mirroredObj = createCommandAndGetMirrored(kCollection, distinctArgs); ASSERT_FALSE(mirroredObj.hasField("shardVersion")); - ASSERT_FALSE(mirroredObj.hasField("databaseVersion")); } const auto kShardVersion = 123; - const auto kDatabaseVersion = 456; distinctArgs.push_back(BSON("shardVersion" << kShardVersion)); - distinctArgs.push_back(BSON("databaseVersion" << kDatabaseVersion)); { auto mirroredObj = createCommandAndGetMirrored(kCollection, distinctArgs); ASSERT_TRUE(mirroredObj.hasField("shardVersion")); - ASSERT_TRUE(mirroredObj.hasField("databaseVersion")); ASSERT_EQ(mirroredObj["shardVersion"].Int(), kShardVersion); - ASSERT_EQ(mirroredObj["databaseVersion"].Int(), kDatabaseVersion); } } @@ -538,14 +489,7 @@ public: } std::vector<std::string> getAllowedKeys() const override { - return {"count", - "query", - "skip", - "limit", - "hint", - "collation", - "shardVersion", - "databaseVersion"}; + return {"count", "query", "skip", "limit", "hint", "collation", "shardVersion"}; } }; @@ -556,8 +500,7 @@ TEST_F(CountCommandTest, MirrorableKeys) { BSON("hint" << BSONObj()), BSON("readConcern" << BSONObj()), BSON("collation" << BSONObj()), - BSON("shardVersion" << BSONObj()), - BSON("databaseVersion" << BSONObj())}; + BSON("shardVersion" << BSONObj())}; auto mirroredObj = createCommandAndGetMirrored(kCollection, countArgs); checkFieldNamesAreAllowed(mirroredObj); @@ -568,14 +511,12 @@ TEST_F(CountCommandTest, ValidateMirroredQuery) { << "Delivered"); const auto hint = BSON("status" << 1); constexpr auto limit = 1000; - const auto shardVersion = BSON("v" << 123); - const auto databaseVersion = BSON("v" << 456); + const auto shardVersion = BSONObj(); auto countArgs = {BSON("query" << query), BSON("hint" << hint), BSON("limit" << limit), - BSON("shardVersion" << shardVersion), - BSON("databaseVersion" << databaseVersion)}; + BSON("shardVersion" << shardVersion)}; auto mirroredObj = createCommandAndGetMirrored(kCollection, countArgs); ASSERT_EQ(mirroredObj["count"].String(), kCollection); @@ -585,27 +526,21 @@ TEST_F(CountCommandTest, ValidateMirroredQuery) { ASSERT(compareBSONObjs(mirroredObj["hint"].Obj(), hint)); ASSERT_EQ(mirroredObj["limit"].Int(), limit); ASSERT(compareBSONObjs(mirroredObj["shardVersion"].Obj(), shardVersion)); - ASSERT(compareBSONObjs(mirroredObj["databaseVersion"].Obj(), databaseVersion)); } -TEST_F(CountCommandTest, ValidateShardVersionAndDatabaseVersion) { +TEST_F(CountCommandTest, ValidateShardVersion) { std::vector<BSONObj> countArgs = {BSON("count" << BSONObj())}; { auto mirroredObj = createCommandAndGetMirrored(kCollection, countArgs); ASSERT_FALSE(mirroredObj.hasField("shardVersion")); - ASSERT_FALSE(mirroredObj.hasField("databaseVersion")); } const auto kShardVersion = 123; - const auto kDatabaseVersion = 456; countArgs.push_back(BSON("shardVersion" << kShardVersion)); - countArgs.push_back(BSON("databaseVersion" << kDatabaseVersion)); { auto mirroredObj = createCommandAndGetMirrored(kCollection, countArgs); ASSERT_TRUE(mirroredObj.hasField("shardVersion")); - ASSERT_TRUE(mirroredObj.hasField("databaseVersion")); ASSERT_EQ(mirroredObj["shardVersion"].Int(), kShardVersion); - ASSERT_EQ(mirroredObj["databaseVersion"].Int(), kDatabaseVersion); } } |
