diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2017-11-07 10:25:49 -0500 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2017-11-09 02:19:40 -0500 |
commit | d0ecca650c1f506db0cb6a4e58f0d0f112304b28 (patch) | |
tree | 5499cefce162f4475d2af2cf0b5edfbeb35e8573 /src/mongo/db/ops/write_ops_retryability_test.cpp | |
parent | 60110730980d1fbd24b07a4679c8d4ae7df4fc2e (diff) | |
download | mongo-d0ecca650c1f506db0cb6a4e58f0d0f112304b28.tar.gz |
SERVER-31243 Make no-op retry of findAndModify upsert of new document return null with new=false
Also unblacklists find_and_modify_server6582.js from the retryable writes passthrough suite
Diffstat (limited to 'src/mongo/db/ops/write_ops_retryability_test.cpp')
-rw-r--r-- | src/mongo/db/ops/write_ops_retryability_test.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/mongo/db/ops/write_ops_retryability_test.cpp b/src/mongo/db/ops/write_ops_retryability_test.cpp index 8029cb71278..b7c403cf0f4 100644 --- a/src/mongo/db/ops/write_ops_retryability_test.cpp +++ b/src/mongo/db/ops/write_ops_retryability_test.cpp @@ -175,9 +175,10 @@ protected: const NamespaceString kNs("test.user"); -TEST_F(FindAndModifyRetryability, BasicUpsert) { +TEST_F(FindAndModifyRetryability, BasicUpsertReturnNew) { auto request = FindAndModifyRequest::makeUpdate(kNs, BSONObj(), BSONObj()); request.setUpsert(true); + request.setShouldReturnNew(true); auto insertOplog = makeOplogEntry(repl::OpTime(), // optime repl::OpTypeEnum::kInsert, // op type @@ -199,9 +200,32 @@ TEST_F(FindAndModifyRetryability, BasicUpsert) { result); } +TEST_F(FindAndModifyRetryability, BasicUpsertReturnOld) { + auto request = FindAndModifyRequest::makeUpdate(kNs, BSONObj(), BSONObj()); + request.setUpsert(true); + request.setShouldReturnNew(false); + + auto insertOplog = makeOplogEntry(repl::OpTime(), // optime + repl::OpTypeEnum::kInsert, // op type + kNs, // namespace + BSON("_id" + << "ID value" + << "x" + << 1)); // o + + auto result = constructFindAndModifyRetryResult(opCtx(), request, insertOplog); + ASSERT_BSONOBJ_EQ(BSON("lastErrorObject" + << BSON("n" << 1 << "updatedExisting" << false << "upserted" + << "ID value") + << "value" + << BSONNULL), + result); +} + TEST_F(FindAndModifyRetryability, NestedUpsert) { auto request = FindAndModifyRequest::makeUpdate(kNs, BSONObj(), BSONObj()); request.setUpsert(true); + request.setShouldReturnNew(true); auto innerOplog = makeOplogEntry(repl::OpTime(), // optime repl::OpTypeEnum::kInsert, // op type |