diff options
author | Alex Taskov <alex.taskov@mongodb.com> | 2020-08-28 09:12:15 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-08-28 14:10:24 +0000 |
commit | 7d915a65b286e535397a5d79bf2109512003bda9 (patch) | |
tree | 79a98d26851b43e9f3075b669cd0f9ba1b4cad5a /src/mongo/db/pipeline/aggregation_request_test.cpp | |
parent | 0c52e9773275d0c4a11c77e56d5ea0f914a903be (diff) | |
download | mongo-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.cpp | 23 |
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 = |