tests: Fix tests/urchin/gossip.cc

After commit 67f4b55b16 "gms/gossiper: Fix is_gossip_only_member() logic",
storage_service is needed by gossip.

To fix, start storage_service in the test. Also, improve the
indentation.
This commit is contained in:
Asias He
2015-07-23 09:49:42 +08:00
parent c1aed26377
commit 879ca5adaf

View File

@@ -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<std::string>());
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<gms::inet_address> seeds;
for (auto s : config["seed"].as<std::vector<std::string>>()) {
seeds.emplace(std::move(s));
}
return gms::get_failure_detector().start();
}).then([config] {
return gms::get_gossiper().start();
}).then([config] {
std::set<gms::inet_address> seeds;
for (auto s : config["seed"].as<std::vector<std::string>>()) {
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<gms::application_state, gms::versioned_value> 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<timer<lowres_clock>>();
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<timer<lowres_clock>>();
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<gms::application_state, gms::versioned_value> 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<timer<lowres_clock>>();
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<timer<lowres_clock>>();
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));
});
});
}