From: Sage Weil Date: Tue, 18 Aug 2015 14:10:42 +0000 (-0400) Subject: ceph_test_objectstore: test omap clone X-Git-Tag: v9.1.0~324^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=32bccedcb28596cf5a455c7db3576827d86f261d;p=ceph.git ceph_test_objectstore: test omap clone Signed-off-by: Sage Weil --- diff --git a/src/test/objectstore/store_test.cc b/src/test/objectstore/store_test.cc index d208755eda1..c3d292fb920 100644 --- a/src/test/objectstore/store_test.cc +++ b/src/test/objectstore/store_test.cc @@ -695,6 +695,59 @@ TEST_P(StoreTest, SimpleCloneTest) { } } +TEST_P(StoreTest, OmapCloneTest) { + int r; + coll_t cid; + { + ObjectStore::Transaction t; + t.create_collection(cid, 0); + cerr << "Creating collection " << cid << std::endl; + r = store->apply_transaction(t); + ASSERT_EQ(r, 0); + } + ghobject_t hoid(hobject_t(sobject_t("Object 1", CEPH_NOSNAP))); + bufferlist small; + small.append("small"); + map km; + km["foo"] = small; + km["bar"].append("asdfjkasdkjdfsjkafskjsfdj"); + bufferlist header; + header.append("this is a header"); + { + ObjectStore::Transaction t; + t.touch(cid, hoid); + t.omap_setkeys(cid, hoid, km); + t.omap_setheader(cid, hoid, header); + cerr << "Creating object and set omap " << hoid << std::endl; + r = store->apply_transaction(t); + ASSERT_EQ(r, 0); + } + ghobject_t hoid2(hobject_t(sobject_t("Object 2", CEPH_NOSNAP))); + { + ObjectStore::Transaction t; + t.clone(cid, hoid, hoid2); + cerr << "Clone object" << std::endl; + r = store->apply_transaction(t); + ASSERT_EQ(r, 0); + } + { + map r; + bufferlist h; + store->omap_get(cid, hoid2, &h, &r); + ASSERT_TRUE(h.contents_equal(header)); + ASSERT_EQ(r.size(), km.size()); + } + { + ObjectStore::Transaction t; + t.remove(cid, hoid); + t.remove(cid, hoid2); + t.remove_collection(cid); + cerr << "Cleaning" << std::endl; + r = store->apply_transaction(t); + ASSERT_EQ(r, 0); + } +} + TEST_P(StoreTest, SimpleCloneRangeTest) { int r; coll_t cid;