diff options
author | Dianna Hohensee <dianna.hohensee@10gen.com> | 2018-01-10 17:37:50 -0500 |
---|---|---|
committer | Dianna Hohensee <dianna.hohensee@10gen.com> | 2018-01-12 08:58:34 -0500 |
commit | 6e57c0d022c15828ab8c16a1229b355e30e734b6 (patch) | |
tree | e4e6cd7ba83eaf272b77f4c867b7fda397bccb84 /src/mongo/rpc | |
parent | 11225541cbbaed58e27ff5254c145dd834a86190 (diff) | |
download | mongo-6e57c0d022c15828ab8c16a1229b355e30e734b6.tar.gz |
SERVER-32519 clean up WireVersion enum uses in the code to use LATEST_WIRE_VERSION
Diffstat (limited to 'src/mongo/rpc')
-rw-r--r-- | src/mongo/rpc/protocol_test.cpp | 166 |
1 files changed, 129 insertions, 37 deletions
diff --git a/src/mongo/rpc/protocol_test.cpp b/src/mongo/rpc/protocol_test.cpp index 2c760cdc8e8..f3f8ba51f97 100644 --- a/src/mongo/rpc/protocol_test.cpp +++ b/src/mongo/rpc/protocol_test.cpp @@ -127,56 +127,148 @@ TEST(Protocol, parseProtocolSetFromIsMasterReply) { } while (0); TEST(Protocol, validateWireVersion) { - // Base Test + /* + * Test communication with a MongoD latest binary server with downgraded FCV. + */ + + // MongoD 'latest' client -> MongoD 'latest' server + VALIDATE_WIRE_VERSION(ASSERT_OK, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION); + + // MongoD 'latest' client -> MongoD downgraded 'last-stable' server VALIDATE_WIRE_VERSION(ASSERT_OK, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN); + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 2, + WireVersion::LATEST_WIRE_VERSION - 1); - // Allowed during upgrade - // MongoD 3.4 client -> MongoD 3.4 server + // MongoD 'latest' client -> MongoD upgraded 'last-stable' server VALIDATE_WIRE_VERSION(ASSERT_OK, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN); + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1); - // MongoD 3.4 client -> MongoD 3.2 server + // MongoD downgraded 'last-stable' client -> MongoD 'latest' server VALIDATE_WIRE_VERSION(ASSERT_OK, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::FIND_COMMAND); + WireVersion::LATEST_WIRE_VERSION - 2, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION); - // MongoD 3.2 client -> MongoD 3.4 server + // MongoD upgraded 'last-stable' client -> MongoD 'latest' server VALIDATE_WIRE_VERSION(ASSERT_OK, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN); + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION); - // MongoS 3.4 client -> MongoD 3.4 server + // MongoS 'latest' client -> MongoD 'latest' server VALIDATE_WIRE_VERSION(ASSERT_OK, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN); + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION); - // MongoS 3.2 client -> MongoD 3.4 server + // MongoS 'last-stable' client -> MongoD 'latest' server VALIDATE_WIRE_VERSION(ASSERT_OK, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::FIND_COMMAND, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN); + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION); + /* + * Test communication with a MongoD latest binary server with upgraded FCV. + */ + + // MongoD 'latest' client -> MongoD 'latest' server + VALIDATE_WIRE_VERSION(ASSERT_OK, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION); + + // MongoD 'latest' client -> MongoD downgraded 'last-stable' server + VALIDATE_WIRE_VERSION(ASSERT_NOT_OK, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 2, + WireVersion::LATEST_WIRE_VERSION - 1); + + // MongoD 'latest' client -> MongoD upgraded 'last-stable' server + VALIDATE_WIRE_VERSION(ASSERT_NOT_OK, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1); + + // MongoD downgraded 'last-stable' client -> MongoD 'latest' server + VALIDATE_WIRE_VERSION(ASSERT_NOT_OK, + WireVersion::LATEST_WIRE_VERSION - 2, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION); + + // MongoD upgraded 'last-stable' client -> MongoD 'latest' server + VALIDATE_WIRE_VERSION(ASSERT_NOT_OK, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION); + + // MongoS 'latest' client -> MongoD 'latest' server + VALIDATE_WIRE_VERSION(ASSERT_OK, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION); + + // MongoS 'last-stable' client -> MongoD 'latest' server + VALIDATE_WIRE_VERSION(ASSERT_NOT_OK, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION); + + /* + * Test communication between MongoD latest binary servers where one has upgraded FCV and the + * other downgraded FCV. + */ + + // MongoD upgraded 'latest' client -> MongoD downgraded 'latest' server + VALIDATE_WIRE_VERSION(ASSERT_OK, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION); + + // MongoD downgraded 'latest' client -> MongoD upgraded 'latest' server + VALIDATE_WIRE_VERSION(ASSERT_OK, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION); + + /* + * Test that it is disallowed for MongoS to communicate with a lower binary server, regardless + * of FCV. + */ + + // MongoS 'latest' -> MongoD downgraded 'last-stable' server + VALIDATE_WIRE_VERSION(ASSERT_NOT_OK, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 2, + WireVersion::LATEST_WIRE_VERSION - 1); - // Disallowed - // MongoS 3.4 -> MongoDB 3.2 server + // MongoS 'latest' -> MongoD upgraded 'last-stable' server VALIDATE_WIRE_VERSION(ASSERT_NOT_OK, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN, - WireVersion::COMMANDS_ACCEPT_WRITE_CONCERN, - WireVersion::RELEASE_2_4_AND_BEFORE, - WireVersion::FIND_COMMAND); + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION, + WireVersion::LATEST_WIRE_VERSION - 1, + WireVersion::LATEST_WIRE_VERSION - 1); } } // namespace |