From 2903de0a5951c1581cca21a2003cf8b3119921db Mon Sep 17 00:00:00 2001 From: Colin Patrick McCabe Date: Thu, 18 Aug 2011 11:08:10 -0700 Subject: [PATCH] Operate1PP: test CEPH_OSD_CMPXATTR_OP_EQ Signed-off-by: Colin McCabe --- src/test/rados-api/misc.cc | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/test/rados-api/misc.cc b/src/test/rados-api/misc.cc index 88ac264ee38f5..5a8c26db4f78d 100644 --- a/src/test/rados-api/misc.cc +++ b/src/test/rados-api/misc.cc @@ -162,32 +162,38 @@ TEST(LibRadosMisc, Operate1PP) { IoCtx ioctx; cluster.ioctx_create(pool_name.c_str(), ioctx); - char buf[128]; - memset(buf, 0xcc, sizeof(buf)); - ObjectOperation o; { bufferlist bl; - bl.append(buf, sizeof(buf)); o.write(0, bl); } - + std::string val1("val1"); { - bufferlist bl2; - char buf2[128]; - snprintf(buf2, sizeof(buf2), "val1"); - bl2.append(buf2, sizeof(buf2)); - o.setxattr("foo", bl2); + bufferlist bl; + bl.append(val1.c_str(), val1.size() + 1); + o.setxattr("key1", bl); } - ASSERT_EQ(0, ioctx.operate("foo", &o)); - { bufferlist bl; - ASSERT_GT(ioctx.read("foo", bl, 0, 0), 0); - ASSERT_EQ(0, memcmp(bl.c_str(), buf, sizeof(buf))); + ASSERT_GT(ioctx.getxattr("foo", "key1", bl), 0); + ASSERT_EQ(0, strcmp(bl.c_str(), val1.c_str())); } - + ObjectOperation o2; + { + bufferlist bl; + bl.append(val1); + o2.cmpxattr("key1", bl, CEPH_OSD_CMPXATTR_OP_EQ, CEPH_OSD_CMPXATTR_MODE_STRING); + o2.rmxattr("key1"); + } + ASSERT_EQ(1, ioctx.operate("foo", &o2)); + ObjectOperation o3; + { + bufferlist bl; + bl.append(val1); + o3.cmpxattr("key1", bl, CEPH_OSD_CMPXATTR_OP_EQ, CEPH_OSD_CMPXATTR_MODE_STRING); + } + ASSERT_LT(ioctx.operate("foo", &o3), 0); ioctx.close(); ASSERT_EQ(0, destroy_one_pool_pp(pool_name, cluster)); } -- 2.39.5