summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/cursor_response_test.cpp
diff options
context:
space:
mode:
authorTed Tuckman <ted.tuckman@mongodb.com>2021-07-23 11:04:57 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-07-23 11:44:52 +0000
commit0f554217d6476d804f9ed1051722447fec017fb4 (patch)
treefab076e3e2794370067dbc74f610deaa17236a30 /src/mongo/db/query/cursor_response_test.cpp
parent186c59cdf182e3d26c3443e6e2a0a17197aa8602 (diff)
downloadmongo-0f554217d6476d804f9ed1051722447fec017fb4.tar.gz
SERVER-58581 Add SEARCH_META variable
Diffstat (limited to 'src/mongo/db/query/cursor_response_test.cpp')
-rw-r--r--src/mongo/db/query/cursor_response_test.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/mongo/db/query/cursor_response_test.cpp b/src/mongo/db/query/cursor_response_test.cpp
index 2a3424f2029..57912f4ca9b 100644
--- a/src/mongo/db/query/cursor_response_test.cpp
+++ b/src/mongo/db/query/cursor_response_test.cpp
@@ -211,6 +211,53 @@ TEST(CursorResponseTest, parseFromBSONPartialResultsReturnedFieldWrongType) {
ASSERT_NOT_OK(result.getStatus());
}
+TEST(CursorResponseTest, parseFromBSONVarsFieldCorrect) {
+ BSONObj varsContents = BSON("randomVar" << 7);
+ StatusWith<CursorResponse> result = CursorResponse::parseFromBSON(BSON(
+ "cursor" << BSON("id" << CursorId(123) << "ns"
+ << "db.coll"
+ << "firstBatch" << BSON_ARRAY(BSON("_id" << 1) << BSON("_id" << 2)))
+ << "vars" << varsContents << "ok" << 1));
+ ASSERT_OK(result.getStatus());
+
+ CursorResponse response = std::move(result.getValue());
+ ASSERT_EQ(response.getCursorId(), CursorId(123));
+ ASSERT_EQ(response.getNSS().ns(), "db.coll");
+ ASSERT_EQ(response.getBatch().size(), 2U);
+ ASSERT_BSONOBJ_EQ(response.getBatch()[0], BSON("_id" << 1));
+ ASSERT_BSONOBJ_EQ(response.getBatch()[1], BSON("_id" << 2));
+ ASSERT_TRUE(response.getVarsField());
+ ASSERT_BSONOBJ_EQ(response.getVarsField().get(), varsContents);
+}
+
+TEST(CursorResponseTest, parseFromBSONVarsFieldWrongType) {
+ StatusWith<CursorResponse> result = CursorResponse::parseFromBSON(BSON(
+ "cursor" << BSON("id" << CursorId(123) << "ns"
+ << "db.coll"
+ << "firstBatch" << BSON_ARRAY(BSON("_id" << 1) << BSON("_id" << 2)))
+ << "vars" << 2 << "ok" << 1));
+ ASSERT_NOT_OK(result.getStatus());
+}
+
+TEST(CursorResponseTest, parseFromBSONMultipleVars) {
+ BSONObj varsContents = BSON("randomVar" << 7 << "otherVar" << BSON("nested" << 2));
+ StatusWith<CursorResponse> result = CursorResponse::parseFromBSON(BSON(
+ "cursor" << BSON("id" << CursorId(123) << "ns"
+ << "db.coll"
+ << "firstBatch" << BSON_ARRAY(BSON("_id" << 1) << BSON("_id" << 2)))
+ << "vars" << varsContents << "ok" << 1));
+ ASSERT_OK(result.getStatus());
+
+ CursorResponse response = std::move(result.getValue());
+ ASSERT_EQ(response.getCursorId(), CursorId(123));
+ ASSERT_EQ(response.getNSS().ns(), "db.coll");
+ ASSERT_EQ(response.getBatch().size(), 2U);
+ ASSERT_BSONOBJ_EQ(response.getBatch()[0], BSON("_id" << 1));
+ ASSERT_BSONOBJ_EQ(response.getBatch()[1], BSON("_id" << 2));
+ ASSERT_TRUE(response.getVarsField());
+ ASSERT_BSONOBJ_EQ(response.getVarsField().get(), varsContents);
+}
+
TEST(CursorResponseTest, roundTripThroughCursorResponseBuilderWithPartialResultsReturned) {
CursorResponseBuilder::Options options;
options.isInitialResponse = true;
@@ -301,6 +348,7 @@ TEST(CursorResponseTest, toBSONPartialResultsReturned) {
boost::none,
boost::none,
boost::none,
+ boost::none,
true);
BSONObj responseObj = response.toBSON(CursorResponse::ResponseType::InitialResponse);
BSONObj expectedResponse = BSON(