summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/aggregation_request_test.cpp
diff options
context:
space:
mode:
authorAlex Taskov <alex.taskov@mongodb.com>2020-08-28 09:12:15 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-08-28 14:10:24 +0000
commit7d915a65b286e535397a5d79bf2109512003bda9 (patch)
tree79a98d26851b43e9f3075b669cd0f9ba1b4cad5a /src/mongo/db/pipeline/aggregation_request_test.cpp
parent0c52e9773275d0c4a11c77e56d5ea0f914a903be (diff)
downloadmongo-7d915a65b286e535397a5d79bf2109512003bda9.tar.gz
SERVER-49895 Expose getLatestOplogTimestamp() in aggregation cursor command responses on oplog
Diffstat (limited to 'src/mongo/db/pipeline/aggregation_request_test.cpp')
-rw-r--r--src/mongo/db/pipeline/aggregation_request_test.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/mongo/db/pipeline/aggregation_request_test.cpp b/src/mongo/db/pipeline/aggregation_request_test.cpp
index 04a93a21ea1..7a0d2a7653b 100644
--- a/src/mongo/db/pipeline/aggregation_request_test.cpp
+++ b/src/mongo/db/pipeline/aggregation_request_test.cpp
@@ -55,10 +55,12 @@ const Document kDefaultCursorOptionDocument{
//
TEST(AggregationRequestTest, ShouldParseAllKnownOptions) {
- NamespaceString nss("a.collection");
+ // Using oplog namespace so that validation of $_requestResumeToken succeeds.
+ NamespaceString nss("local.oplog.rs");
BSONObj inputBson = fromjson(
"{pipeline: [{$match: {a: 'abc'}}], explain: false, allowDiskUse: true, fromMongos: true, "
- "needsMerge: true, bypassDocumentValidation: true, collation: {locale: 'en_US'}, cursor: "
+ "needsMerge: true, bypassDocumentValidation: true, $_requestResumeToken: true, collation: "
+ "{locale: 'en_US'}, cursor: "
"{batchSize: 10}, hint: {a: 1}, maxTimeMS: 100, readConcern: {level: 'linearizable'}, "
"$queryOptions: {$readPreference: 'nearest'}, exchange: {policy: "
"'roundrobin', consumers:NumberInt(2)}, isMapReduceCommand: true}");
@@ -73,6 +75,7 @@ TEST(AggregationRequestTest, ShouldParseAllKnownOptions) {
ASSERT_TRUE(request.isFromMongos());
ASSERT_TRUE(request.needsMerge());
ASSERT_TRUE(request.shouldBypassDocumentValidation());
+ ASSERT_TRUE(request.getRequestResumeToken());
ASSERT_EQ(request.getBatchSize(), 10);
ASSERT_BSONOBJ_EQ(request.getHint(), BSON("a" << 1));
ASSERT_BSONOBJ_EQ(request.getCollation(),
@@ -90,6 +93,13 @@ TEST(AggregationRequestTest, ShouldParseAllKnownOptions) {
ASSERT_EQ(*request.getCollectionUUID(), uuid);
}
+TEST(AggregationRequestTest, ShouldParseExplicitRequestResumeTokenFalseForNonOplog) {
+ NamespaceString nss("a.collection");
+ const BSONObj inputBson = fromjson("{pipeline: [], $_requestResumeToken: false, cursor: {}}");
+ auto request = unittest::assertGet(AggregationRequest::parseFromBSON(nss, inputBson));
+ ASSERT_FALSE(request.getRequestResumeToken());
+}
+
TEST(AggregationRequestTest, ShouldParseExplicitExplainTrue) {
NamespaceString nss("a.collection");
const BSONObj inputBson = fromjson("{pipeline: [], explain: true, cursor: {}}");
@@ -161,6 +171,7 @@ TEST(AggregationRequestTest, ShouldNotSerializeOptionalValuesIfEquivalentToDefau
request.setFromMongos(false);
request.setNeedsMerge(false);
request.setBypassDocumentValidation(false);
+ request.setRequestResumeToken(false);
request.setCollation(BSONObj());
request.setHint(BSONObj());
request.setMaxTimeMS(0u);
@@ -182,6 +193,7 @@ TEST(AggregationRequestTest, ShouldSerializeOptionalValuesIfSet) {
request.setFromMongos(true);
request.setNeedsMerge(true);
request.setBypassDocumentValidation(true);
+ request.setRequestResumeToken(true);
request.setBatchSize(10);
request.setMaxTimeMS(10u);
const auto hintObj = BSON("a" << 1);
@@ -209,6 +221,7 @@ TEST(AggregationRequestTest, ShouldSerializeOptionalValuesIfSet) {
{AggregationRequest::kFromMongosName, true},
{AggregationRequest::kNeedsMergeName, true},
{bypassDocumentValidationCommandOption(), true},
+ {AggregationRequest::kRequestResumeToken, true},
{AggregationRequest::kCollationName, collationObj},
{AggregationRequest::kCursorName,
Value(Document({{AggregationRequest::kBatchSizeName, 10}}))},
@@ -439,6 +452,12 @@ TEST(AggregationRequestTest, ShouldRejectExplainExecStatsVerbosityWithWriteConce
.getStatus());
}
+TEST(AggregationRequestTest, ShouldRejectRequestResumeTokenIfNonOplogNss) {
+ NamespaceString nss("a.collection");
+ const BSONObj inputBson = fromjson("{pipeline: [], $_requestResumeToken: true}");
+ ASSERT_NOT_OK(AggregationRequest::parseFromBSON(nss, inputBson).getStatus());
+}
+
TEST(AggregationRequestTest, CannotParseNeedsMerge34) {
NamespaceString nss("a.collection");
const BSONObj inputBson =