summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/record_store_test_capped_visibility.cpp
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2016-10-18 16:23:24 -0400
committerMathias Stearn <mathias@10gen.com>2016-11-03 15:16:50 -0400
commit8a2f2fc1883f5deb1b23915cd7a47686a623ba87 (patch)
treea0c6f033bfd25f89fa73a51e03c1dfb8099421f3 /src/mongo/db/storage/record_store_test_capped_visibility.cpp
parentb0885dbb66f94332a3cf8ab5bf2565b70cd59384 (diff)
downloadmongo-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.cpp24
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();