return Device::make_device(
device
).then([&device](DeviceRef device_obj) {
- tm_make_config_t config;
- config.detailed = false;
- auto tm = make_transaction_manager(config);
+ auto tm = make_transaction_manager(tm_make_config_t::get_default());
auto cm = std::make_unique<collection_manager::FlatCollectionManager>(*tm);
return std::make_unique<SeaStore>(
device,
struct tm_make_config_t {
bool detailed = true;
journal_type_t j_type = journal_type_t::SEGMENT_JOURNAL;
- placement_hint_t default_placement_hint =
- placement_hint_t::HOT;
+ placement_hint_t default_placement_hint = placement_hint_t::HOT;
+
static tm_make_config_t get_default() {
+ return tm_make_config_t {
+ false,
+ journal_type_t::SEGMENT_JOURNAL,
+ placement_hint_t::HOT
+ };
+ }
+ static tm_make_config_t get_test_segmented_journal() {
return tm_make_config_t {
true,
journal_type_t::SEGMENT_JOURNAL,
placement_hint_t::HOT
};
}
+ static tm_make_config_t get_test_cb_journal() {
+ return tm_make_config_t {
+ true,
+ journal_type_t::CIRCULARBOUNDED_JOURNAL,
+ placement_hint_t::REWRITE
+ };
+ }
+
+ tm_make_config_t(const tm_make_config_t &) = default;
+ tm_make_config_t &operator=(const tm_make_config_t &) = default;
+private:
+ tm_make_config_t(
+ bool detailed,
+ journal_type_t j_type,
+ placement_hint_t default_placement_hint)
+ : detailed(detailed), j_type(j_type),
+ default_placement_hint(default_placement_hint)
+ {}
};
template <typename F>
void TMDriver::init()
{
- tm_make_config_t config;
- config.detailed = false;
- tm = make_transaction_manager(config);
+ tm = make_transaction_manager(tm_make_config_t::get_default());
tm->add_device(device.get(), true);
}
std::random_device rd;
std::mt19937 gen;
- tm_make_config_t tm_config;
transaction_manager_test_t(std::size_t num_devices)
: TMTestState(num_devices), gen(rd()) {
seastar::future<> set_up_fut() final {
std::string j_type = GetParam();
if (j_type == "segmented") {
- return tm_setup(tm_config);
+ return tm_setup(tm_make_config_t::get_test_segmented_journal());
} else if (j_type == "circularbounded") {
- tm_config.j_type = journal_type_t::CIRCULARBOUNDED_JOURNAL;
- tm_config.default_placement_hint = placement_hint_t::REWRITE;
- return tm_setup(tm_config);
+ return tm_setup(tm_make_config_t::get_test_cb_journal());
} else {
ceph_assert(0 == "no support");
}
segment_manager::EphemeralSegmentManagerRef segment_manager;
std::list<segment_manager::EphemeralSegmentManagerRef> secondary_segment_managers;
std::unique_ptr<nvme_device::NVMeBlockDevice> rb_device;
- tm_make_config_t tm_config;
+ tm_make_config_t tm_config = tm_make_config_t::get_test_segmented_journal();
EphemeralTestState(std::size_t num_segment_managers) {
assert(num_segment_managers > 0);
}
seastar::future<> tm_setup(
- tm_make_config_t config = tm_make_config_t::get_default()) {
+ tm_make_config_t config = tm_make_config_t::get_test_segmented_journal()) {
tm_config = config;
segment_manager = segment_manager::create_test_ephemeral();
for (auto &sec_sm : secondary_segment_managers) {
};
auto get_seastore(SeaStore::MDStoreRef mdstore, SegmentManagerRef sm) {
- auto tm = make_transaction_manager(tm_make_config_t::get_default());
+ auto tm = make_transaction_manager(tm_make_config_t::get_test_segmented_journal());
auto cm = std::make_unique<collection_manager::FlatCollectionManager>(*tm);
return std::make_unique<SeaStore>(
"",