X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Ftest.cc;h=d87f1b17733b95e78ae70b0b046a32e0d065971c;hb=61bb2c3a16c0c9723bbb6492283e349a8ccdf11f;hp=49f3893b49b1d99458b6606d4f664688354b21ec;hpb=06b419b10f9a86ebc584949162c7d81eab061e8a;p=m6w6%2Flibmemcached diff --git a/libtest/test.cc b/libtest/test.cc index 49f3893b..d87f1b17 100644 --- a/libtest/test.cc +++ b/libtest/test.cc @@ -50,7 +50,12 @@ const char *default_socket() assert(global_socket[0]); return global_socket; } - + +bool test_is_local() +{ + return (getenv("LIBTEST_LOCAL")); +} + void set_default_socket(const char *socket) { strncpy(global_socket, socket, strlen(socket)); @@ -138,15 +143,18 @@ static void *sig_thread(void *arg) int error; while ((error= sigwait(set, &sig)) == EINTR) ; - std::cerr << std::endl << "Signal handling thread got signal " << strsignal(sig) << std::endl; switch (sig) { case SIGSEGV: case SIGINT: case SIGABRT: + std::cerr << std::endl << "Signal handling thread got signal " << strsignal(sig) << std::endl; __shutdown= SHUTDOWN_FORCED; + break; default: + std::cerr << std::endl << "Signal handling thread got unexpected signal " << strsignal(sig) << std::endl; + case SIGUSR1: break; } } @@ -163,6 +171,7 @@ static void setup_signals(pthread_t& thread) sigaddset(&set, SIGSEGV); sigaddset(&set, SIGABRT); sigaddset(&set, SIGINT); + sigaddset(&set, SIGUSR1); int error; if ((error= pthread_sigmask(SIG_BLOCK, &set, NULL)) != 0) @@ -196,7 +205,7 @@ int main(int argc, char *argv[]) get_world(world); test_return_t error; - void *creators_ptr= world->create(&error); + void *creators_ptr= world->create(error); if (test_failed(error)) { std::cerr << "create() failed" << std::endl; @@ -372,6 +381,10 @@ cleanup: stats_print(&stats); + void *retval; + pthread_kill(thread, SIGUSR1); + pthread_join(thread, &retval); + delete world; return stats.failed == 0 and __shutdown == SHUTDOWN_GRACEFUL ? EXIT_SUCCESS : EXIT_FAILURE;