From: Sage Weil Date: Thu, 12 Apr 2012 21:33:11 +0000 (-0700) Subject: test_idempotent_sequence: add remove op X-Git-Tag: v0.46~84^2~20 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5d30581e01ec2e51e2acceebda1f897053d85113;p=ceph.git test_idempotent_sequence: add remove op Signed-off-by: Sage Weil --- diff --git a/src/test/filestore_test/DeterministicOpSequence.cc b/src/test/filestore_test/DeterministicOpSequence.cc index d3ff95fad772..1d8b63efd7d7 100644 --- a/src/test/filestore_test/DeterministicOpSequence.cc +++ b/src/test/filestore_test/DeterministicOpSequence.cc @@ -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) { diff --git a/src/test/filestore_test/DeterministicOpSequence.h b/src/test/filestore_test/DeterministicOpSequence.h index d361d36ef3b1..48a123218dcc 100644 --- a/src/test/filestore_test/DeterministicOpSequence.h +++ b/src/test/filestore_test/DeterministicOpSequence.h @@ -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);