]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test_cls_rbd: add metadata cls tests
authorHaomai Wang <haomaiwang@gmail.com>
Mon, 9 Mar 2015 03:52:51 +0000 (11:52 +0800)
committerHaomai Wang <haomaiwang@gmail.com>
Fri, 13 Mar 2015 14:51:34 +0000 (22:51 +0800)
Signed-off-by: Haomai Wang <haomaiwang@gmail.com>
src/test/cls_rbd/test_cls_rbd.cc

index dbb923001be09087d4fd3f27996a3dd2c2de88e0..601f9a617a0469ccc36237cd8d9c0cc54b3c76dd 100644 (file)
@@ -54,6 +54,9 @@ using ::librbd::cls_client::object_map_resize;
 using ::librbd::cls_client::object_map_update;
 using ::librbd::cls_client::get_flags;
 using ::librbd::cls_client::set_flags;
+using ::librbd::cls_client::metadata_set;
+using ::librbd::cls_client::metadata_remove;
+using ::librbd::cls_client::metadata_list;
 
 static char *random_buf(size_t len)
 {
@@ -1064,3 +1067,33 @@ TEST_F(TestClsRbd, flags)
 
   ioctx.close();
 }
+
+
+TEST_F(TestClsRbd, metadata)
+{
+  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));
+
+  map<string, string> pairs;
+  ASSERT_EQ(0, metadata_list(&ioctx, oid, &pairs));
+  ASSERT_TRUE(pairs.empty());
+
+  ASSERT_EQ(0, metadata_set(&ioctx, oid, "key1", "value1"));
+  ASSERT_EQ(0, metadata_set(&ioctx, oid, "key2", "value2"));
+  ASSERT_EQ(0, metadata_list(&ioctx, oid, &pairs));
+  ASSERT_EQ(2U, pairs.size());
+  ASSERT_EQ(0, strcmp("value1", pairs["key1"].c_str()));
+  ASSERT_EQ(0, strcmp("value2", pairs["key2"].c_str()));
+
+  pairs.clear();
+  ASSERT_EQ(0, metadata_remove(&ioctx, oid, "key1"));
+  ASSERT_EQ(0, metadata_remove(&ioctx, oid, "key3"));
+  ASSERT_EQ(0, metadata_list(&ioctx, oid, &pairs));
+  ASSERT_EQ(1U, pairs.size());
+  ASSERT_EQ(0, strcmp("value2", pairs["key2"].c_str()));
+
+  ioctx.close();
+}