summaryrefslogtreecommitdiff
path: root/src/mongo/rpc/op_msg_integration_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/rpc/op_msg_integration_test.cpp')
-rw-r--r--src/mongo/rpc/op_msg_integration_test.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mongo/rpc/op_msg_integration_test.cpp b/src/mongo/rpc/op_msg_integration_test.cpp
index ab69b57b206..e0bdb01bef6 100644
--- a/src/mongo/rpc/op_msg_integration_test.cpp
+++ b/src/mongo/rpc/op_msg_integration_test.cpp
@@ -165,4 +165,36 @@ TEST(OpMsg, CloseConnectionOnFireAndForgetNotMasterError) {
ASSERT(foundSecondary);
}
+TEST(OpMsg, DocumentSequenceReturnsWork) {
+ std::string errMsg;
+ auto conn = std::unique_ptr<DBClientBase>(
+ unittest::getFixtureConnectionString().connect("integration_test", errMsg));
+ uassert(ErrorCodes::SocketException, errMsg, conn);
+
+ auto opMsgRequest = OpMsgRequest::fromDBAndBody("admin", BSON("echo" << 1));
+ opMsgRequest.sequences.push_back({"example", {BSON("a" << 1), BSON("b" << 2)}});
+ auto request = opMsgRequest.serialize();
+
+ Message reply;
+ ASSERT(conn->call(request, reply));
+
+ auto opMsgReply = OpMsg::parse(reply);
+ ASSERT_EQ(opMsgReply.sequences.size(), 1u);
+
+ auto sequence = opMsgReply.getSequence("example");
+ ASSERT(sequence);
+ ASSERT_EQ(sequence->objs.size(), 2u);
+
+ auto checkSequence = [](auto& bson, auto key, auto val) {
+ ASSERT(bson.hasField(key));
+ ASSERT_EQ(bson[key].Int(), val);
+ };
+ checkSequence(sequence->objs[0], "a", 1);
+ checkSequence(sequence->objs[1], "b", 2);
+
+ ASSERT_BSONOBJ_EQ(opMsgReply.body.getObjectField("echo"),
+ BSON("echo" << 1 << "$db"
+ << "admin"));
+}
+
} // namespace mongo