From: PCzhangPC Date: Sat, 28 Oct 2017 06:29:45 +0000 (+0800) Subject: test_librbd:add a test case of 70 key/val pairs in TestClone2 X-Git-Tag: v13.0.1~347^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F18327%2Fhead;p=ceph.git test_librbd:add a test case of 70 key/val pairs in TestClone2 Signed-off-by: PCzhangPC --- diff --git a/src/test/librbd/test_librbd.cc b/src/test/librbd/test_librbd.cc index 48dfffe4c711..d5517182be3f 100644 --- a/src/test/librbd/test_librbd.cc +++ b/src/test/librbd/test_librbd.cc @@ -2705,6 +2705,28 @@ TEST_F(TestLibRBD, TestClone2) ASSERT_EQ(-ENOENT, rbd_get_parent_info(parent, NULL, 0, NULL, 0, NULL, 0)); printf("parent has no parent info\n"); + // create 70 metadatas to verify we can clone all key/value pairs + std::string key; + std::string val; + size_t sum_key_len = 0; + size_t sum_value_len = 0; + for (int i = 1; i <= 70; i++) { + key = "key" + stringify(i); + val = "value" + stringify(i); + ASSERT_EQ(0, rbd_metadata_set(parent, key.c_str(), val.c_str())); + + sum_key_len += (key.size() + 1); + sum_value_len += (val.size() + 1); + } + + char keys[1024]; + char vals[1024]; + size_t keys_len = sizeof(keys); + size_t vals_len = sizeof(vals); + + char value[1024]; + size_t value_len = sizeof(value); + // create a snapshot, reopen as the parent we're interested in ASSERT_EQ(0, rbd_snap_create(parent, "parent_snap")); printf("made snapshot \"parent@parent_snap\"\n"); @@ -2729,6 +2751,22 @@ TEST_F(TestLibRBD, TestClone2) ASSERT_EQ(0, rbd_open(ioctx, child_name.c_str(), &child, NULL)); printf("made and opened clone \"child\"\n"); + // check key/value pairs in child image + ASSERT_EQ(0, rbd_metadata_list(child, "", 70, keys, &keys_len, vals, + &vals_len)); + ASSERT_EQ(sum_key_len, keys_len); + ASSERT_EQ(sum_value_len, vals_len); + + for (int i = 1; i <= 70; i++) { + key = "key" + stringify(i); + val = "value" + stringify(i); + ASSERT_EQ(0, rbd_metadata_get(child, key.c_str(), value, &value_len)); + ASSERT_STREQ(val.c_str(), value); + + value_len = sizeof(value); + } + printf("child image successfully cloned all image-meta pairs\n"); + // write something in ASSERT_EQ((ssize_t)strlen(childata), rbd_write(child, 20, strlen(childata), childata));