diff options
author | Max Hirschhorn <max.hirschhorn@mongodb.com> | 2015-08-24 23:51:27 -0400 |
---|---|---|
committer | Max Hirschhorn <max.hirschhorn@mongodb.com> | 2015-08-24 23:51:27 -0400 |
commit | 564f8089c0d4541215d1aa31dae331115e68b95f (patch) | |
tree | 0db9fe8956b06b5b968c197907a7e45474d32f9f /src/mongo/db/storage/record_store_test_updatewithdamages.cpp | |
parent | efa95c72b047a3a92c13bba9562733b5d5e0f944 (diff) | |
download | mongo-564f8089c0d4541215d1aa31dae331115e68b95f.tar.gz |
SERVER-16444 Change updateWithDamages() to return the updated data.
Enable the UpdateStage to perform an in-place update regardless of
whether the data underlying the WorkingSetMember is an unowned BSONObj
or an owned BSONObj.
Change updateWithDamagesSupported() to return true for the
inMemoryExperiment storage engine.
Diffstat (limited to 'src/mongo/db/storage/record_store_test_updatewithdamages.cpp')
-rw-r--r-- | src/mongo/db/storage/record_store_test_updatewithdamages.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/mongo/db/storage/record_store_test_updatewithdamages.cpp b/src/mongo/db/storage/record_store_test_updatewithdamages.cpp index 701d5fd58f0..efbac5038d7 100644 --- a/src/mongo/db/storage/record_store_test_updatewithdamages.cpp +++ b/src/mongo/db/storage/record_store_test_updatewithdamages.cpp @@ -73,6 +73,7 @@ TEST(RecordStoreTestHarness, UpdateWithDamages) { ASSERT_EQUALS(1, rs->numRecords(opCtx.get())); } + string modifiedData = "11101000"; { unique_ptr<OperationContext> opCtx(harnessHelper->newOperationContext()); { @@ -88,17 +89,18 @@ TEST(RecordStoreTestHarness, UpdateWithDamages) { dv[2].size = 3; WriteUnitOfWork uow(opCtx.get()); - ASSERT_OK(rs->updateWithDamages(opCtx.get(), loc, rec, data.c_str(), dv)); + auto newRecStatus = rs->updateWithDamages(opCtx.get(), loc, rec, data.c_str(), dv); + ASSERT_OK(newRecStatus.getStatus()); + ASSERT_EQUALS(modifiedData, newRecStatus.getValue().data()); uow.commit(); } } - data = "11101000"; { unique_ptr<OperationContext> opCtx(harnessHelper->newOperationContext()); { RecordData record = rs->dataFor(opCtx.get(), loc); - ASSERT_EQUALS(data, record.data()); + ASSERT_EQUALS(modifiedData, record.data()); } } } @@ -136,6 +138,7 @@ TEST(RecordStoreTestHarness, UpdateWithOverlappingDamageEvents) { ASSERT_EQUALS(1, rs->numRecords(opCtx.get())); } + string modifiedData = "10100010"; { unique_ptr<OperationContext> opCtx(harnessHelper->newOperationContext()); { @@ -148,17 +151,18 @@ TEST(RecordStoreTestHarness, UpdateWithOverlappingDamageEvents) { dv[1].size = 5; WriteUnitOfWork uow(opCtx.get()); - ASSERT_OK(rs->updateWithDamages(opCtx.get(), loc, rec, data.c_str(), dv)); + auto newRecStatus = rs->updateWithDamages(opCtx.get(), loc, rec, data.c_str(), dv); + ASSERT_OK(newRecStatus.getStatus()); + ASSERT_EQUALS(modifiedData, newRecStatus.getValue().data()); uow.commit(); } } - data = "10100010"; { unique_ptr<OperationContext> opCtx(harnessHelper->newOperationContext()); { RecordData record = rs->dataFor(opCtx.get(), loc); - ASSERT_EQUALS(data, record.data()); + ASSERT_EQUALS(modifiedData, record.data()); } } } @@ -197,6 +201,7 @@ TEST(RecordStoreTestHarness, UpdateWithOverlappingDamageEventsReversed) { ASSERT_EQUALS(1, rs->numRecords(opCtx.get())); } + string modifiedData = "10111010"; { unique_ptr<OperationContext> opCtx(harnessHelper->newOperationContext()); { @@ -209,17 +214,18 @@ TEST(RecordStoreTestHarness, UpdateWithOverlappingDamageEventsReversed) { dv[1].size = 5; WriteUnitOfWork uow(opCtx.get()); - ASSERT_OK(rs->updateWithDamages(opCtx.get(), loc, rec, data.c_str(), dv)); + auto newRecStatus = rs->updateWithDamages(opCtx.get(), loc, rec, data.c_str(), dv); + ASSERT_OK(newRecStatus.getStatus()); + ASSERT_EQUALS(modifiedData, newRecStatus.getValue().data()); uow.commit(); } } - data = "10111010"; { unique_ptr<OperationContext> opCtx(harnessHelper->newOperationContext()); { RecordData record = rs->dataFor(opCtx.get(), loc); - ASSERT_EQUALS(data, record.data()); + ASSERT_EQUALS(modifiedData, record.data()); } } } @@ -262,7 +268,9 @@ TEST(RecordStoreTestHarness, UpdateWithNoDamages) { mutablebson::DamageVector dv; WriteUnitOfWork uow(opCtx.get()); - ASSERT_OK(rs->updateWithDamages(opCtx.get(), loc, rec, "", dv)); + auto newRecStatus = rs->updateWithDamages(opCtx.get(), loc, rec, "", dv); + ASSERT_OK(newRecStatus.getStatus()); + ASSERT_EQUALS(data, newRecStatus.getValue().data()); uow.commit(); } } |