summaryrefslogtreecommitdiff
path: root/src/mongo/rpc
diff options
context:
space:
mode:
authorDianna Hohensee <dianna.hohensee@10gen.com>2018-01-10 17:37:50 -0500
committerDianna Hohensee <dianna.hohensee@10gen.com>2018-01-12 08:58:34 -0500
commit6e57c0d022c15828ab8c16a1229b355e30e734b6 (patch)
treee4e6cd7ba83eaf272b77f4c867b7fda397bccb84 /src/mongo/rpc
parent11225541cbbaed58e27ff5254c145dd834a86190 (diff)
downloadmongo-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.cpp166
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