summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/mmap_v1/record_access_tracker_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/mmap_v1/record_access_tracker_test.cpp')
-rw-r--r--src/mongo/db/storage/mmap_v1/record_access_tracker_test.cpp198
1 files changed, 99 insertions, 99 deletions
diff --git a/src/mongo/db/storage/mmap_v1/record_access_tracker_test.cpp b/src/mongo/db/storage/mmap_v1/record_access_tracker_test.cpp
index 92147a24c55..7cc766f2b13 100644
--- a/src/mongo/db/storage/mmap_v1/record_access_tracker_test.cpp
+++ b/src/mongo/db/storage/mmap_v1/record_access_tracker_test.cpp
@@ -35,108 +35,108 @@ using namespace mongo;
namespace {
- const void* pointerOf(int data) {
- return reinterpret_cast<const void*>(data);
- }
-
- TEST(RecordAccessTrackerTest, TouchRecordTwice) {
- RecordAccessTracker tracker;
- tracker.disableSystemBlockInMemCheck();
-
- const void* record = pointerOf(0x10003);
-
- ASSERT_FALSE(tracker.checkAccessedAndMark(record));
- ASSERT_TRUE(tracker.checkAccessedAndMark(record));
- }
-
- TEST(RecordAccessTrackerTest, TouchPageTwice) {
- RecordAccessTracker tracker;
- tracker.disableSystemBlockInMemCheck();
-
- const void* firstRecord = pointerOf(0x10003);
- const void* secondRecord = pointerOf(0x10004);
-
- ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecord));
- ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecord));
- ASSERT_TRUE(tracker.checkAccessedAndMark(firstRecord));
- ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecord));
- }
-
- TEST(RecordAccessTrackerTest, TouchTwoPagesTwice) {
- RecordAccessTracker tracker;
- tracker.disableSystemBlockInMemCheck();
-
- const void* firstRecordFirstPage = pointerOf(0x11000);
- const void* secondRecordFirstPage = pointerOf(0x11100);
-
- const void* firstRecordSecondPage = pointerOf(0x12000);
- const void* secondRecordSecondPage = pointerOf(0x12100);
-
- ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordFirstPage));
- ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordSecondPage));
- ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordFirstPage));
- ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordSecondPage));
- }
-
- // Tests RecordAccessTracker::reset().
- TEST(RecordAccessTrackerTest, TouchTwoPagesTwiceWithReset) {
- RecordAccessTracker tracker;
- tracker.disableSystemBlockInMemCheck();
-
- const void* firstRecordFirstPage = pointerOf(0x11000);
- const void* secondRecordFirstPage = pointerOf(0x11100);
-
- const void* firstRecordSecondPage = pointerOf(0x12000);
- const void* secondRecordSecondPage = pointerOf(0x12100);
-
- ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordFirstPage));
- ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordSecondPage));
- ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordFirstPage));
- ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordSecondPage));
-
- // Now reset and make sure things look as though we have a fresh RecordAccessTracker.
- tracker.reset();
- ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordFirstPage));
- ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordSecondPage));
- ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordFirstPage));
- ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordSecondPage));
+const void* pointerOf(int data) {
+ return reinterpret_cast<const void*>(data);
+}
+
+TEST(RecordAccessTrackerTest, TouchRecordTwice) {
+ RecordAccessTracker tracker;
+ tracker.disableSystemBlockInMemCheck();
+
+ const void* record = pointerOf(0x10003);
+
+ ASSERT_FALSE(tracker.checkAccessedAndMark(record));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(record));
+}
+
+TEST(RecordAccessTrackerTest, TouchPageTwice) {
+ RecordAccessTracker tracker;
+ tracker.disableSystemBlockInMemCheck();
+
+ const void* firstRecord = pointerOf(0x10003);
+ const void* secondRecord = pointerOf(0x10004);
+
+ ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecord));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecord));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(firstRecord));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecord));
+}
+
+TEST(RecordAccessTrackerTest, TouchTwoPagesTwice) {
+ RecordAccessTracker tracker;
+ tracker.disableSystemBlockInMemCheck();
+
+ const void* firstRecordFirstPage = pointerOf(0x11000);
+ const void* secondRecordFirstPage = pointerOf(0x11100);
+
+ const void* firstRecordSecondPage = pointerOf(0x12000);
+ const void* secondRecordSecondPage = pointerOf(0x12100);
+
+ ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordFirstPage));
+ ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordSecondPage));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordFirstPage));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordSecondPage));
+}
+
+// Tests RecordAccessTracker::reset().
+TEST(RecordAccessTrackerTest, TouchTwoPagesTwiceWithReset) {
+ RecordAccessTracker tracker;
+ tracker.disableSystemBlockInMemCheck();
+
+ const void* firstRecordFirstPage = pointerOf(0x11000);
+ const void* secondRecordFirstPage = pointerOf(0x11100);
+
+ const void* firstRecordSecondPage = pointerOf(0x12000);
+ const void* secondRecordSecondPage = pointerOf(0x12100);
+
+ ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordFirstPage));
+ ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordSecondPage));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordFirstPage));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordSecondPage));
+
+ // Now reset and make sure things look as though we have a fresh RecordAccessTracker.
+ tracker.reset();
+ ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordFirstPage));
+ ASSERT_FALSE(tracker.checkAccessedAndMark(firstRecordSecondPage));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordFirstPage));
+ ASSERT_TRUE(tracker.checkAccessedAndMark(secondRecordSecondPage));
+}
+
+// Tests RecordAccessTracker::markAccessed().
+TEST(RecordAccessTrackerTest, AccessTest) {
+ RecordAccessTracker tracker;
+ tracker.disableSystemBlockInMemCheck();
+
+ // Mark the first page in superpage 3 as accessed.
+ const void* record = pointerOf(0x30000);
+ tracker.markAccessed(record);
+
+ // Test that all remaining addresses in the page give true when asked whether they are
+ // recently accessed.
+ for (int i = 0x30001; i < 0x31000; i++) {
+ const void* touchedPageRecord = pointerOf(i);
+ ASSERT_TRUE(tracker.checkAccessedAndMark(touchedPageRecord));
}
-
- // Tests RecordAccessTracker::markAccessed().
- TEST(RecordAccessTrackerTest, AccessTest) {
- RecordAccessTracker tracker;
- tracker.disableSystemBlockInMemCheck();
-
- // Mark the first page in superpage 3 as accessed.
- const void* record = pointerOf(0x30000);
- tracker.markAccessed(record);
-
- // Test that all remaining addresses in the page give true when asked whether they are
- // recently accessed.
- for (int i = 0x30001; i < 0x31000; i++) {
- const void* touchedPageRecord = pointerOf(i);
- ASSERT_TRUE(tracker.checkAccessedAndMark(touchedPageRecord));
- }
+}
+
+// Touch pages in 128 separate superpages, and make sure that they all are reported as
+// recently accessed.
+TEST(RecordAccessTrackerTest, Access128Superpages) {
+ RecordAccessTracker tracker;
+ tracker.disableSystemBlockInMemCheck();
+
+ // Touch the pages.
+ for (int i = 0x00000; i < 0x800000; i += 0x10000) {
+ const void* touchedPageRecord = pointerOf(i);
+ tracker.markAccessed(touchedPageRecord);
}
- // Touch pages in 128 separate superpages, and make sure that they all are reported as
- // recently accessed.
- TEST(RecordAccessTrackerTest, Access128Superpages) {
- RecordAccessTracker tracker;
- tracker.disableSystemBlockInMemCheck();
-
- // Touch the pages.
- for (int i = 0x00000; i < 0x800000; i += 0x10000) {
- const void* touchedPageRecord = pointerOf(i);
- tracker.markAccessed(touchedPageRecord);
- }
-
- // Ensure we know that the pages have all been touched.
- for (int i = 0x00000; i < 0x800000; i += 0x10000) {
- // It should be fine if there is an offset of, say, 0xA, into the page.
- const void* touchedPageRecord = pointerOf(i + 0xA);
- ASSERT_TRUE(tracker.checkAccessedAndMark(touchedPageRecord));
- }
+ // Ensure we know that the pages have all been touched.
+ for (int i = 0x00000; i < 0x800000; i += 0x10000) {
+ // It should be fine if there is an offset of, say, 0xA, into the page.
+ const void* touchedPageRecord = pointerOf(i + 0xA);
+ ASSERT_TRUE(tracker.checkAccessedAndMark(touchedPageRecord));
}
+}
} // namespace