summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-09-11 10:27:49 -0700
committerSage Weil <sage@inktank.com>2013-09-17 11:06:28 -0700
commit3a0018786033aea5fb312a6126d70134bca3e724 (patch)
treec6ee3e213b9fd6fa3e3f81ce7f129d352bd9bf72
parent045b90292abdc9ee04a152213bf8cd2cdf664005 (diff)
downloadceph-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.cc61
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));