diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2018-10-26 11:36:37 -0400 |
---|---|---|
committer | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2018-10-26 11:36:37 -0400 |
commit | eb2157a3d7c6b02d7d8f873afafd630f3d9aed4f (patch) | |
tree | d82e14ca27cd428979adcf66bffb02daf0d5f2de /src/mongo/db/free_mon/free_mon_queue_test.cpp | |
parent | a15cf62de1d5de973160ec1a23609aaf6f0f500f (diff) | |
download | mongo-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.cpp | 22 |
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; |