summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/cursor_response_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/query/cursor_response_test.cpp')
-rw-r--r--src/mongo/db/query/cursor_response_test.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/mongo/db/query/cursor_response_test.cpp b/src/mongo/db/query/cursor_response_test.cpp
index eba5d6748fe..cfe3c8ac3cf 100644
--- a/src/mongo/db/query/cursor_response_test.cpp
+++ b/src/mongo/db/query/cursor_response_test.cpp
@@ -30,6 +30,8 @@
#include "mongo/db/query/cursor_response.h"
+#include "mongo/rpc/op_msg_rpc_impls.h"
+
#include "mongo/unittest/unittest.h"
namespace mongo {
@@ -330,6 +332,32 @@ TEST(CursorResponseTest, serializeLatestOplogEntry) {
ASSERT_EQ(*reparsedResponse.getLastOplogTimestamp(), Timestamp(1, 2));
}
+TEST(CursorResponseTest, cursorReturnDocumentSequences) {
+ CursorResponseBuilder::Options options;
+ options.isInitialResponse = true;
+ options.useDocumentSequences = true;
+ rpc::OpMsgReplyBuilder builder;
+ BSONObj expectedDoc = BSON("_id" << 1 << "test"
+ << "123");
+ BSONObj expectedBody = BSON("cursor" << BSON("id" << CursorId(123) << "ns"
+ << "db.coll"));
+
+ CursorResponseBuilder crb(&builder, options);
+ crb.append(expectedDoc);
+ ASSERT_EQ(crb.numDocs(), 1U);
+ crb.done(CursorId(123), "db.coll");
+
+ auto msg = builder.done();
+ auto opMsg = OpMsg::parse(msg);
+ const auto& docSeqs = opMsg.sequences;
+ ASSERT_EQ(docSeqs.size(), 1U);
+ const auto& documentSequence = docSeqs[0];
+ ASSERT_EQ(documentSequence.name, "cursor.firstBatch");
+ ASSERT_EQ(documentSequence.objs.size(), 1U);
+ ASSERT_BSONOBJ_EQ(documentSequence.objs[0], expectedDoc);
+ ASSERT_BSONOBJ_EQ(opMsg.body, expectedBody);
+}
+
} // namespace
} // namespace mongo