]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
unittest: add testcase for librbd QosLimit.
authorShiyang Ruan <ruansy.fnst@cn.fujitsu.com>
Thu, 11 Oct 2018 06:52:38 +0000 (14:52 +0800)
committerShiyang Ruan <ruansy.fnst@cn.fujitsu.com>
Wed, 7 Nov 2018 05:26:39 +0000 (13:26 +0800)
Signed-off-by: Shiyang Ruan <ruansy.fnst@cn.fujitsu.com>
src/test/librbd/io/test_mock_ImageRequestWQ.cc

index 719fca2a9544c2b2085c4665eb7aa78a529374fc..dd4f153a5fbc0fadd7c6b8ef73a273bf7eec51a2 100644 (file)
@@ -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