]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/librbd: add empty cookie and blank address tests 52288/head
authorIlya Dryomov <idryomov@gmail.com>
Mon, 8 May 2023 11:30:18 +0000 (13:30 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Sun, 2 Jul 2023 13:11:29 +0000 (15:11 +0200)
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 43f2e4ad08b5a1855313e9aebe79ee235f7e5e16)

src/test/librbd/managed_lock/test_mock_GetLockerRequest.cc

index 8cad1f09258c55422b78c690ca1d1bad02ad3692..4ee0cf0f90be0d30ca2a6ca23e6b376922e41fe0 100644 (file)
@@ -261,5 +261,49 @@ TEST_F(TestMockManagedLockGetLockerRequest, GetLockInfoExternalCookie) {
   ASSERT_EQ(-EBUSY, ctx.wait());
 }
 
+TEST_F(TestMockManagedLockGetLockerRequest, GetLockInfoEmptyCookie) {
+  REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK);
+
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  MockTestImageCtx mock_image_ctx(*ictx);
+  expect_op_work_queue(mock_image_ctx);
+
+  InSequence seq;
+  expect_get_lock_info(mock_image_ctx, 0, entity_name_t::CLIENT(1), "1.2.3.4",
+                       "", util::get_watcher_lock_tag(),
+                       ClsLockType::EXCLUSIVE);
+
+  C_SaferCond ctx;
+  Locker locker;
+  MockGetLockerRequest *req = MockGetLockerRequest::create(
+    mock_image_ctx.md_ctx, mock_image_ctx.header_oid, true, &locker, &ctx);
+  req->send();
+  ASSERT_EQ(-EBUSY, ctx.wait());
+}
+
+TEST_F(TestMockManagedLockGetLockerRequest, GetLockInfoBlankAddress) {
+  REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK);
+
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  MockTestImageCtx mock_image_ctx(*ictx);
+  expect_op_work_queue(mock_image_ctx);
+
+  InSequence seq;
+  expect_get_lock_info(mock_image_ctx, 0, entity_name_t::CLIENT(1), "",
+                       "auto 123", util::get_watcher_lock_tag(),
+                       ClsLockType::EXCLUSIVE);
+
+  C_SaferCond ctx;
+  Locker locker;
+  MockGetLockerRequest *req = MockGetLockerRequest::create(
+    mock_image_ctx.md_ctx, mock_image_ctx.header_oid, true, &locker, &ctx);
+  req->send();
+  ASSERT_EQ(-EBUSY, ctx.wait());
+}
+
 } // namespace managed_lock
 } // namespace librbd