From 85713bdcc3870728dce02f87ee3cfd36257ae533 Mon Sep 17 00:00:00 2001 From: PCzhangPC Date: Sat, 28 Oct 2017 14:29:45 +0800 Subject: [PATCH] test_librbd:add a test case of 70 key/val pairs in TestClone2 Signed-off-by: PCzhangPC --- src/test/librbd/test_librbd.cc | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/test/librbd/test_librbd.cc b/src/test/librbd/test_librbd.cc index 48dfffe4c7119..d5517182be3fd 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)); -- 2.39.5