From: Shiyang Ruan Date: Thu, 11 Oct 2018 06:52:38 +0000 (+0800) Subject: unittest: add testcase for librbd QosLimit. X-Git-Tag: v14.1.0~946^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1705b2cebacec9858d45cf9cbf44f1d2bff5d792;p=ceph.git unittest: add testcase for librbd QosLimit. Signed-off-by: Shiyang Ruan --- diff --git a/src/test/librbd/io/test_mock_ImageRequestWQ.cc b/src/test/librbd/io/test_mock_ImageRequestWQ.cc index 719fca2a954..dd4f153a5fb 100644 --- a/src/test/librbd/io/test_mock_ImageRequestWQ.cc +++ b/src/test/librbd/io/test_mock_ImageRequestWQ.cc @@ -401,7 +401,7 @@ TEST_F(TestMockIoImageRequestWQ, QosNoLimit) { ASSERT_TRUE(mock_image_request_wq.invoke_dequeue() == &mock_queued_image_request); } -TEST_F(TestMockIoImageRequestWQ, BPSQos) { +TEST_F(TestMockIoImageRequestWQ, BPSQosNoBurst) { librbd::ImageCtx *ictx; ASSERT_EQ(0, open_image(m_image_name, &ictx)); @@ -425,5 +425,29 @@ TEST_F(TestMockIoImageRequestWQ, BPSQos) { ASSERT_TRUE(mock_image_request_wq.invoke_dequeue() == nullptr); } +TEST_F(TestMockIoImageRequestWQ, BPSQosWithBurst) { + librbd::ImageCtx *ictx; + ASSERT_EQ(0, open_image(m_image_name, &ictx)); + + MockTestImageCtx mock_image_ctx(*ictx); + + MockImageDispatchSpec mock_queued_image_request; + expect_was_throttled(mock_queued_image_request, false); + expect_set_throttled(mock_queued_image_request); + + InSequence seq; + MockImageRequestWQ mock_image_request_wq(&mock_image_ctx, "io", 60, nullptr); + + mock_image_request_wq.apply_qos_limit(RBD_QOS_BPS_THROTTLE, 1, 1); + + expect_front(mock_image_request_wq, &mock_queued_image_request); + expect_tokens_requested(mock_queued_image_request, 2); + expect_dequeue(mock_image_request_wq, &mock_queued_image_request); + expect_all_throttled(mock_queued_image_request, true); + expect_requeue(mock_image_request_wq); + expect_signal(mock_image_request_wq); + ASSERT_TRUE(mock_image_request_wq.invoke_dequeue() == nullptr); +} + } // namespace io } // namespace librbd