From: Samuel Just Date: Thu, 28 Oct 2021 09:50:16 +0000 (-0700) Subject: test/crimson/seastore/test_transaction_manager_test_state: add mock MDStore X-Git-Tag: v17.1.0~560^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=9d19de54397b8b01f14a4ea3d6000f8183a3ca2d;p=ceph.git test/crimson/seastore/test_transaction_manager_test_state: add mock MDStore Signed-off-by: Samuel Just --- diff --git a/src/test/crimson/seastore/transaction_manager_test_state.h b/src/test/crimson/seastore/transaction_manager_test_state.h index 8beb6b7626d8a..003966e13d427 100644 --- a/src/test/crimson/seastore/transaction_manager_test_state.h +++ b/src/test/crimson/seastore/transaction_manager_test_state.h @@ -106,11 +106,12 @@ auto get_transaction_manager( scanner_ref); } -auto get_seastore(SegmentManagerRef sm) { +auto get_seastore(SeaStore::MDStoreRef mdstore, SegmentManagerRef sm) { auto tm = get_transaction_manager(*sm); auto cm = std::make_unique(*tm); return std::make_unique( "", + std::move(mdstore), std::move(sm), std::move(tm), std::move(cm), @@ -258,6 +259,38 @@ public: }; class SeaStoreTestState : public EphemeralTestState { + class TestMDStoreState { + std::map md; + public: + class Store final : public SeaStore::MDStore { + TestMDStoreState &parent; + public: + Store(TestMDStoreState &parent) : parent(parent) {} + + write_meta_ret write_meta( + const std::string& key, const std::string& value) final { + parent.md[key] = value; + return seastar::now(); + } + + read_meta_ret read_meta(const std::string& key) final { + auto iter = parent.md.find(key); + if (iter != parent.md.end()) { + return read_meta_ret( + read_meta_ertr::ready_future_marker{}, + iter->second); + } else { + return read_meta_ret( + read_meta_ertr::ready_future_marker{}, + std::nullopt); + } + } + }; + Store get_mdstore() { + return Store(*this); + } + } mdstore_state; + protected: std::unique_ptr seastore; @@ -265,6 +298,7 @@ protected: virtual void _init() final { seastore = get_seastore( + std::make_unique(mdstore_state.get_mdstore()), std::make_unique(*segment_manager)); }