]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test_idempotent_sequence: add remove op
authorSage Weil <sage.weil@dreamhost.com>
Thu, 12 Apr 2012 21:33:11 +0000 (14:33 -0700)
committerSage Weil <sage.weil@dreamhost.com>
Sat, 14 Apr 2012 03:38:22 +0000 (20:38 -0700)
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/test/filestore_test/DeterministicOpSequence.cc
src/test/filestore_test/DeterministicOpSequence.h

index d3ff95fad7724d27084d33b9041f1a235a231f32..1d8b63efd7d786a543fcd1abd111c3ea785d4cae 100644 (file)
@@ -61,21 +61,26 @@ void DeterministicOpSequence::run_one_op(int op, rngen_t& gen)
   case DSOP_WRITE:
     do_write(gen);
     break;
-  case DSOP_COLL_MOVE:
-    do_coll_move(gen);
-    break;
-  case DSOP_COLL_ADD:
-    do_coll_add(gen);
-    break;
-  case DSOP_COLL_RENAME:
-    do_coll_rename(gen);
-    break;
   case DSOP_CLONE:
     do_clone(gen);
     break;
   case DSOP_CLONE_RANGE:
     do_clone_range(gen);
     break;
+  case DSOP_OBJ_REMOVE:
+    do_remove(gen);
+    break;
+  case DSOP_COLL_MOVE:
+    //do_coll_move(gen);
+    break;
+  case DSOP_COLL_ADD:
+    //do_coll_add(gen);
+    break;
+  case DSOP_COLL_RENAME:
+    //do_coll_rename(gen);
+    break;
+  default:
+    assert(0 == "bad op");
   }
 }
 
@@ -143,6 +148,21 @@ void DeterministicOpSequence::do_touch(rngen_t& gen)
   _do_touch(entry->m_coll, *obj);
 }
 
+void DeterministicOpSequence::do_remove(rngen_t& gen)
+{
+  int coll_id = _gen_coll_id(gen);
+  int obj_id = _gen_obj_id(gen);
+
+  coll_entry_t *entry = get_coll_at(coll_id);
+  hobject_t *obj = entry->touch_obj(obj_id);
+
+  // ENOENT ok here.
+
+  dout(0) << "do_remove " << entry->m_coll.to_str() << "/" << obj->oid.name << dendl;
+
+  _do_touch(entry->m_coll, *obj);
+}
+
 void DeterministicOpSequence::_gen_random(rngen_t& gen,
                                          size_t size, bufferlist& bl) {
 
@@ -389,6 +409,14 @@ void DeterministicOpSequence::_do_touch(coll_t coll, hobject_t& obj)
   m_store->apply_transaction(t);
 }
 
+void DeterministicOpSequence::_do_remove(coll_t coll, hobject_t& obj)
+{
+  ObjectStore::Transaction t;
+  note_txn(&t);
+  t.remove(coll, obj);
+  m_store->apply_transaction(t);
+}
+
 void DeterministicOpSequence::_do_write(coll_t coll, hobject_t& obj,
                                        uint64_t off, uint64_t len, const bufferlist& data)
 {
index d361d36ef3b1f0cc628ebb49a740b89ee59ae42c..48a123218dccc5a0b33cffa27ba14381c9e10254 100644 (file)
@@ -59,6 +59,7 @@ class DeterministicOpSequence : public TestFileStoreState {
 
   void note_txn(ObjectStore::Transaction *t);
   void do_touch(rngen_t& gen);
+  void do_remove(rngen_t& gen);
   void do_write(rngen_t& gen);
   void do_clone(rngen_t& gen);
   void do_clone_range(rngen_t& gen);
@@ -67,6 +68,7 @@ class DeterministicOpSequence : public TestFileStoreState {
   void do_coll_add(rngen_t& gen);
 
   virtual void _do_touch(coll_t coll, hobject_t& obj);
+  virtual void _do_remove(coll_t coll, hobject_t& obj);
   virtual void _do_write(coll_t coll, hobject_t& obj, uint64_t off,
       uint64_t len, const bufferlist& data);
   virtual void _do_clone(coll_t coll, hobject_t& orig_obj, hobject_t& new_obj);