]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
StoreTest: Add collection_getattr(s) tests
authorHaomai Wang <haomaiwang@gmail.com>
Wed, 19 Nov 2014 03:52:52 +0000 (11:52 +0800)
committerHaomai Wang <haomaiwang@gmail.com>
Wed, 19 Nov 2014 03:52:52 +0000 (11:52 +0800)
Signed-off-by: Haomai Wang <haomaiwang@gmail.com>
src/test/objectstore/store_test.cc

index fefecc5529022201e87b25798964b1453867104a..84b14416dcd3c6b321ecdeb1bed3cc519e407e51 100644 (file)
@@ -1066,7 +1066,85 @@ TEST_P(StoreTest, HashCollisionTest) {
   }
   ObjectStore::Transaction t;
   t.remove_collection(cid);
-  store->apply_transaction(t);
+  r = store->apply_transaction(t);
+  ASSERT_EQ(r, 0);
+}
+
+TEST_P(StoreTest, CollectionAttrTest) {
+  coll_t cid("blah");
+  int r;
+
+  {
+    ObjectStore::Transaction t;
+    t.create_collection(cid);
+    r = store->apply_transaction(t);
+    ASSERT_EQ(r, 0);
+  }
+
+  {
+    bufferlist bl;
+    map<string, bufferptr> aset;
+    char nonexist[] = "nonexist";
+
+    r = store->collection_getattr(cid, nonexist, bl);
+    ASSERT_EQ(r, -ENODATA);
+
+    r = store->collection_getattrs(cid, aset);
+    ASSERT_EQ(r, 0);
+    ASSERT_EQ(aset.size(), 1u);
+  }
+
+  {
+    bufferlist bl;
+    map<string, bufferptr> aset;
+    ObjectStore::Transaction t;
+    char zero_length[] = "zero-length";
+
+    t.collection_setattr(cid, zero_length, bl);
+    r = store->apply_transaction(t);
+    ASSERT_EQ(r, 0);
+    ASSERT_EQ(bl.length(), 0u);
+
+    r = store->collection_getattr(cid, zero_length, bl);
+    ASSERT_EQ(r, 0);
+    ASSERT_EQ(bl.length(), 0u);
+
+    r = store->collection_getattrs(cid, aset);
+    ASSERT_EQ(r, 0);
+    ASSERT_EQ(aset.size(), 1u);
+    ASSERT_EQ(aset[zero_length].length(), 0);
+  }
+
+  {
+    bufferlist bl;
+    map<string, bufferptr> aset;
+    ObjectStore::Transaction t;
+    char normal[] = "normal";
+    char data[] = "dasdfjasdlkas";
+
+    bl.append(data, sizeof(data));
+    t.collection_setattr(cid, normal, bl);
+    r = store->apply_transaction(t);
+    ASSERT_EQ(r, 0);
+    bl.clear();
+
+    r = store->collection_getattr(cid, normal, bl);
+    ASSERT_EQ(r, sizeof(data));
+    ASSERT_EQ(bl.length(), sizeof(data));
+    bl.clear();
+
+    r = store->collection_getattrs(cid, aset);
+    ASSERT_EQ(r, 0);
+    ASSERT_EQ(aset.size(), 2u);
+    ASSERT_EQ(aset[normal].length(), sizeof(data));
+  }
+
+  {
+    ObjectStore::Transaction t;
+    t.remove_collection(cid);
+    r = store->apply_transaction(t);
+    ASSERT_EQ(r, 0);
+  }
 }
 
 TEST_P(StoreTest, ScrubTest) {
@@ -1140,7 +1218,8 @@ TEST_P(StoreTest, ScrubTest) {
   }
   ObjectStore::Transaction t;
   t.remove_collection(cid);
-  store->apply_transaction(t);
+  r = store->apply_transaction(t);
+  ASSERT_EQ(r, 0);
 }
 
 
@@ -1259,7 +1338,8 @@ TEST_P(StoreTest, OMapTest) {
   ObjectStore::Transaction t;
   t.remove(cid, hoid);
   t.remove_collection(cid);
-  store->apply_transaction(t);
+  r = store->apply_transaction(t);
+  ASSERT_EQ(r, 0);
 }
 
 TEST_P(StoreTest, XattrTest) {
@@ -1340,6 +1420,12 @@ TEST_P(StoreTest, XattrTest) {
   bufferlist bl2;
   bl2.push_back(bp);
   ASSERT_TRUE(bl2 == attrs["attr3"]);
+
+  ObjectStore::Transaction t;
+  t.remove(cid, hoid);
+  t.remove_collection(cid);
+  r = store->apply_transaction(t);
+  ASSERT_EQ(r, 0);
 }
 
 void colsplittest(