X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fserver_container.cc;h=2d7655bcffbdba6f717f140b62c7f31a03551793;hb=00a8f6f7d315dc3fce0b0e5a1987c8663488ae1c;hp=2bea1ad96bac82040aed43edaf3380e5cf7dea82;hpb=25efe3485198149616820ab4e52d2f18f0abe5a7;p=awesomized%2Flibmemcached diff --git a/libtest/server_container.cc b/libtest/server_container.cc index 2bea1ad9..2d7655bc 100644 --- a/libtest/server_container.cc +++ b/libtest/server_container.cc @@ -75,7 +75,7 @@ void server_startup_st::push_server(Server *arg) } else { - char port_str[NI_MAXSERV]; + char port_str[NI_MAXSERV]= { 0 }; snprintf(port_str, sizeof(port_str), "%u", int(arg->port())); server_config_string+= "--server="; @@ -99,7 +99,6 @@ Server* server_startup_st::pop_server() // host_to_shutdown => host number to shutdown in array bool server_startup_st::shutdown(uint32_t host_to_shutdown) { - Error << servers.size() << " > " << host_to_shutdown; if (servers.size() > host_to_shutdown) { Server* tmp= servers[host_to_shutdown]; @@ -143,7 +142,7 @@ bool server_startup_st::shutdown() bool success= true; for (std::vector::iterator iter= servers.begin(); iter != servers.end(); ++iter) { - if ((*iter) and (*iter)->has_pid() and (*iter)->kill() == false) + if ((*iter)->has_pid() and (*iter)->kill() == false) { Error << "Unable to kill:" << *(*iter); success= false; @@ -183,7 +182,7 @@ bool server_startup_st::validate() bool server_startup(server_startup_st& construct, const std::string& server_type, in_port_t try_port, int argc, const char *argv[], const bool opt_startup_message) { - construct.start_server(server_type, try_port, argc, argv, opt_startup_message); + return construct.start_server(server_type, try_port, argc, argv, opt_startup_message); } bool server_startup_st::start_server(const std::string& server_type, in_port_t try_port, int argc, const char *argv[], const bool opt_startup_message) @@ -207,6 +206,16 @@ bool server_startup_st::start_server(const std::string& server_type, in_port_t t } } } + else if (server_type.compare("hostile-gearmand") == 0) + { + if (GEARMAND_BINARY) + { + if (HAVE_LIBGEARMAN) + { + server= build_gearmand("localhost", try_port, "gearmand/hostile_gearmand"); + } + } + } else if (server_type.compare("drizzled") == 0) { if (DRIZZLED_BINARY) @@ -278,17 +287,16 @@ bool server_startup_st::start_server(const std::string& server_type, in_port_t t server->build(argc, argv); +#if 0 if (false) { Out << "Pausing for startup, hit return when ready."; std::string gdb_command= server->base_command(); - std::string options; -#if 0 - Out << "run " << server->args(options); -#endif getchar(); } - else if (server->start() == false) + else +#endif + if (server->start() == false) { delete server; return false; @@ -303,6 +311,18 @@ bool server_startup_st::start_server(const std::string& server_type, in_port_t t } } } + catch (libtest::start err) + { + stream::cerr(err.file(), err.line(), err.func()) << err.what(); + delete server; + return false; + } + catch (libtest::disconnected err) + { + stream::cerr(err.file(), err.line(), err.func()) << err.what(); + delete server; + return false; + } catch (...) { delete server; @@ -388,17 +408,18 @@ bool server_startup_st::start_socket_server(const std::string& server_type, cons server->build(argc, argv); +#if 0 if (false) { Out << "Pausing for startup, hit return when ready."; std::string gdb_command= server->base_command(); std::string options; -#if 0 Out << "run " << server->args(options); -#endif getchar(); } - else if (server->start() == false) + else +#endif + if (server->start() == false) { Error << "Failed to start " << *server; delete server;