}
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) {
}
ObjectStore::Transaction t;
t.remove_collection(cid);
- store->apply_transaction(t);
+ r = store->apply_transaction(t);
+ ASSERT_EQ(r, 0);
}
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) {
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(