diff options
author | Mathias Stearn <mathias@10gen.com> | 2016-10-18 16:23:24 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2016-11-03 15:16:50 -0400 |
commit | 8a2f2fc1883f5deb1b23915cd7a47686a623ba87 (patch) | |
tree | a0c6f033bfd25f89fa73a51e03c1dfb8099421f3 /src/mongo/db/storage/record_store_test_capped_visibility.cpp | |
parent | b0885dbb66f94332a3cf8ab5bf2565b70cd59384 (diff) | |
download | mongo-8a2f2fc1883f5deb1b23915cd7a47686a623ba87.tar.gz |
SERVER-26685 Tie oplog visibility to durability
Diffstat (limited to 'src/mongo/db/storage/record_store_test_capped_visibility.cpp')
-rw-r--r-- | src/mongo/db/storage/record_store_test_capped_visibility.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/mongo/db/storage/record_store_test_capped_visibility.cpp b/src/mongo/db/storage/record_store_test_capped_visibility.cpp index addf258d4f3..1498d307ecc 100644 --- a/src/mongo/db/storage/record_store_test_capped_visibility.cpp +++ b/src/mongo/db/storage/record_store_test_capped_visibility.cpp @@ -71,9 +71,9 @@ TEST(RecordStore_CappedVisibility, EmptyInitialState) { RecordId lowestHiddenId = doInsert(longLivedOp, rs); - // Collection still looks empty to iteration but not seekExact. + // Collection still looks empty to forward iteration but not reverse or seekExact. ASSERT(!rs->getCursor(longLivedOp.get(), true)->next()); - ASSERT(!rs->getCursor(longLivedOp.get(), false)->next()); + ASSERT_ID_EQ(rs->getCursor(longLivedOp.get(), false)->next(), lowestHiddenId); ASSERT_ID_EQ(rs->getCursor(longLivedOp.get())->seekExact(lowestHiddenId), lowestHiddenId); RecordId otherId; @@ -90,21 +90,22 @@ TEST(RecordStore_CappedVisibility, EmptyInitialState) { otherId = doInsert(txn, rs); ASSERT(!rs->getCursor(txn.get(), true)->next()); - ASSERT(!rs->getCursor(txn.get(), false)->next()); + ASSERT_ID_EQ(rs->getCursor(txn.get(), false)->next(), otherId); ASSERT_ID_EQ(rs->getCursor(txn.get())->seekExact(otherId), otherId); wuow.commit(); ASSERT(!rs->getCursor(txn.get(), true)->next()); - ASSERT(!rs->getCursor(txn.get(), false)->next()); + ASSERT_ID_EQ(rs->getCursor(txn.get(), false)->next(), otherId); ASSERT_ID_EQ(rs->getCursor(txn.get())->seekExact(otherId), otherId); ASSERT(!rs->getCursor(txn.get())->seekExact(lowestHiddenId)); } + // longLivedOp is still on old snapshot so it can't see otherId yet. ASSERT(!rs->getCursor(longLivedOp.get(), true)->next()); - ASSERT(!rs->getCursor(longLivedOp.get(), false)->next()); + ASSERT_ID_EQ(rs->getCursor(longLivedOp.get(), false)->next(), lowestHiddenId); ASSERT_ID_EQ(rs->getCursor(longLivedOp.get())->seekExact(lowestHiddenId), lowestHiddenId); - ASSERT(!rs->getCursor(longLivedOp.get())->seekExact(otherId)); // still on old snapshot. + ASSERT(!rs->getCursor(longLivedOp.get())->seekExact(otherId)); // This makes all documents visible and lets longLivedOp get a new snapshot. longLivedWuow.commit(); @@ -142,7 +143,7 @@ TEST(RecordStore_CappedVisibility, NonEmptyInitialState) { // Collection still looks like it only has a single doc to iteration but not seekExact. ASSERT_ID_EQ(rs->getCursor(longLivedOp.get(), true)->next(), initialId); - ASSERT_ID_EQ(rs->getCursor(longLivedOp.get(), false)->next(), initialId); + ASSERT_ID_EQ(rs->getCursor(longLivedOp.get(), false)->next(), lowestHiddenId); ASSERT_ID_EQ(rs->getCursor(longLivedOp.get())->seekExact(initialId), initialId); ASSERT_ID_EQ(rs->getCursor(longLivedOp.get())->seekExact(lowestHiddenId), lowestHiddenId); @@ -161,21 +162,22 @@ TEST(RecordStore_CappedVisibility, NonEmptyInitialState) { otherId = doInsert(txn, rs); ASSERT_ID_EQ(rs->getCursor(txn.get(), true)->next(), initialId); - ASSERT_ID_EQ(rs->getCursor(txn.get(), false)->next(), initialId); + ASSERT_ID_EQ(rs->getCursor(txn.get(), false)->next(), otherId); ASSERT_ID_EQ(rs->getCursor(txn.get())->seekExact(otherId), otherId); wuow.commit(); ASSERT_ID_EQ(rs->getCursor(txn.get(), true)->next(), initialId); - ASSERT_ID_EQ(rs->getCursor(txn.get(), false)->next(), initialId); + ASSERT_ID_EQ(rs->getCursor(txn.get(), false)->next(), otherId); ASSERT_ID_EQ(rs->getCursor(txn.get())->seekExact(otherId), otherId); ASSERT(!rs->getCursor(txn.get())->seekExact(lowestHiddenId)); } + // longLivedOp is still on old snapshot so it can't see otherId yet. ASSERT_ID_EQ(rs->getCursor(longLivedOp.get(), true)->next(), initialId); - ASSERT_ID_EQ(rs->getCursor(longLivedOp.get(), false)->next(), initialId); + ASSERT_ID_EQ(rs->getCursor(longLivedOp.get(), false)->next(), lowestHiddenId); ASSERT_ID_EQ(rs->getCursor(longLivedOp.get())->seekExact(lowestHiddenId), lowestHiddenId); - ASSERT(!rs->getCursor(longLivedOp.get())->seekExact(otherId)); // still on old snapshot. + ASSERT(!rs->getCursor(longLivedOp.get())->seekExact(otherId)); // This makes all documents visible and lets longLivedOp get a new snapshot. longLivedWuow.commit(); |