X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fserver_container.cc;h=2c31796f3e141c64530df63aabf99b253725e862;hb=aa6dec82d9ac8d8c48f77610aa06c0f28274fdb9;hp=f747dc229b4e47d620f1b9390a214a261c18f4db;hpb=58c279d58e2a44562f729e93e301dfedf42f530b;p=awesomized%2Flibmemcached diff --git a/libtest/server_container.cc b/libtest/server_container.cc index f747dc22..2c31796f 100644 --- a/libtest/server_container.cc +++ b/libtest/server_container.cc @@ -75,31 +75,54 @@ Server* server_startup_st::pop_server() return tmp; } -void server_startup_st::shutdown(bool remove) +bool server_startup_st::shutdown(uint32_t number_of_host) { - if (remove) + if (servers.size() > number_of_host) { - for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) + Server* tmp= servers[number_of_host]; + + if (tmp and tmp->has_pid() and not tmp->kill(tmp->pid())) + { } + else { - delete *iter; + return true; } - servers.clear(); } - else + + return false; +} + +void server_startup_st::shutdown_and_remove() +{ + for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) { - for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) + delete *iter; + } + servers.clear(); +} + +void server_startup_st::shutdown() +{ + for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) + { + if ((*iter)->has_pid() and not (*iter)->kill((*iter)->pid())) { - if ((*iter)->has_pid() and not (*iter)->kill((*iter)->pid())) - { - Error << "Unable to kill:" << *(*iter); - } + Error << "Unable to kill:" << *(*iter); } } } +void server_startup_st::restart() +{ + for (std::vector::iterator iter= servers.begin(); iter != servers.end(); iter++) + { + (*iter)->start(); + } +} + server_startup_st::~server_startup_st() { - shutdown(true); + shutdown_and_remove(); } bool server_startup_st::is_debug() const @@ -123,6 +146,8 @@ bool server_startup(server_startup_st& construct, const std::string& server_type Outn(); (void)try_port; + set_max_port(try_port); + // Look to see if we are being provided ports to use { char variable_buffer[1024]; @@ -149,33 +174,20 @@ bool server_startup(server_startup_st& construct, const std::string& server_type { server= build_gearmand("localhost", try_port); } - else - { - Error << "Libgearman was not found"; - } - } - else - { - Error << "No gearmand binary is available"; } } else if (server_type.compare("blobslap_worker") == 0) { - if (GEARMAND_BINARY and GEARMAND_BLOBSLAP_WORKER) + if (GEARMAND_BINARY) { - if (HAVE_LIBGEARMAN) + if (GEARMAND_BLOBSLAP_WORKER) { - server= build_blobslap_worker(try_port); - } - else - { - Error << "Libgearman was not found"; + if (HAVE_LIBGEARMAN) + { + server= build_blobslap_worker(try_port); + } } } - else - { - Error << "No gearmand binary is available"; - } } else if (server_type.compare("memcached-sasl") == 0) { @@ -185,14 +197,6 @@ bool server_startup(server_startup_st& construct, const std::string& server_type { server= build_memcached_sasl("localhost", try_port, construct.username(), construct.password()); } - else - { - Error << "Libmemcached was not found"; - } - } - else - { - Error << "No memcached binary that was compiled with sasl is available"; } } else if (server_type.compare("memcached") == 0) @@ -203,20 +207,8 @@ bool server_startup(server_startup_st& construct, const std::string& server_type { server= build_memcached("localhost", try_port); } - else - { - Error << "Libmemcached was not found"; - } - } - else - { - Error << "No memcached binary is available"; } } - else - { - Error << "Failed to start " << server_type << ", no support was found to be compiled in for it."; - } if (server == NULL) { @@ -227,7 +219,7 @@ bool server_startup(server_startup_st& construct, const std::string& server_type /* We will now cycle the server we have created. */ - if (not server->cycle()) + if (server->cycle() == false) { Error << "Could not start up server " << *server; delete server; @@ -244,7 +236,7 @@ bool server_startup(server_startup_st& construct, const std::string& server_type Out << "run " << server->args(options); getchar(); } - else if (not server->start()) + else if (server->start() == false) { Error << "Failed to start " << *server; delete server;