summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/cursor_response_test.cpp
diff options
context:
space:
mode:
authorBernard Gorman <bernard.gorman@gmail.com>2018-11-24 16:56:20 +0000
committerBernard Gorman <bernard.gorman@gmail.com>2018-12-22 04:27:20 +0000
commitfc5bc0947ceedee3b61b2d922cabd3e5df7ec07c (patch)
tree75749d0e4ff2d9db2001252018cc91e78801bc44 /src/mongo/db/query/cursor_response_test.cpp
parentbdac7ced24f9ad8f9afac9c57e7184b1f2bf61b2 (diff)
downloadmongo-fc5bc0947ceedee3b61b2d922cabd3e5df7ec07c.tar.gz
SERVER-38408 Return postBatchResumeToken with each mongoD change stream batch
Diffstat (limited to 'src/mongo/db/query/cursor_response_test.cpp')
-rw-r--r--src/mongo/db/query/cursor_response_test.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/mongo/db/query/cursor_response_test.cpp b/src/mongo/db/query/cursor_response_test.cpp
index 2ae05e88a7d..e1adef1fbd7 100644
--- a/src/mongo/db/query/cursor_response_test.cpp
+++ b/src/mongo/db/query/cursor_response_test.cpp
@@ -34,6 +34,7 @@
#include "mongo/rpc/op_msg_rpc_impls.h"
+#include "mongo/db/pipeline/resume_token.h"
#include "mongo/unittest/unittest.h"
namespace mongo {
@@ -334,6 +335,35 @@ TEST(CursorResponseTest, serializeLatestOplogEntry) {
ASSERT_EQ(*reparsedResponse.getLastOplogTimestamp(), Timestamp(1, 2));
}
+TEST(CursorResponseTest, serializePostBatchResumeToken) {
+ std::vector<BSONObj> batch = {BSON("_id" << 1), BSON("_id" << 2)};
+ auto postBatchResumeToken =
+ ResumeToken::makeHighWaterMarkResumeToken(Timestamp(1, 2)).toDocument().toBson();
+ CursorResponse response(NamespaceString("db.coll"),
+ CursorId(123),
+ batch,
+ boost::none,
+ boost::none,
+ postBatchResumeToken);
+ auto serialized = response.toBSON(CursorResponse::ResponseType::SubsequentResponse);
+ ASSERT_BSONOBJ_EQ(serialized,
+ BSON("cursor" << BSON("id" << CursorId(123) << "ns"
+ << "db.coll"
+ << "nextBatch"
+ << BSON_ARRAY(BSON("_id" << 1) << BSON("_id" << 2))
+ << "postBatchResumeToken"
+ << postBatchResumeToken)
+ << "ok"
+ << 1));
+ auto reparsed = CursorResponse::parseFromBSON(serialized);
+ ASSERT_OK(reparsed.getStatus());
+ CursorResponse reparsedResponse = std::move(reparsed.getValue());
+ ASSERT_EQ(reparsedResponse.getCursorId(), CursorId(123));
+ ASSERT_EQ(reparsedResponse.getNSS().ns(), "db.coll");
+ ASSERT_EQ(reparsedResponse.getBatch().size(), 2U);
+ ASSERT_BSONOBJ_EQ(*reparsedResponse.getPostBatchResumeToken(), postBatchResumeToken);
+}
+
TEST(CursorResponseTest, cursorReturnDocumentSequences) {
CursorResponseBuilder::Options options;
options.isInitialResponse = true;