diff options
author | Bernard Gorman <bernard.gorman@gmail.com> | 2018-11-24 16:56:20 +0000 |
---|---|---|
committer | Bernard Gorman <bernard.gorman@gmail.com> | 2018-12-22 04:27:20 +0000 |
commit | fc5bc0947ceedee3b61b2d922cabd3e5df7ec07c (patch) | |
tree | 75749d0e4ff2d9db2001252018cc91e78801bc44 /src/mongo/db/query/cursor_response_test.cpp | |
parent | bdac7ced24f9ad8f9afac9c57e7184b1f2bf61b2 (diff) | |
download | mongo-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.cpp | 30 |
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; |