]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: test copy_from without src_version specified
authorSage Weil <sage@inktank.com>
Wed, 11 Sep 2013 17:27:49 +0000 (10:27 -0700)
committerSage Weil <sage@inktank.com>
Tue, 17 Sep 2013 18:06:28 +0000 (11:06 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
src/test/librados/misc.cc

index 24cb431261a5595cb9fa086898835b2ab66ea1f7..803c8b1cc777874470d1f63a3458c9feb4e4a1f6 100644 (file)
@@ -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));