]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tests: add test case for cls_rbd set_features
authorJason Dillaman <dillaman@redhat.com>
Wed, 11 Mar 2015 20:51:11 +0000 (16:51 -0400)
committerJason Dillaman <dillaman@redhat.com>
Mon, 6 Apr 2015 17:14:34 +0000 (13:14 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/test/cls_rbd/test_cls_rbd.cc

index 025c3f6a10223de1b2839f78add22d542b5b8750..cc542abc735382d71b020f2cc88d1dfc5d5800f4 100644 (file)
@@ -19,6 +19,7 @@
 using namespace std;
 using ::librbd::cls_client::create_image;
 using ::librbd::cls_client::get_features;
+using ::librbd::cls_client::set_features;
 using ::librbd::cls_client::get_size;
 using ::librbd::cls_client::get_object_prefix;
 using ::librbd::cls_client::set_size;
@@ -1110,3 +1111,34 @@ TEST_F(TestClsRbd, metadata)
 
   ioctx.close();
 }
+
+TEST_F(TestClsRbd, set_features)
+{
+  librados::IoCtx ioctx;
+  ASSERT_EQ(0, _rados.ioctx_create(_pool_name.c_str(), ioctx));
+
+  string oid = get_temp_image_name();
+  ASSERT_EQ(0, create_image(&ioctx, oid, 0, 22, 0, oid));
+
+  uint64_t features = RBD_FEATURES_MUTABLE;
+  uint64_t mask = RBD_FEATURES_MUTABLE;
+  ASSERT_EQ(0, set_features(&ioctx, oid, features, mask));
+
+  uint64_t actual_features;
+  ASSERT_EQ(0, get_features(&ioctx, oid, CEPH_NOSNAP, &actual_features));
+
+  uint64_t expected_features = RBD_FEATURES_MUTABLE;
+  ASSERT_EQ(expected_features, actual_features);
+
+  features = 0;
+  mask = RBD_FEATURE_OBJECT_MAP;
+  ASSERT_EQ(0, set_features(&ioctx, oid, features, mask));
+
+  ASSERT_EQ(0, get_features(&ioctx, oid, CEPH_NOSNAP, &actual_features));
+
+  expected_features = RBD_FEATURES_MUTABLE & ~RBD_FEATURE_OBJECT_MAP;
+  ASSERT_EQ(expected_features, actual_features);
+
+  mask = RBD_FEATURE_LAYERING;
+  ASSERT_EQ(-EINVAL, set_features(&ioctx, oid, features, mask));
+}