diff options
author | Ted Tuckman <ted.tuckman@mongodb.com> | 2021-07-23 11:04:57 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-07-23 11:44:52 +0000 |
commit | 0f554217d6476d804f9ed1051722447fec017fb4 (patch) | |
tree | fab076e3e2794370067dbc74f610deaa17236a30 /src/mongo/db/query/cursor_response_test.cpp | |
parent | 186c59cdf182e3d26c3443e6e2a0a17197aa8602 (diff) | |
download | mongo-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.cpp | 48 |
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( |