diff --git a/tests/urchin/gossip.cc b/tests/urchin/gossip.cc index 1d4312cce8..89b438edd6 100644 --- a/tests/urchin/gossip.cc +++ b/tests/urchin/gossip.cc @@ -4,6 +4,7 @@ #include "gms/failure_detector.hh" #include "gms/gossiper.hh" #include "gms/application_state.hh" +#include "service/storage_service.hh" namespace bpo = boost::program_options; @@ -15,50 +16,51 @@ int main(int ac, char ** av) { return app.run(ac, av, [&app] { auto config = app.configuration(); const gms::inet_address listen = gms::inet_address(config["listen-address"].as()); - net::get_messaging_service().start(listen).then([config] { + service::init_storage_service().then([listen, config] { + return net::get_messaging_service().start(listen); + }).then([config] { auto& server = net::get_local_messaging_service(); auto port = server.port(); auto listen = server.listen_address(); print("Messaging server listening on ip %s port %d ...\n", listen, port); - gms::get_failure_detector().start().then([config] { - gms::get_gossiper().start().then([config] { - std::set seeds; - for (auto s : config["seed"].as>()) { - seeds.emplace(std::move(s)); - } + return gms::get_failure_detector().start(); + }).then([config] { + return gms::get_gossiper().start(); + }).then([config] { + std::set seeds; + for (auto s : config["seed"].as>()) { + seeds.emplace(std::move(s)); + } - std::cout << "Start gossiper service ...\n"; - auto& gossiper = gms::get_local_gossiper(); - gossiper.set_seeds(std::move(seeds)); + std::cout << "Start gossiper service ...\n"; + auto& gossiper = gms::get_local_gossiper(); + gossiper.set_seeds(std::move(seeds)); - std::map app_states = { - { gms::application_state::LOAD, gms::versioned_value::versioned_value_factory::load(0.5) }, - }; - - int generation_number = 1; - gossiper.start(generation_number, app_states).then([] () { - auto reporter = std::make_shared>(); - reporter->set_callback ([reporter] { - auto& gossiper = gms::get_local_gossiper(); - gossiper.dump_endpoint_state_map(); - auto& fd = gms::get_local_failure_detector(); - print("%s", fd); - }); - reporter->arm_periodic(std::chrono::milliseconds(1000)); - - auto app_state_adder = std::make_shared>(); - app_state_adder->set_callback ([app_state_adder] { - static double load = 0.5; - auto& gossiper = gms::get_local_gossiper(); - auto state = gms::application_state::LOAD; - auto value = gms::versioned_value::versioned_value_factory::load(load); - gossiper.add_local_application_state(state, value); - load += 0.0001; - }); - app_state_adder->arm_periodic(std::chrono::seconds(1)); - }); - }); + std::map app_states = { + { gms::application_state::LOAD, gms::versioned_value::versioned_value_factory::load(0.5) }, + }; + int generation_number = 1; + return gossiper.start(generation_number, app_states); + }).then([] () { + auto reporter = std::make_shared>(); + reporter->set_callback ([reporter] { + auto& gossiper = gms::get_local_gossiper(); + gossiper.dump_endpoint_state_map(); + auto& fd = gms::get_local_failure_detector(); + print("%s", fd); }); + reporter->arm_periodic(std::chrono::milliseconds(1000)); + + auto app_state_adder = std::make_shared>(); + app_state_adder->set_callback ([app_state_adder] { + static double load = 0.5; + auto& gossiper = gms::get_local_gossiper(); + auto state = gms::application_state::LOAD; + auto value = gms::versioned_value::versioned_value_factory::load(load); + gossiper.add_local_application_state(state, value); + load += 0.0001; + }); + app_state_adder->arm_periodic(std::chrono::seconds(1)); }); }); }