From: xinxin shu Date: Mon, 24 Aug 2015 01:51:21 +0000 (+0800) Subject: add unit test for snap rename in imagewatcher X-Git-Tag: v10.0.0~10^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2865de4aad96d17fb72c556f6ed2131c40d7b2a9;p=ceph.git add unit test for snap rename in imagewatcher Signed-off-by: xinxin shu --- diff --git a/src/test/librbd/test_ImageWatcher.cc b/src/test/librbd/test_ImageWatcher.cc index 881315226ea4..2bc72bf91809 100644 --- a/src/test/librbd/test_ImageWatcher.cc +++ b/src/test/librbd/test_ImageWatcher.cc @@ -906,6 +906,46 @@ TEST_F(TestImageWatcher, NotifySnapCreateError) { ASSERT_EQ(expected_notify_ops, m_notifies); } +TEST_F(TestImageWatcher, NotifySnapRename) { + REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK); + + librbd::ImageCtx *ictx; + ASSERT_EQ(0, open_image(m_image_name, &ictx)); + + ASSERT_EQ(0, register_image_watch(*ictx)); + ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, + "auto " + stringify(m_watch_ctx->get_handle()))); + + m_notify_acks = {{NOTIFY_OP_SNAP_RENAME, create_response_message(0)}}; + + RWLock::RLocker l(ictx->owner_lock); + ASSERT_EQ(0, ictx->image_watcher->notify_snap_rename(1, "snap-rename")); + + NotifyOps expected_notify_ops; + expected_notify_ops += NOTIFY_OP_SNAP_RENAME; + ASSERT_EQ(expected_notify_ops, m_notifies); +} + +TEST_F(TestImageWatcher, NotifySnapRenameError) { + REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK); + + librbd::ImageCtx *ictx; + ASSERT_EQ(0, open_image(m_image_name, &ictx)); + + ASSERT_EQ(0, register_image_watch(*ictx)); + ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, + "auto " + stringify(m_watch_ctx->get_handle()))); + + m_notify_acks = {{NOTIFY_OP_SNAP_RENAME, create_response_message(-EEXIST)}}; + + RWLock::RLocker l(ictx->owner_lock); + ASSERT_EQ(-EEXIST, ictx->image_watcher->notify_snap_rename(1, "snap-rename")); + + NotifyOps expected_notify_ops; + expected_notify_ops += NOTIFY_OP_SNAP_RENAME; + ASSERT_EQ(expected_notify_ops, m_notifies); +} + TEST_F(TestImageWatcher, NotifySnapRemove) { REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK);