diff options
author | Sage Weil <sage@inktank.com> | 2013-09-11 10:27:49 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-09-17 11:06:28 -0700 |
commit | 3a0018786033aea5fb312a6126d70134bca3e724 (patch) | |
tree | c6ee3e213b9fd6fa3e3f81ce7f129d352bd9bf72 | |
parent | 045b90292abdc9ee04a152213bf8cd2cdf664005 (diff) | |
download | ceph-3a0018786033aea5fb312a6126d70134bca3e724.tar.gz |
librados: test copy_from without src_version specified
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/test/librados/misc.cc | 61 |
1 files changed, 45 insertions, 16 deletions
diff --git a/src/test/librados/misc.cc b/src/test/librados/misc.cc index 24cb431261a..803c8b1cc77 100644 --- a/src/test/librados/misc.cc +++ b/src/test/librados/misc.cc @@ -581,15 +581,30 @@ TEST(LibRadosMisc, CopyPP) { ASSERT_EQ(0, ioctx.write_full("foo", blc)); ASSERT_EQ(0, ioctx.setxattr("foo", "myattr", xc)); - ObjectWriteOperation op; - op.copy_from("foo", ioctx, ioctx.get_last_version()); - ASSERT_EQ(0, ioctx.operate("foo.copy", &op)); + { + ObjectWriteOperation op; + op.copy_from("foo", ioctx, ioctx.get_last_version()); + ASSERT_EQ(0, ioctx.operate("foo.copy", &op)); + + bufferlist bl2, x2; + ASSERT_EQ((int)bl.length(), ioctx.read("foo.copy", bl2, 10000, 0)); + ASSERT_TRUE(bl.contents_equal(bl2)); + ASSERT_EQ((int)x.length(), ioctx.getxattr("foo.copy", "myattr", x2)); + ASSERT_TRUE(x.contents_equal(x2)); + } - bufferlist bl2, x2; - ASSERT_EQ((int)bl.length(), ioctx.read("foo.copy", bl2, 10000, 0)); - ASSERT_TRUE(bl.contents_equal(bl2)); - ASSERT_EQ((int)x.length(), ioctx.getxattr("foo.copy", "myattr", x2)); - ASSERT_TRUE(x.contents_equal(x2)); + // small object without a version + { + ObjectWriteOperation op; + op.copy_from("foo", ioctx, 0); + ASSERT_EQ(0, ioctx.operate("foo.copy2", &op)); + + bufferlist bl2, x2; + ASSERT_EQ((int)bl.length(), ioctx.read("foo.copy2", bl2, 10000, 0)); + ASSERT_TRUE(bl.contents_equal(bl2)); + ASSERT_EQ((int)x.length(), ioctx.getxattr("foo.copy2", "myattr", x2)); + ASSERT_TRUE(x.contents_equal(x2)); + } // do a big object bl.append(buffer::create(g_conf->osd_copyfrom_max_chunk * 3)); @@ -600,15 +615,29 @@ TEST(LibRadosMisc, CopyPP) { ASSERT_EQ(0, ioctx.write_full("big", blc)); ASSERT_EQ(0, ioctx.setxattr("big", "myattr", xc)); - ObjectWriteOperation op2; - op.copy_from("big", ioctx, ioctx.get_last_version()); - ASSERT_EQ(0, ioctx.operate("big.copy", &op)); + { + ObjectWriteOperation op; + op.copy_from("big", ioctx, ioctx.get_last_version()); + ASSERT_EQ(0, ioctx.operate("big.copy", &op)); + + bufferlist bl2, x2; + ASSERT_EQ((int)bl.length(), ioctx.read("big.copy", bl2, bl.length(), 0)); + ASSERT_TRUE(bl.contents_equal(bl2)); + ASSERT_EQ((int)x.length(), ioctx.getxattr("foo.copy", "myattr", x2)); + ASSERT_TRUE(x.contents_equal(x2)); + } - bl2.clear(); - ASSERT_EQ((int)bl.length(), ioctx.read("big.copy", bl2, bl.length(), 0)); - ASSERT_TRUE(bl.contents_equal(bl2)); - ASSERT_EQ((int)x.length(), ioctx.getxattr("foo.copy", "myattr", x2)); - ASSERT_TRUE(x.contents_equal(x2)); + { + ObjectWriteOperation op; + op.copy_from("big", ioctx, 0); + ASSERT_EQ(0, ioctx.operate("big.copy2", &op)); + + bufferlist bl2, x2; + ASSERT_EQ((int)bl.length(), ioctx.read("big.copy2", bl2, bl.length(), 0)); + ASSERT_TRUE(bl.contents_equal(bl2)); + ASSERT_EQ((int)x.length(), ioctx.getxattr("foo.copy2", "myattr", x2)); + ASSERT_TRUE(x.contents_equal(x2)); + } ioctx.close(); ASSERT_EQ(0, destroy_one_pool_pp(pool_name, cluster)); |