summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/record_store_test_updatewithdamages.cpp
diff options
context:
space:
mode:
authorMax Hirschhorn <max.hirschhorn@mongodb.com>2015-08-24 23:51:27 -0400
committerMax Hirschhorn <max.hirschhorn@mongodb.com>2015-08-24 23:51:27 -0400
commit564f8089c0d4541215d1aa31dae331115e68b95f (patch)
tree0db9fe8956b06b5b968c197907a7e45474d32f9f /src/mongo/db/storage/record_store_test_updatewithdamages.cpp
parentefa95c72b047a3a92c13bba9562733b5d5e0f944 (diff)
downloadmongo-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.cpp28
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();
}
}