summaryrefslogtreecommitdiff
path: root/src/mongo/db/free_mon/free_mon_queue_test.cpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2018-10-26 11:36:37 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2018-10-26 11:36:37 -0400
commiteb2157a3d7c6b02d7d8f873afafd630f3d9aed4f (patch)
treed82e14ca27cd428979adcf66bffb02daf0d5f2de /src/mongo/db/free_mon/free_mon_queue_test.cpp
parenta15cf62de1d5de973160ec1a23609aaf6f0f500f (diff)
downloadmongo-eb2157a3d7c6b02d7d8f873afafd630f3d9aed4f.tar.gz
SERVER-37685 Ensure free monitoring queue preserves FIFO on messages with same deadline
Diffstat (limited to 'src/mongo/db/free_mon/free_mon_queue_test.cpp')
-rw-r--r--src/mongo/db/free_mon/free_mon_queue_test.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/mongo/db/free_mon/free_mon_queue_test.cpp b/src/mongo/db/free_mon/free_mon_queue_test.cpp
index e41b646e8df..3f181f3c720 100644
--- a/src/mongo/db/free_mon/free_mon_queue_test.cpp
+++ b/src/mongo/db/free_mon/free_mon_queue_test.cpp
@@ -115,6 +115,28 @@ TEST_F(FreeMonQueueTest, TestDeadlinePriority) {
ASSERT(item->getType() == FreeMonMessageType::RegisterServer);
}
+// Positive: Ensure deadlines sort properly when they have the same deadlines
+TEST_F(FreeMonQueueTest, TestFIFO) {
+ FreeMonMessageQueue queue;
+
+ queue.enqueue(
+ FreeMonMessage::createWithDeadline(FreeMonMessageType::RegisterServer, Date_t::min()));
+ queue.enqueue(FreeMonMessage::createWithDeadline(FreeMonMessageType::AsyncRegisterComplete,
+ Date_t::min()));
+ queue.enqueue(
+ FreeMonMessage::createWithDeadline(FreeMonMessageType::RegisterCommand, Date_t::min()));
+
+ auto item = queue.dequeue(_opCtx.get()->getServiceContext()->getPreciseClockSource()).get();
+ ASSERT(item->getType() == FreeMonMessageType::RegisterServer);
+
+ item = queue.dequeue(_opCtx.get()->getServiceContext()->getPreciseClockSource()).get();
+ ASSERT(item->getType() == FreeMonMessageType::AsyncRegisterComplete);
+
+ item = queue.dequeue(_opCtx.get()->getServiceContext()->getPreciseClockSource()).get();
+ ASSERT(item->getType() == FreeMonMessageType::RegisterCommand);
+}
+
+
// Positive: Test Queue Stop
TEST_F(FreeMonQueueTest, TestQueueStop) {
FreeMonMessageQueue queue;