Correct style, use of newer YATL.
authorBrian Aker <brian@tangent.org>
Thu, 24 Jan 2013 11:17:17 +0000 (06:17 -0500)
committerBrian Aker <brian@tangent.org>
Thu, 24 Jan 2013 11:17:17 +0000 (06:17 -0500)
58 files changed:
configure.ac
libtest/alarm.cc
libtest/blobslap_worker.cc
libtest/client.cc
libtest/cmdline.cc
libtest/cmdline.h
libtest/collection.cc
libtest/collection.h
libtest/comparison.hpp
libtest/dns.cc
libtest/drizzled.cc
libtest/fatal.cc
libtest/fatal.hpp
libtest/framework.cc
libtest/framework.h
libtest/gearmand.cc
libtest/http.cc
libtest/include.am
libtest/killpid.cc
libtest/main.cc
libtest/memcached.cc
libtest/port.cc
libtest/result.cc
libtest/result.hpp
libtest/result/base.hpp
libtest/result/fail.hpp
libtest/result/fatal.hpp
libtest/result/skip.hpp
libtest/runner.cc
libtest/runner.h
libtest/server.cc
libtest/server.h
libtest/server_container.cc
libtest/server_container.h
libtest/signal.cc
libtest/stream.h
libtest/strerror.cc
libtest/thread.hpp
libtest/timer.cc
libtest/timer.hpp
libtest/unittest.cc
libtest/vchar.cc
libtest/wait.h
tests/cycle.cc
tests/failure.cc
tests/libmemcached-1.0/pool.cc
tests/libmemcached_world.h
tests/libmemcached_world_socket.h
tests/memcapable.cc
tests/memcat.cc
tests/memcp.cc
tests/memdump.cc
tests/memexist.cc
tests/memflush.cc
tests/memrm.cc
tests/memslap.cc
tests/memstat.cc
tests/memtouch.cc

index 2435c69e79ca17768bf6af405ec52cd4d6aaa50b..68c9fa10fe2def02d0e7e739afea3872e0b2b7c9 100644 (file)
@@ -84,6 +84,8 @@ AM_CONDITIONAL([BUILDING_LIBMEMCACHED],[true])
 AM_CONDITIONAL([HAVE_LIBMEMCACHED],[false])
 AM_CONDITIONAL([HAVE_LIBDRIZZLE],[false])
 AC_DEFINE([HAVE_LIBMEMCACHED],[1],[Enables libmemcached Support])
+AC_SUBST([LIBMEMCACHED_CFLAGS])
+AC_SUBST([LIBMEMCACHED_LIB],[libmemcached/libmemcached.la])
 
 AM_CONDITIONAL([BUILDING_GEARMAN],[false])
 
index 80d7b2f6def1a9568a4549515f2408fd0ae313dd..a8bf17e89d3b66bcc2163b1d25ae3a5953d8a26c 100644 (file)
@@ -68,7 +68,7 @@ void set_alarm(long tv_sec, long tv_usec)
 
     if (errno != 0)
     {
-      fatal_message("Bad value for YATL_ALARM");
+      FATAL("Bad value for YATL_ALARM");
     }
     else if (tv_sec == 0)
     {
index 612847e54bafe92f674438eb13e3e452f9f955e2..5100a388628a86d3bf5a90bf5efd2e0ecac635c8 100644 (file)
@@ -146,26 +146,14 @@ public:
     return true;
   }
 
-  bool build(size_t argc, const char *argv[]);
+  bool build();
 };
 
 
 #include <sstream>
 
-bool BlobslapWorker::build(size_t argc, const char *argv[])
+bool BlobslapWorker::build()
 {
-  std::stringstream arg_buffer;
-
-  for (size_t x= 0 ; x < argc ; x++)
-  {
-    if (argv[x] == NULL)
-    {
-      break;
-    }
-
-    add_option(argv[x]);
-  }
-
   return true;
 }
 
index f3409cc8a4a39be408278a8695e5c8064bb1622b..c536e9dd47f06bbda942fbbaa7644d53dd6e3ad0 100644 (file)
@@ -198,7 +198,7 @@ bool SimpleClient::instance_connect()
         }
         else
         {
-          fatal_message(strerror(errno));
+          FATAL(strerror(errno));
         }
         address_info_next= address_info_next->ai_next;
       }
index c8b63eece89de8356b487daf5ecc281d2f01677e..df4ae1f3e132058e42ce1e2fb4d9ad6ee0045269 100644 (file)
@@ -138,7 +138,7 @@ Application::Application(const std::string& arg, const bool _use_libtool_arg) :
     {
       if (libtool() == NULL)
       {
-        fatal_message("libtool requested, but know libtool was found");
+        FATAL("libtool requested, but know libtool was found");
       }
     }
 
@@ -366,15 +366,15 @@ bool Application::slurp()
 
     case EFAULT:
     case ENOMEM:
-      fatal_message(strerror(error));
+      FATAL(strerror(error));
       break;
 
     case EINVAL:
-      fatal_message("RLIMIT_NOFILE exceeded, or if OSX the timeout value was invalid");
+      FATAL("RLIMIT_NOFILE exceeded, or if OSX the timeout value was invalid");
       break;
 
     default:
-      fatal_message(strerror(error));
+      FATAL(strerror(error));
       break;
     }
 
@@ -589,18 +589,17 @@ void Application::Pipe::reset()
   if (pipe(_pipe_fd) == -1)
 #endif
   {
-    fatal_message(strerror(errno));
+    FATAL(strerror(errno));
   }
   _open[0]= true;
   _open[1]= true;
 
 #if defined(HAVE_PIPE2) && HAVE_PIPE2
-  return;
-#endif
   {
     nonblock();
     cloexec();
   }
+#endif
 }
 
 void Application::Pipe::cloexec()
@@ -656,14 +655,12 @@ void Application::Pipe::dup_for_spawn(posix_spawn_file_actions_t& file_actions)
   int ret;
   if ((ret= posix_spawn_file_actions_adddup2(&file_actions, _pipe_fd[type], _std_fd )) < 0)
   {
-    Error << "posix_spawn_file_actions_adddup2(" << strerror(ret) << ")";
-    fatal_message(strerror(ret));
+    FATAL("posix_spawn_file_actions_adddup2(%s)", strerror(ret));
   }
 
   if ((ret= posix_spawn_file_actions_addclose(&file_actions, _pipe_fd[type])) < 0)
   {
-    Error << "posix_spawn_file_actions_adddup2(" << strerror(ret) << ")";
-    fatal_message(strerror(ret));
+    FATAL("posix_spawn_file_actions_addclose(%s)", strerror(ret));
   }
 }
 
index d150ff59096654d4d0ba99c73d2272ff8e8021bd..8db4804a1081010678001b876c73b23daffb00d3 100644 (file)
 
 #pragma once
 
-#ifdef _WIN32
-typedef int posix_spawn_file_actions_t;
-#else
-# include <spawn.h>
-#endif
-
-#include <pthread.h>
+#include <spawn.h>
 
 // http://www.gnu.org/software/automake/manual/automake.html#Using-the-TAP-test-protocol
 #ifndef EXIT_SKIP
@@ -54,11 +48,11 @@ typedef int posix_spawn_file_actions_t;
 #endif
 
 #ifndef EX_NOEXEC
-#  define EX_NOEXEC 126
+# define EX_NOEXEC 126
 #endif
 
 #ifndef EX_NOTFOUND
-#  define EX_NOTFOUND 127
+# define EX_NOTFOUND 127
 #endif
 
 namespace libtest {
index 1b4915e13d75ac1802e40a9cd37906b83fb814ad..86e7f864a922c4034cf29f32b1495d660be9bcd0 100644 (file)
@@ -55,7 +55,7 @@ static test_return_t runner_code(libtest::Framework* frame,
   }
   // Special case where check for the testing of the exception
   // system.
-  catch (libtest::fatal &e)
+  catch (const libtest::fatal& e)
   {
     if (libtest::fatal::is_disabled())
     {
@@ -133,7 +133,7 @@ test_return_t Collection::exec()
         }
         libtest::cancel_alarm();
       }
-      catch (libtest::fatal &e)
+      catch (const libtest::fatal& e)
       {
         stream::cerr(e.file(), e.line(), e.func()) << e.what();
         _failed++;
@@ -159,7 +159,7 @@ test_return_t Collection::exec()
         break;
 
       default:
-        fatal_message("invalid return code");
+        FATAL("invalid return code");
       }
 #if 0
       @TODO add code here to allow for a collection to define a method to reset to allow tests to continue.
index bc879e3091d79f94592613b6c049c6c5f859b2f6..a9f9cba843014229bfb88e79c316b7a3d320130a 100644 (file)
@@ -103,6 +103,10 @@ private:
   uint32_t _total;
   libtest::Timer _timer;
   libtest::Formatter _formatter;
+
+private:
+  Collection( const Collection& );
+  const Collection& operator=( const Collection& );
 };
 
 } // namespace libtest
index dcbcefd85723fdd164aaa30077fd0c6959d3d117..c67bc33f1a04b2ebad0fb5a7f91de402b4340036 100644 (file)
@@ -95,7 +95,7 @@ bool _compare_strcmp(const char *file, int line, const char *func, const T1_comp
 {
   if (__expected == NULL)
   {
-    fatal_message("Expected value was NULL, programmer error");
+    FATAL("Expected value was NULL, programmer error");
   }
 
   if (__actual == NULL)
index e8e1e7fc8cc3993f2955ba3433f133d5749a6d9d..0becfc99107f22068e22d512ab9cc2e971989754 100644 (file)
@@ -61,7 +61,6 @@ bool lookup(const char* host)
       }
 
       int ret;
-      fprintf(stderr, ":%s:\n", host);
       if ((ret= getaddrinfo(host, NULL, NULL, &addrinfo)) == 0)
       {
         success= true;
index 16933c4bdab08e09a0573c5b8b629223e437f0c8..b8068ac89a310c98629609aec6a2ecfe9af4a366 100644 (file)
@@ -62,7 +62,7 @@ using namespace libtest;
 #endif
 
 #if defined(HAVE_LIBDRIZZLE) && HAVE_LIBDRIZZLE
-#include <libdrizzle-1.0/drizzle_client.h>
+# include <libdrizzle-5.1/drizzle_client.h>
 #endif
 
 using namespace libtest;
@@ -72,31 +72,25 @@ bool ping_drizzled(const in_port_t _port)
 {
   (void)(_port);
 #if defined(HAVE_LIBDRIZZLE) && HAVE_LIBDRIZZLE
+  if (HAVE_LIBDRIZZLE)
   {
-    drizzle_st *drizzle= drizzle_create(NULL);
+    drizzle_st *drizzle= drizzle_create_tcp(getenv("MYSQL_SERVER"),
+                                            getenv("MYSQL_PORT") ? atoi("MYSQL_PORT") : DRIZZLE_DEFAULT_TCP_PORT,
+                                            getenv("MYSQL_USER"),
+                                            getenv("MYSQL_PASSWORD"),
+                                            getenv("MYSQL_SCHEMA"), drizzle_options_t());
 
     if (drizzle == NULL)
     {
       return false;
     }
 
-    drizzle_con_st *con;
-
-    if ((con= drizzle_con_create(drizzle, NULL)) == NULL)
-    {
-      drizzle_free(drizzle);
-      return false;
-    }
-
-    drizzle_con_set_tcp(con, "localhost", _port);
-    drizzle_con_set_auth(con, "root", 0);
-
     bool success= false;
 
     drizzle_return_t rc;
-    if ((rc= drizzle_con_connect(con)) == DRIZZLE_RETURN_OK)
+    if ((rc= drizzle_connect(drizzle)) == DRIZZLE_RETURN_OK)
     {
-      drizzle_result_st *result= drizzle_ping(con, NULL, &rc);
+      drizzle_result_st *result= drizzle_ping(drizzle, &rc);
       success= bool(result);
       drizzle_result_free(result);
     }
@@ -108,8 +102,7 @@ bool ping_drizzled(const in_port_t _port)
       Error << drizzle_error(drizzle) << " localhost:" << _port;
     }
 
-    drizzle_con_free(con);
-    drizzle_free(drizzle);
+    drizzle_quit(drizzle);
 
     return success;
   }
@@ -189,10 +182,10 @@ public:
     }
   }
 
-  bool build(size_t argc, const char *argv[]);
+  bool build();
 };
 
-bool Drizzle::build(size_t argc, const char *argv[])
+bool Drizzle::build()
 {
   if (getuid() == 0 or geteuid() == 0)
   {
@@ -204,16 +197,6 @@ bool Drizzle::build(size_t argc, const char *argv[])
   add_option("--datadir=var/drizzle");
 #endif
 
-  for (size_t x= 0 ; x < argc ; x++)
-  {
-    if (argv[x] == NULL)
-    {
-      break;
-    }
-
-    add_option(argv[x]);
-  }
-
   return true;
 }
 
index 99b15535e0ea45b4641c2b082d8f6a85ff152269..0ed06c2cd9496e8a4ebeb7102f2b77d3c1208050 100644 (file)
@@ -43,72 +43,45 @@ namespace libtest {
 #pragma GCC diagnostic ignored "-Wformat-nonliteral"
 
 fatal::fatal(const char *file_arg, int line_arg, const char *func_arg, ...) :
-  __test_result(file_arg, line_arg, func_arg),
-  _error_message(NULL),
-  _error_message_size(0)
+  __test_result(file_arg, line_arg, func_arg)
 {
   va_list args;
   va_start(args, func_arg);
-  const char *format= va_arg(args, const char *);
-  _error_message_size= vasprintf(&_error_message, format, args);
-  assert(_error_message_size != -1);
-  if (_error_message_size > 0)
-  {
-    _error_message_size++;
-  }
+  init(args);
   va_end(args);
 }
 
 fatal::fatal( const fatal& other ) :
-  __test_result(other),
-  _error_message_size(other._error_message_size)
-{
-  _error_message= (char*) malloc(_error_message_size);
-  if (_error_message)
-  {
-    memcpy(_error_message, other._error_message, _error_message_size);
-  }
-  else
-  {
-    _error_message_size= -1;
-  }
-}
-
-fatal::~fatal() throw()
+  __test_result(other)
 {
-  if ((_error_message_size > 0) and _error_message)
-  {
-    free(_error_message);
-    _error_message= NULL;
-  }
 }
 
 static bool _disabled= false;
 static uint32_t _counter= 0;
 
-bool fatal::is_disabled()
+bool fatal::is_disabled() throw()
 {
   return _disabled;
 }
 
-void fatal::disable()
+void fatal::disable() throw()
 {
   _counter= 0;
   _disabled= true;
 }
 
-void fatal::enable()
+void fatal::enable() throw()
 {
   _counter= 0;
   _disabled= false;
 }
 
-uint32_t fatal::disabled_counter()
+uint32_t fatal::disabled_counter() throw()
 {
   return _counter;
 }
 
-void fatal::increment_disabled_counter()
+void fatal::increment_disabled_counter() throw()
 {
   _counter++;
 }
@@ -132,4 +105,15 @@ disconnected::disconnected(const char *file_arg, int line_arg, const char *func_
   snprintf(_error_message, sizeof(_error_message), "%s:%u %s", instance.c_str(), uint32_t(port), last_error);
 }
 
+disconnected::disconnected(const disconnected& other):
+  std::runtime_error(other._func),
+  _port(other._port),
+  _line(other._line),
+  _file(other._file),
+  _func(other._func)
+{
+  strncpy(_error_message, other._error_message, BUFSIZ);
+  strncpy(_instance, other._instance, BUFSIZ);
+}
+
 } // namespace libtest
index 7e627a46bee54b95787af6df8e1ed08df3961bb3..c679f9b0844d87961d23728619621ef3bce4d857 100644 (file)
 
 namespace libtest {
 
-class disconnected : std::runtime_error
+class disconnected : public std::runtime_error
 {
 public:
   disconnected(const char *file, int line, const char *func, const std::string&, const in_port_t port, ...);
 
   const char* what() const throw()
   {
-    return &_error_message[0];
+    return _error_message;
   }
 
+  disconnected(const disconnected&);
+
   // The following are just for unittesting the exception class
   static bool is_disabled();
   static void disable();
-
+  static void enable();
   static uint32_t disabled_counter();
   static void increment_disabled_counter();
 
-  int line()
+  int line() const
   {
     return _line;
   }
 
-  const char* file()
+  const char* file() const
   {
     return _file;
   }
 
-  const char* func()
+  const char* func() const
   {
     return _func;
   }
@@ -75,7 +77,7 @@ public:
 private:
   char _error_message[BUFSIZ];
   in_port_t _port;
-  char _instance[1024];
+  char _instance[BUFSIZ];
   int _line;
   const char*  _file;
   const char* _func;
index 546ccb37590034e50865a989f2d3d9929513f38a..30f511afdbf484850dc5cb18125888e8f332040d 100644 (file)
@@ -133,12 +133,12 @@ void Framework::exec()
         break;
       }
     }
-    catch (libtest::fatal& e)
+    catch (const libtest::fatal& e)
     {
       _failed++;
       stream::cerr(e.file(), e.line(), e.func()) << e.what();
     }
-    catch (libtest::disconnected& e)
+    catch (const libtest::disconnected& e)
     {
       _failed++;
       Error << "Unhandled disconnection occurred:" << e.what();
index f6dfc94a4be3ed6a6a18cb1528e03d253231fcc0..7a24466a5ab9c7254d8f4b3a3db4de2155e98a98 100644 (file)
@@ -162,8 +162,6 @@ public:
   }
 
 private:
-  Framework& operator=(const Framework&);
-
   uint32_t _total;
   uint32_t _success;
   uint32_t _skipped;
@@ -193,6 +191,10 @@ private:
   std::string _only_run;
   std::string _wildcard;
   std::string _name;
+
+private:
+  Framework( const Framework& );
+  const Framework& operator=( const Framework& );
 };
 
 } // namespace libtest
index d9dcf19248c719dc84b6b21983f5730d222f9c87..852cf19496e829c88cbbc311378d876f97507434 100644 (file)
@@ -123,7 +123,7 @@ public:
     return true;
   }
 
-  bool build(size_t argc, const char *argv[]);
+  bool build();
 };
 
 Gearmand::Gearmand(const std::string& host_arg, in_port_t port_arg, bool libtool_, const char* binary_arg) :
@@ -132,7 +132,7 @@ Gearmand::Gearmand(const std::string& host_arg, in_port_t port_arg, bool libtool
   set_pid_file();
 }
 
-bool Gearmand::build(size_t argc, const char *argv[])
+bool Gearmand::build()
 {
   if (getuid() == 0 or geteuid() == 0)
   {
@@ -141,16 +141,6 @@ bool Gearmand::build(size_t argc, const char *argv[])
 
   add_option("--listen=localhost");
 
-  for (size_t x= 0 ; x < argc ; x++)
-  {
-    if (argv[x] == NULL)
-    {
-      break;
-    }
-
-    add_option(argv[x]);
-  }
-
   return true;
 }
 
index 917e668fad7df9a060e4b429b86af5520ec04a64..621c714c2f1c616166a105d21b7c0fca90d6bdbd 100644 (file)
@@ -57,13 +57,13 @@ static void initialize_curl_startup()
 #if defined(HAVE_LIBCURL) && HAVE_LIBCURL
   if (curl_global_init(CURL_GLOBAL_ALL))
   {
-    fatal_message("curl_global_init(CURL_GLOBAL_ALL) failed");
+    FATAL("curl_global_init(CURL_GLOBAL_ALL) failed");
   }
 #endif
 
   if (atexit(cleanup_curl))
   {
-    fatal_message("atexit() failed");
+    FATAL("atexit() failed");
   }
 }
 
@@ -73,7 +73,7 @@ static void initialize_curl(void)
   int ret;
   if ((ret= pthread_once(&start_key_once, initialize_curl_startup)) != 0)
   {
-    fatal_message(strerror(ret));
+    FATAL(strerror(ret));
   }
 }
 
index 906417838e46567515bf5528aff3d39398843866..14a9547261bb906b882a35f86930af720c2daad5 100644 (file)
@@ -13,6 +13,7 @@ MASSIF_COMMAND= $(LIBTOOL_COMMAND) valgrind --tool=massif
 GDB_COMMAND= $(LIBTOOL_COMMAND) gdb -f -x libtest/run.gdb
 PTRCHECK_COMMAND= $(LIBTOOL_COMMAND) valgrind --tool=exp-ptrcheck --error-exitcode=1
 PAHOLE_COMMAND= $(LIBTOOL_COMMAND) --mode=execute pahole
+VALGRIND_SUPRESSION= $(LIBTOOL_COMMAND) valgrind --leak-check=full --show-reachable=yes --error-limit=no --gen-suppressions=all --log-file=minimalraw.log
 
 export LIBTOOL_COMMAND
 export VALGRIND_COMMAND
@@ -23,6 +24,9 @@ export GDB_COMMAND
 valgrind:
        @echo make check TESTS_ENVIRONMENT="\"$(VALGRIND_EXEC_COMMAND)\""
 
+valgrind-supressions:
+       @echo make check TESTS_ENVIRONMENT="\"$(VALGRIND_SUPRESSION)\""
+
 gdb:
        @echo make check TESTS_ENVIRONMENT="\"$(GDB_COMMAND)\""
 
@@ -104,6 +108,8 @@ libtest_libtest_la_CXXFLAGS=
 EXTRA_libtest_libtest_la_DEPENDENCIES=
 libtest_libtest_la_LIBADD=
 libtest_libtest_la_SOURCES=
+libtest_libtest_la_CXXFLAGS+= @LIBMEMCACHED_CFLAGS@
+libtest_libtest_la_LIBADD+= @LIBMEMCACHED_LIB@
 
 libtest_libtest_la_SOURCES+= libtest/alarm.cc
 libtest_libtest_la_SOURCES+= libtest/binaries.cc
@@ -153,16 +159,13 @@ EXTRA_libtest_libtest_la_DEPENDENCIES+=libtest/wait
 # Declare unittest so that we can append to it
 libtest_unittest_CXXFLAGS=
 libtest_unittest_LDADD=
+libtest_libtest_la_LDFLAGS=
 
 # We are either building in tree, or with
 libtest_libtest_la_SOURCES+= libtest/memcached.cc
 
-if HAVE_LIBDRIZZLE
-
-libtest_libtest_la_LIBADD+= $(libdrizzle_LIBS)
-libtest_libtest_la_CXXFLAGS+= $(libdrizzle_CFLAGS)
-
-endif
+libtest_libtest_la_LDFLAGS+= @LIBDRIZZLE_LDFLAGS@
+libtest_libtest_la_LIBADD+= @LIBDRIZZLE_LIB@
 
 libtest_libtest_la_SOURCES+= libtest/gearmand.cc
 
index 7f5630bacaf9b43f95fb9b32b0deb3b37311df42..2cefff2c60642170b414b86a5ebf344dcecb0507 100644 (file)
@@ -86,7 +86,7 @@ bool kill_pid(pid_t pid_arg)
     uint32_t waited;
     uint32_t retry;
 
-    for (waited= 0, retry= 4; ; retry++, waited+= this_wait)
+    for (waited= 0, retry= 1; ; retry++, waited+= this_wait)
     {
       int status= 0;
       if (waitpid(pid_arg, &status, WNOHANG) == 0)
index 588512d1a5ef78652f4299ca2be02be30cb0206d..fe8938b97d84919edb54d23e5a0d64de843334f5 100644 (file)
@@ -299,7 +299,7 @@ int main(int argc, char *argv[])
           return EXIT_FAILURE;
         }
       }
-      catch (libtest::__skipped e)
+      catch (const libtest::__skipped& e)
       {
         return EXIT_SKIP;
       }
@@ -345,26 +345,26 @@ int main(int argc, char *argv[])
       Outn(); // Generate a blank to break up the messages if make check/test has been run
     } while (exit_code == EXIT_SUCCESS and --opt_repeat);
   }
-  catch (libtest::__skipped e)
+  catch (const libtest::__skipped& e)
   {
     return EXIT_SKIP;
   }
-  catch (libtest::__failure e)
+  catch (const libtest::__failure& e)
   {
     libtest::stream::make_cout(e.file(), e.line(), e.func()) << e.what();
     exit_code= EXIT_FAILURE;
   }
-  catch (libtest::fatal& e)
+  catch (const libtest::fatal& e)
   {
     std::cerr << "FATAL:" << e.what() << std::endl;
     exit_code= EXIT_FAILURE;
   }
-  catch (libtest::disconnected& e)
+  catch (const libtest::disconnected& e)
   {
     std::cerr << "Unhandled disconnection occurred:" << e.what() << std::endl;
     exit_code= EXIT_FAILURE;
   }
-  catch (std::exception& e)
+  catch (const std::exception& e)
   {
     std::cerr << "std::exception:" << e.what() << std::endl;
     exit_code= EXIT_FAILURE;
index 2c150f9048a620fc7dcbf1d0831c624997a0a4d7..24bc3b8d18352da7d19656678e1cd6ef79d62a57 100644 (file)
@@ -188,13 +188,13 @@ public:
     return true;
   }
 
-  bool build(size_t argc, const char *argv[]);
+  bool build();
 };
 
 
 #include <sstream>
 
-bool Memcached::build(size_t argc, const char *argv[])
+bool Memcached::build()
 {
   if (getuid() == 0 or geteuid() == 0)
   {
@@ -202,7 +202,8 @@ bool Memcached::build(size_t argc, const char *argv[])
   }
 
   add_option("-l", "localhost");
-#ifndef TARGET_OS_OSX
+#ifdef __APPLE__
+#else
   add_option("-m", "128");
   add_option("-M");
 #endif
@@ -212,16 +213,6 @@ bool Memcached::build(size_t argc, const char *argv[])
     add_option(sasl());
   }
 
-  for (size_t x= 0 ; x < argc ; x++)
-  {
-    if (argv[x] == NULL)
-    {
-      break;
-    }
-
-    add_option(argv[x]);
-  }
-
   return true;
 }
 
index 1d3f4e5f50d8cffdeab3d47ab2d4722f26686051..d8e8c12d566beca74fc96836a9f0635b67342b5a 100644 (file)
@@ -204,22 +204,22 @@ in_port_t get_free_port()
   // We handle the case where if we max out retries, we still abort.
   if (retries == 0)
   {
-    fatal_message("No port could be found, exhausted retry");
+    FATAL("No port could be found, exhausted retry");
   }
 
   if (ret_port == 0)
   {
-    fatal_message("No port could be found");
+    FATAL("No port could be found");
   }
 
   if (ret_port == default_port)
   {
-    fatal_message("No port could be found");
+    FATAL("No port could be found");
   }
 
   if (ret_port <= 1024)
   {
-    fatal_message("No port could be found, though some where available below or at 1024");
+    FATAL("No port could be found, though some where available below or at 1024");
   }
 
   all_socket_fd.last_port= ret_port;
index ae37e8d24fd5ae7920db90acb9f1084bb9a95f59..9a1c8fba4eae58f09b613faf0dcd01beaec187d1 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  Data Differential YATL (i.e. libtest)  library
  *
- *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *  Copyright (C) 2012-2013 Data Differential, http://datadifferential.com/
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that the following conditions are
 #include <libtest/common.h>
 #include <cstdarg>
 
-#ifndef __INTEL_COMPILER
-# pragma GCC diagnostic ignored "-Wformat-nonliteral"
-#endif
-
 namespace libtest {
 
 __test_result::__test_result(const char *file_arg, int line_arg, const char *func_arg):
   _line(line_arg),
   _file(file_arg),
-  _func(func_arg)
-{
-}
-
-__success::__success(const char *file_arg, int line_arg, const char *func_arg):
-  __test_result(file_arg, line_arg, func_arg)
+  _func(func_arg),
+  _error_message(NULL),
+  _error_message_size(0)
 {
 }
 
-__skipped::__skipped(const char *file_arg, int line_arg, const char *func_arg, ...):
-  __test_result(file_arg, line_arg, func_arg),
-  _error_message(NULL),
-  _error_message_size(0)
+#ifndef __INTEL_COMPILER
+# pragma GCC diagnostic ignored "-Wformat-nonliteral"
+#endif
+void __test_result::init(va_list args_)
 {
-  va_list args;
-  va_start(args, func_arg);
-  const char *format= va_arg(args, const char *);
-  _error_message_size= vasprintf(&_error_message, format, args);
+  const char *format= va_arg(args_, const char *);
+  _error_message_size= vasprintf(&_error_message, format, args_);
   assert(_error_message_size != -1);
   if (_error_message_size > 0)
   {
     _error_message_size++;
   }
-  va_end(args);
 }
 
-__skipped::__skipped( const __skipped& other ) :
-  __test_result(other),
+__test_result::~__test_result() throw()
+{
+  free(_error_message);
+}
+
+__test_result::__test_result(const __test_result& other) :
+  _line(other._line),
+  _file(other._file),
+  _func(other._func),
   _error_message_size(other._error_message_size)
 {
-  _error_message= (char*) malloc(_error_message_size);
-  if (_error_message)
-  {
-    memcpy(_error_message, other._error_message, _error_message_size);
-  }
-  else
+  if (_error_message_size > 0)
   {
-    _error_message_size= -1;
+    _error_message= (char*) malloc(_error_message_size);
+    if (_error_message)
+    {
+      memcpy(_error_message, other._error_message, _error_message_size);
+    }
+    else
+    {
+      _error_message_size= -1;
+    }
   }
 }
 
-__skipped::~__skipped() throw()
+__success::__success(const char *file_arg, int line_arg, const char *func_arg):
+  __test_result(file_arg, line_arg, func_arg)
 {
-  if ((_error_message_size > 0) and _error_message)
-  {
-    free(_error_message);
-    _error_message= NULL;
-  }
 }
 
-__failure::__failure(const char *file_arg, int line_arg, const char *func_arg, ...) :
-  __test_result(file_arg, line_arg, func_arg),
-  _error_message(NULL),
-  _error_message_size(0)
+__skipped::__skipped(const char *file_arg, int line_arg, const char *func_arg, ...):
+  __test_result(file_arg, line_arg, func_arg)
 {
   va_list args;
   va_start(args, func_arg);
-  const char *format= va_arg(args, const char *);
-  _error_message_size= vasprintf(&_error_message, format, args);
-  assert(_error_message_size != -1);
-  if (_error_message_size > 0)
-  {
-    _error_message_size++;
-  }
+  init(args);
   va_end(args);
 }
 
-__failure::__failure( const __failure& other ) :
-  __test_result(other),
-  _error_message_size(other._error_message_size)
+__skipped::__skipped(const __skipped& other) :
+  __test_result(other)
 {
-  _error_message= (char*) malloc(_error_message_size);
-  if (_error_message)
-  {
-    memcpy(_error_message, other._error_message, _error_message_size);
-  }
-  else
-  {
-    _error_message_size= -1;
-  }
 }
 
-__failure::~__failure() throw()
+__failure::__failure(const char *file_arg, int line_arg, const char *func_arg, ...) :
+  __test_result(file_arg, line_arg, func_arg)
+{
+  va_list args;
+  va_start(args, func_arg);
+  init(args);
+  va_end(args);
+}
+
+__failure::__failure(const __failure& other) :
+  __test_result(other)
 {
-  if ((_error_message_size > 0) and _error_message)
-  {
-    free(_error_message);
-    _error_message= NULL;
-  }
 }
 
 
index a55926403c111a7e80e244e3a4b104becc924914..0c78b9980f5469eb2a31ac235b796c36237fe180 100644 (file)
@@ -57,10 +57,26 @@ do \
   throw libtest::__failure(LIBYATL_DEFAULT_PARAM, __VA_ARGS__); \
 } while (0)
 
-#define fatal_message(...) \
+#define FATAL(...) \
 do \
 { \
   throw libtest::fatal(LIBYATL_DEFAULT_PARAM, __VA_ARGS__); \
 } while (0)
 
+#define FATAL_IF(__expression, ...) \
+do \
+{ \
+  if ((__expression)) { \
+    throw libtest::fatal(LIBYATL_DEFAULT_PARAM, (#__expression)); \
+  } \
+} while (0)
+
+#define FATAL_IF_(__expression, ...) \
+do \
+{ \
+  if ((__expression)) { \
+    throw libtest::fatal(LIBYATL_DEFAULT_PARAM, __VA_ARGS__); \
+  } \
+} while (0)
+
 #define fatal_assert(__assert) if((__assert)) {} else { throw libtest::fatal(LIBYATL_DEFAULT_PARAM, #__assert); }
index 1859c22a925c39fc2a978eb3f04aae7e383e3ea5..51ee995d4463cbf81a114cd817ff8d29c251a5d2 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  Data Differential YATL (i.e. libtest)  library
  *
- *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *  Copyright (C) 2012-2013 Data Differential, http://datadifferential.com/
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that the following conditions are
@@ -43,32 +43,44 @@ class __test_result : public std::exception
 public:
   __test_result(const char *file, int line, const char *func);
 
-  __test_result( const __test_result& other ) :
-    _line(other._line),
-    _file(other._file),
-    _func(other._func)
+  __test_result( const __test_result& );
+
+  virtual ~__test_result() throw();
+
+  virtual const char* what() const throw()
   {
+    if (_error_message)
+    {
+      return _error_message;
+    }
+
+    return "";
   }
 
-  int line()
+  int line() const
   {
     return _line;
   }
 
-  const char*  file()
+  const char*  file() const
   {
     return _file;
   }
 
-  const char* func()
+  const char* func() const
   {
     return _func;
   }
 
+protected:
+  void init(va_list);
+
 private:
   int _line;
   const char*  _file;
   const char* _func;
+  char* _error_message;
+  int _error_message_size;
 };
 
 } // namespace libtest
index dae4a08bc496821a7cd8d00fed2c726cfed8166b..fd8766a9a85a771b9fff5a83311e270d4c98995f 100644 (file)
@@ -43,19 +43,9 @@ class __failure : public __test_result
 public:
   __failure(const char *file, int line, const char *func, ...);
 
-  __failure(const __failure& other);
-
-  ~__failure() throw();
-
-  const char* what() const throw()
-  {
-    return _error_message;
-  }
+  __failure(const __failure&);
 
 private:
-  char* _error_message;
-  int _error_message_size;
 };
 
 } // namespace libtest
-
index deebb3582cc7488c66bbb05a49c61eb2d79dcda4..8e6d13464616b93c0348625feb9db01b98ab66cf 100644 (file)
@@ -45,23 +45,14 @@ public:
 
   fatal(const fatal&);
 
-  ~fatal() throw();
-
-  const char* what() const throw()
-  {
-    return &_error_message[0];
-  }
-
   // The following are just for unittesting the exception class
-  static bool is_disabled();
-  static void disable();
-  static void enable();
-  static uint32_t disabled_counter();
-  static void increment_disabled_counter();
+  static bool is_disabled() throw();
+  static void disable() throw();
+  static void enable() throw();
+  static uint32_t disabled_counter() throw();
+  static void increment_disabled_counter() throw();
 
 private:
-  char* _error_message;
-  int _error_message_size;
 };
 
 } // namespace libtest
index 663044fe34a3c71aea27ccd1cf9fafc62adaead7..d0226e9f82a942444897f53dce8bfd4abf349008 100644 (file)
@@ -44,17 +44,6 @@ public:
   __skipped(const char *file, int line, const char *func, ...);
 
   __skipped(const __skipped&);
-
-  ~__skipped() throw();
-
-  const char* what() const throw()
-  {
-    return &_error_message[0];
-  }
-
-private:
-  char* _error_message;
-  int _error_message_size;
 };
 
 } // namespace libtest
index fdabb7c61e2c5ed3c018244e1b6447d236b2175b..2f94ad37b870602333f6966389e7eee2f9bdf578 100644 (file)
@@ -50,24 +50,24 @@ test_return_t Runner::main(test_callback_fn* func, void *object)
   try {
     ret= run(func, object);
   }
-  catch (libtest::__skipped e)
+  catch (const libtest::__skipped& e)
   {
     ret= TEST_SKIPPED;
   }
-  catch (libtest::__failure e)
+  catch (const libtest::__failure& e)
   {
     libtest::stream::make_cerr(e.file(), e.line(), e.func()) << e.what();
     ret= TEST_FAILURE;
   }
-  catch (libtest::__success)
+  catch (const libtest::__success&)
   {
     ret= TEST_SUCCESS;
   }
-  catch (libtest::fatal& e)
+  catch (const libtest::fatal&)
   {
     throw;
   }
-  catch (std::exception& e)
+  catch (const std::exception& e)
   {
     libtest::stream::make_cerr(LIBYATL_DEFAULT_PARAM) << e.what();
     throw;
@@ -87,24 +87,24 @@ test_return_t Runner::setup(test_callback_fn* func, void *object)
   try {
     ret= pre(func, object);
   }
-  catch (libtest::__skipped e)
+  catch (const libtest::__skipped& e)
   {
     ret= TEST_SKIPPED;
   }
-  catch (libtest::__failure e)
+  catch (const libtest::__failure& e)
   {
     libtest::stream::make_cout(e.file(), e.line(), e.func()) << e.what();
     ret= TEST_FAILURE;
   }
-  catch (libtest::__success)
+  catch (const libtest::__success&)
   {
     ret= TEST_SUCCESS;
   }
-  catch (libtest::fatal& e)
+  catch (const libtest::fatal& e)
   {
     throw;
   }
-  catch (std::exception& e)
+  catch (const std::exception& e)
   {
     libtest::stream::make_cerr(LIBYATL_DEFAULT_PARAM) << e.what();
     throw;
@@ -124,24 +124,24 @@ test_return_t Runner::teardown(test_callback_fn* func, void *object)
   try {
     ret= post(func, object);
   }
-  catch (libtest::__skipped e)
+  catch (const libtest::__skipped& e)
   {
     ret= TEST_SKIPPED;
   }
-  catch (libtest::__failure e)
+  catch (const libtest::__failure& e)
   {
     libtest::stream::make_cerr(LIBYATL_DEFAULT_PARAM) << e.what();
     ret= TEST_FAILURE;
   }
-  catch (libtest::__success)
+  catch (const libtest::__success&)
   {
     ret= TEST_SUCCESS;
   }
-  catch (libtest::fatal& e)
+  catch (const libtest::fatal& e)
   {
     throw;
   }
-  catch (std::exception& e)
+  catch (const std::exception& e)
   {
     libtest::stream::make_cerr(LIBYATL_DEFAULT_PARAM) << e.what();
     throw;
index d90b70e45a86596f85fd7f42436acf3c9661124e..627a0a8ef50228cff23fa1e648f5f9f4749cdbbf 100644 (file)
@@ -64,6 +64,10 @@ public:
 
 private:
   libtest::server_startup_st* _servers;
+
+private:
+  Runner( const Runner& );
+  const Runner& operator=( const Runner& );
 };
 
 } // namespace Runner
index 522120be3e3f6c79081a49687c3cab368d502866..d024d054ab02e4e6d1e284c7a601930f49f8238e 100644 (file)
@@ -124,7 +124,7 @@ Server::Server(const std::string& host_arg, const in_port_t port_arg,
 
 Server::~Server()
 {
-  murder();
+  kill();
 }
 
 bool Server::check()
@@ -148,7 +148,7 @@ bool Server::cycle()
   while (--limit and 
          is_pid_valid(_app.pid()))
   {
-    if (murder())
+    if (kill())
     {
       Log << "Killed existing server," << *this;
       dream(0, 50000);
@@ -173,6 +173,22 @@ bool Server::wait_for_pidfile() const
   return wait.successful();
 }
 
+bool Server::init(const char *argv[])
+{
+  if (argv)
+  {
+    for (const char **ptr= argv; *ptr ; ++ptr)
+    {
+      if (ptr)
+      {
+        add_option(*ptr);
+      }
+    }
+  }
+
+  return build();
+}
+
 bool Server::has_pid() const
 {
   return (_app.pid() > 1);
@@ -498,7 +514,7 @@ bool Server::args(Application& app)
   return true;
 }
 
-bool Server::murder()
+bool Server::kill()
 {
   if (check_pid(_app.pid())) // If we kill it, reset
   {
index 5b26fcddde2f1e10b9a005ee0917f63647650179..bbebe95714c2b000a9d2ee353175a8c9606cb57e 100644 (file)
 #include <cassert>
 #include <cstdio>
 #include <cstring>
-
 #include <netdb.h>
 #include <netinet/in.h>
-
 #include <string>
 #include <unistd.h>
 #include <vector>
@@ -179,7 +177,8 @@ public:
 
   virtual bool ping()= 0;
 
-  virtual bool build(size_t argc, const char *argv[])= 0;
+  bool init(const char *argv[]);
+  virtual bool build()= 0;
 
   void add_option(const std::string&);
   void add_option(const std::string&, const std::string&);
@@ -251,7 +250,7 @@ public:
 
   std::string log_and_pid();
 
-  bool murder();
+  bool kill();
   bool start();
   bool command(libtest::Application& app);
 
index cc1e0a566b3409b7e0e0f05f4e534c52e1a570e1..3a5a7a0e3eaf14eff0cb7da20c21384fb1b827ad 100644 (file)
@@ -103,7 +103,7 @@ bool server_startup_st::shutdown(uint32_t host_to_shutdown)
   {
     Server* tmp= servers[host_to_shutdown];
 
-    if (tmp and tmp->murder() == false)
+    if (tmp and tmp->kill() == false)
     { }
     else
     {
@@ -139,7 +139,7 @@ bool server_startup_st::shutdown()
   bool success= true;
   for (std::vector<Server *>::iterator iter= servers.begin(); iter != servers.end(); ++iter)
   {
-    if ((*iter)->has_pid() and (*iter)->murder() == false)
+    if ((*iter)->has_pid() and (*iter)->kill() == false)
     {
       Error << "Unable to kill:" <<  *(*iter);
       success= false;
@@ -176,9 +176,9 @@ bool server_startup_st::validate()
   return _magic == MAGIC_MEMORY;
 }
 
-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)
+bool server_startup(server_startup_st& construct, const std::string& server_type, in_port_t try_port, const char *argv[])
 {
-  return construct.start_server(server_type, try_port, argc, argv, opt_startup_message);
+  return construct.start_server(server_type, try_port, argv);
 }
 
 libtest::Server* server_startup_st::create(const std::string& server_type, in_port_t try_port, const bool is_socket)
@@ -288,8 +288,7 @@ private:
 bool server_startup_st::_start_server(const bool is_socket,
                                       const std::string& server_type,
                                       in_port_t try_port,
-                                      int argc, const char *argv[],
-                                      const bool opt_startup_message)
+                                      const char *argv[])
 {
   try {
     ServerPtr server(create(server_type, try_port, is_socket));
@@ -309,7 +308,7 @@ bool server_startup_st::_start_server(const bool is_socket,
       return false;
     }
 
-    server->build(argc, argv);
+    server->init(argv);
 
 #if 0
     if (false)
@@ -327,7 +326,6 @@ bool server_startup_st::_start_server(const bool is_socket,
       }
       else
       {
-        if (opt_startup_message)
         {
 #if defined(DEBUG)
           if (DEBUG)
@@ -347,7 +345,7 @@ bool server_startup_st::_start_server(const bool is_socket,
       set_default_socket(server->socket().c_str());
     }
   }
-  catch (libtest::disconnected& err)
+  catch (const libtest::disconnected& err)
   {
     if (fatal::is_disabled() == false and try_port != LIBTEST_FAIL_PORT)
     {
@@ -355,12 +353,12 @@ bool server_startup_st::_start_server(const bool is_socket,
       return false;
     }
   }
-  catch (libtest::__test_result& err)
+  catch (const libtest::__test_result& err)
   {
     stream::cerr(err.file(), err.line(), err.func()) << err.what();
     return false;
   }
-  catch (std::exception& err)
+  catch (const std::exception& err)
   {
     Error << err.what();
     return false;
@@ -374,18 +372,14 @@ bool server_startup_st::_start_server(const bool is_socket,
   return true;
 }
 
-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)
+bool server_startup_st::start_server(const std::string& server_type, in_port_t try_port, const char *argv[])
 {
-  return _start_server(false, server_type, try_port, argc, argv, opt_startup_message);
+  return _start_server(false, server_type, try_port, argv);
 }
 
-bool server_startup_st::start_socket_server(const std::string& server_type, const in_port_t try_port,
-                                            int argc, const char *argv[],
-                                            const bool opt_startup_message)
+bool server_startup_st::start_socket_server(const std::string& server_type, const in_port_t try_port, const char *argv[])
 {
-  return _start_server(true, server_type, try_port, argc, argv, opt_startup_message);
+  return _start_server(true, server_type, try_port, argv);
 }
 
 std::string server_startup_st::option_string() const
index 48d9090155647e00d84b3b40b6cf232c99b2a396..88e4763d28bedf0bf706cc943c0ae9165d2246e5 100644 (file)
 #include <cassert>
 #include <cstdio>
 #include <cstring>
-
 #include <netdb.h>
 #include <netinet/in.h>
-
 #include <string>
 #include <unistd.h>
 #include <vector>
@@ -69,8 +67,8 @@ public:
 
   bool validate();
 
-  bool start_socket_server(const std::string& server_type, const in_port_t try_port, int argc, const char *argv[], const bool opt_startup_message= true);
-  bool start_server(const std::string& server_type, const in_port_t try_port, int argc, const char *argv[], const bool opt_startup_message= true);
+  bool start_socket_server(const std::string& server_type, const in_port_t try_port, const char *argv[]);
+  bool start_server(const std::string& server_type, const in_port_t try_port, const char *argv[]);
 
   uint32_t count() const
   {
@@ -142,13 +140,12 @@ private:
   bool _start_server(const bool is_socket,
                      const std::string& server_type,
                      const in_port_t try_port,
-                     int argc, const char *argv[],
-                     const bool opt_startup_message);
+                     const char *argv[]);
 
 private:
   unsigned long int _servers_to_run;
 };
 
-bool server_startup(server_startup_st&, const std::string&, in_port_t try_port, int argc, const char *argv[], const bool opt_startup_message= true);
+bool server_startup(server_startup_st&, const std::string&, in_port_t try_port, const char *argv[]);
 
 } // namespace libtest
index 165915f56e63bc2cf0f4fc2aacfedb67a3beb763..51f42a4e1439ab29140bf9518f8970427ed59afb 100644 (file)
@@ -209,11 +209,6 @@ SignalThread::SignalThread() :
     sigaddset(&set, SIGINT);
     sigaddset(&set, SIGVTALRM);
   }
-  else
-  {
-    Out << "Inside of GDB, disabling signal handlers";
-  }
-
   sigaddset(&set, SIGPIPE);
 
   sigaddset(&set, SIGUSR2);
index dea371b94a51de4ada4296802b21d374e9c10e28..081c2bf04ef26685677d58af17a448f95071025d 100644 (file)
@@ -130,7 +130,7 @@ template<template <class Ch, class Tr, class A> class OutputPolicy, class Ch = c
       _func(func)
     { }
 
-    ~log()
+    virtual ~log()
     {
       output_policy()(arg, _out, _filename, _line_number, _func);
     }
@@ -145,6 +145,10 @@ template<template <class Ch, class Tr, class A> class OutputPolicy, class Ch = c
 
   private:
     typename output_policy::stream_buffer arg;
+
+  private:
+    log( const log& );
+    const log& operator=( const log& );
   };
 } // namespace detail
 
@@ -154,6 +158,9 @@ public:
     detail::log<detail::channelln>(std::cerr, filename, line_number, func)
   { }
 
+private:
+  make_cerr( const make_cerr& );
+  const make_cerr& operator=( const make_cerr& );
 };
 
 class cerr : public detail::log<detail::channel> {
@@ -162,6 +169,9 @@ public:
     detail::log<detail::channel>(std::cout, filename, line_number, func)
   { }
 
+private:
+  cerr( const cerr& );
+  const cerr& operator=( const cerr& );
 };
 
 class clog : public detail::log<detail::channel> {
@@ -169,6 +179,10 @@ public:
   clog(const char* filename, int line_number, const char* func) :
     detail::log<detail::channel>(std::clog, filename, line_number, func)
   { }
+
+private:
+  clog( const clog& );
+  const clog& operator=( const clog& );
 };
 
 class make_cout : public detail::log<detail::channelln> {
@@ -177,6 +191,9 @@ public:
     detail::log<detail::channelln>(std::cout, filename, line_number, func)
   { }
 
+private:
+  make_cout( const make_cout& );
+  const make_cout& operator=( const make_cout& );
 };
 
 class cout : public detail::log<detail::channel> {
@@ -184,6 +201,10 @@ public:
   cout(const char* filename, int line_number, const char* func) :
     detail::log<detail::channel>(std::cout, filename, line_number, func)
   { }
+
+private:
+  cout( const cout& );
+  const cout& operator=( const cout& );
 };
 
 
index 901652fa4eeba0185402f12037eac7c6d73a451a..ebbc1e4fb3ad1b54cc1987f5ba543b07bee731e7 100644 (file)
@@ -52,7 +52,7 @@ const char *test_strerror(test_return_t code)
     return "skipped";
   }
 
-  fatal_message("No port could be found");
+  FATAL("No port could be found");
 }
 
 } // namespace libtest
index 25fc09939f2b09909c4c800e94b3fdfbfe1c266a..b09da7fcef266821e83eed7b5798368dc1b0b570 100644 (file)
@@ -46,30 +46,32 @@ namespace thread
 class Mutex
 {
 public:
-  Mutex()
+  Mutex() :
+    _err(0)
   {
-    int err;
-    if ((err= pthread_mutex_init(&_mutex, NULL)))
-    {
-      throw libtest::fatal(LIBYATL_DEFAULT_PARAM, "pthread_mutex_init: %s", strerror(err));
-    }
+    _err= pthread_mutex_init(&_mutex, NULL);
   }
 
   ~Mutex()
   {
-    int err;
-    if ((err= pthread_mutex_destroy(&_mutex)))
+    if ((_err= pthread_mutex_destroy(&_mutex)))
     {
-      throw libtest::fatal(LIBYATL_DEFAULT_PARAM, "pthread_cond_destroy: %s", strerror(err));
+      throw libtest::fatal(LIBYATL_DEFAULT_PARAM, "pthread_cond_destroy: %s", strerror(_err));
     }
   }
 
   pthread_mutex_t* handle()
   {
+    if (_err != 0)
+    {
+      throw libtest::fatal(LIBYATL_DEFAULT_PARAM, "pthread_mutex_init: %s", strerror(_err));
+    }
+
     return &_mutex;
   }
 
 private:
+  int _err;
   pthread_mutex_t _mutex;
 };
 
index fe164ecfcaa21afef901d7cb52b432160735786e..fae814cad09c61f2e446102aee4659c377ff77a8 100644 (file)
 #include <ctime>
 #include <iomanip>
 
+#ifdef __MACH__
+# include <mach/clock.h>
+# include <mach/mach.h>
+#else
+# include <sys/time.h>
+#endif
+
 namespace libtest {
 
+Timer::Timer()
+{
+  _begin.tv_sec= 0;
+  _begin.tv_nsec= 0;
+  _end.tv_sec= 0;
+  _end.tv_nsec= 0;
+}
+
+void Timer::reset()
+{
+  _end.tv_sec= 0;
+  _end.tv_nsec= 0;
+  _time(_begin);
+}
+
+void Timer::sample()
+{
+  _time(_end);
+}
+
+void Timer::offset(int64_t minutes_arg, int64_t seconds_arg, int64_t nanoseconds)
+{
+  reset();
+  _end= _begin;
+  _end.tv_sec+= (minutes_arg * 60) +seconds_arg;
+  _end.tv_nsec+= nanoseconds;
+}
+
+int64_t Timer::minutes()
+{
+  struct timespec result;
+  difference(result);
+  return int64_t(result.tv_sec / 60);
+}
+
+uint64_t Timer::elapsed_milliseconds() const
+{
+  struct timespec temp;
+  difference(temp);
+
+  return temp.tv_sec*1000 +temp.tv_nsec/1000000;
+}
+
+void Timer::difference(struct timespec& arg) const
+{
+  if ((_end.tv_nsec -_begin.tv_nsec) < 0)
+  {
+    arg.tv_sec= _end.tv_sec -_begin.tv_sec -1;
+    arg.tv_nsec= 1000000000 +_end.tv_nsec -_begin.tv_nsec;
+
+  }
+  else
+  {
+    arg.tv_sec= _end.tv_sec -_begin.tv_sec;
+    arg.tv_nsec= _end.tv_nsec -_begin.tv_nsec;
+  }
+}
+
+void Timer::_time(struct timespec& ts)
+{
+#ifdef __MACH__ // OSX lacks clock_gettime()
+  clock_serv_t _clock_serv;
+  mach_timespec_t _mach_timespec;
+  host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &_clock_serv);
+  clock_get_time(_clock_serv, &_mach_timespec);
+  mach_port_deallocate(mach_task_self(), _clock_serv);
+  ts.tv_sec= _mach_timespec.tv_sec;
+  ts.tv_nsec= _mach_timespec.tv_nsec;
+#elif defined(_WIN32)
+  ts.tv_sec= time(NULL);
+  ts.tv_nsec= 0;
+#else
+  clock_gettime(CLOCK_REALTIME, &ts);
+#endif
+}
+
 std::ostream& operator<<(std::ostream& output, const libtest::Timer& arg)
 {
   struct timespec temp;
index cd34124fdfd9a1539f896fd1580482d7e6a78db3..18ed3e8ebaf5e02061f9c612ae762fed3d3fe09c 100644 (file)
 #include <ctime>
 #include <iostream>
 
-#ifdef __MACH__
-#  include <mach/clock.h>
-#  include <mach/mach.h>
-#else
-#  include <sys/time.h>
-#endif
-
 
 namespace libtest {
 
 class Timer {
 public:
 
-  Timer()
-  {
-    _begin.tv_sec= 0;
-    _begin.tv_nsec= 0;
-    _end.tv_sec= 0;
-    _end.tv_nsec= 0;
-  }
-
-  void reset()
-  {
-    _end.tv_sec= 0;
-    _end.tv_nsec= 0;
-    _time(_begin);
-  }
-
-  void sample()
-  {
-    _time(_end);
-  }
-
-  void offset(int64_t minutes_arg, int64_t seconds_arg, int64_t nanoseconds)
-  {
-    reset();
-    _end= _begin;
-    _end.tv_sec+= (minutes_arg * 60) +seconds_arg;
-    _end.tv_nsec+= nanoseconds;
-  }
-
-  int64_t minutes()
-  {
-    struct timespec result;
-    difference(result);
-    return int64_t(result.tv_sec / 60);
-  }
-
-  uint64_t elapsed_milliseconds() const
-  {
-    struct timespec temp;
-    difference(temp);
-
-    return temp.tv_sec*1000 +temp.tv_nsec/1000000;
-  }
-
-  void difference(struct timespec& arg) const
-  {
-    if ((_end.tv_nsec -_begin.tv_nsec) < 0)
-    {
-      arg.tv_sec= _end.tv_sec -_begin.tv_sec -1;
-      arg.tv_nsec= 1000000000 +_end.tv_nsec -_begin.tv_nsec;
-
-    }
-    else
-    {
-      arg.tv_sec= _end.tv_sec -_begin.tv_sec;
-      arg.tv_nsec= _end.tv_nsec -_begin.tv_nsec;
-    }
-  }
+  Timer();
+
+  void reset();
+
+  void sample();
+
+  void offset(int64_t minutes_arg, int64_t seconds_arg, int64_t nanoseconds);
+
+  int64_t minutes();
+
+  uint64_t elapsed_milliseconds() const;
+
+  void difference(struct timespec& arg) const;
 
 private:
-  void _time(struct timespec& ts)
-  {
-#ifdef __MACH__ // OSX lacks clock_gettime()
-    clock_serv_t _clock_serv;
-    mach_timespec_t _mach_timespec;
-    host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &_clock_serv);
-    clock_get_time(_clock_serv, &_mach_timespec);
-    mach_port_deallocate(mach_task_self(), _clock_serv);
-    ts.tv_sec= _mach_timespec.tv_sec;
-    ts.tv_nsec= _mach_timespec.tv_nsec;
-#elif defined(_WIN32)
-    ts.tv_sec= time(NULL);
-    ts.tv_nsec= 0;
-#else
-    clock_gettime(CLOCK_REALTIME, &ts);
-#endif
-  }
+  void _time(struct timespec& ts);
 
 private:
   struct timespec _begin;
index 8cc8a65ff99d08823ca15d33c26a0bfa55ed4422..b96fea06486a311b6e00744b065dd02568c16448 100644 (file)
@@ -111,7 +111,7 @@ static test_return_t test_throw_success_TEST(void *)
   try {
     _SUCCESS;
   }
-  catch (libtest::__success)
+  catch (const libtest::__success&)
   {
     return TEST_SUCCESS;
   }
@@ -128,7 +128,7 @@ static test_return_t test_throw_skip_macro_TEST(void *)
   try {
     SKIP_IF(true);
   }
-  catch (libtest::__skipped e)
+  catch (const libtest::__skipped&)
   {
     return TEST_SUCCESS;
   }
@@ -147,7 +147,7 @@ static test_return_t test_throw_skip_TEST(void *)
   try {
     throw libtest::__skipped(LIBYATL_DEFAULT_PARAM, "basic test");
   }
-  catch (libtest::__skipped e)
+  catch (const libtest::__skipped&)
   {
     return TEST_SUCCESS;
   }
@@ -396,7 +396,7 @@ static test_return_t drizzled_cycle_test(void *object)
 
   test_skip(true, has_drizzled());
 
-  test_skip(true, server_startup(*servers, "drizzled", get_free_port(), 0, NULL, false));
+  test_skip(true, server_startup(*servers, "drizzled", get_free_port(), NULL));
 
   return TEST_SUCCESS;
 }
@@ -407,7 +407,7 @@ static test_return_t gearmand_cycle_test(void *object)
   test_true(servers and servers->validate());
 
   test_skip(true, has_gearmand());
-  test_skip(true, server_startup(*servers, "gearmand", get_free_port(), 0, NULL, false));
+  test_skip(true, server_startup(*servers, "gearmand", get_free_port(), NULL));
   servers->clear();
 
   return TEST_SUCCESS;
@@ -442,7 +442,7 @@ static test_return_t server_startup_fail_TEST(void *object)
   test_true(servers);
 
   fatal::disable();
-  ASSERT_EQ(servers->start_server(testing_service, LIBTEST_FAIL_PORT, 0, NULL, false), true);
+  ASSERT_EQ(servers->start_server(testing_service, LIBTEST_FAIL_PORT, NULL), true);
   fatal::enable();
 
   return TEST_SUCCESS;
@@ -453,7 +453,7 @@ static test_return_t server_startup_TEST(void *object)
   server_startup_st *servers= (server_startup_st*)object;
   test_true(servers);
 
-  ASSERT_EQ(servers->start_server(testing_service, get_free_port(), 0, NULL, false), true);
+  ASSERT_EQ(servers->start_server(testing_service, get_free_port(), NULL), true);
 
   test_true(servers->last());
   pid_t last_pid= servers->last()->pid();
@@ -476,7 +476,7 @@ static test_return_t socket_server_startup_TEST(void *object)
   server_startup_st *servers= (server_startup_st*)object;
   test_true(servers);
 
-  test_true(servers->start_socket_server(testing_service, get_free_port(), 0, NULL, false));
+  test_true(servers->start_socket_server(testing_service, get_free_port(), NULL));
 
   return TEST_SUCCESS;
 }
@@ -494,7 +494,7 @@ static test_return_t memcached_sasl_test(void *object)
     if (HAVE_LIBMEMCACHED)
     {
       test_true(has_memcached_sasl());
-      test_true(server_startup(*servers, "memcached-sasl", get_free_port(), 0, NULL, false));
+      test_true(server_startup(*servers, "memcached-sasl", get_free_port(), NULL));
 
       return TEST_SUCCESS;
     }
@@ -893,7 +893,7 @@ static test_return_t create_tmpfile_TEST(void *)
 static test_return_t fatal_message_TEST(void *)
 {
   ASSERT_EQ(fatal_calls++, fatal::disabled_counter());
-  fatal_message("Fatal test");
+  FATAL("Fatal test");
 
   return TEST_SUCCESS;
 }
@@ -932,7 +932,6 @@ static test_return_t check_for_gearman(void *)
 
 static test_return_t check_for_drizzle(void *)
 {
-  test_skip(true, HAVE_LIBDRIZZLE);
   test_skip(true, has_drizzled());
 
   testing_service= "drizzled";
@@ -1108,6 +1107,7 @@ test_st application_tests[] ={
 
 static test_return_t check_for_curl(void *)
 {
+  test_skip_valgrind();
   test_skip(true, HAVE_LIBCURL);
   return TEST_SUCCESS;
 }
index c899b51558b05a7b408baaf812210ff2c62685df..9d2244b3c32c3646bf56d02893c3a42c135c8f14 100644 (file)
@@ -121,7 +121,7 @@ void append(libtest::vchar_ptr_t& arg, const char* ptr)
     char* new_ptr= strdup(ptr);
     if (new_ptr == NULL)
     {
-      fatal_message("UNABLE to allocate %s(%p)", ptr, ptr);
+      FATAL("UNABLE to allocate %s(%p)", ptr, ptr);
     }
 
     arg.push_back(new_ptr);
index 5f013cd3b01321f39ea3511837c2fb05e6bbcf6e..a39a853e4a7e9c0f1ed366426d596ffa937cf618 100644 (file)
@@ -38,9 +38,8 @@
 
 #include <unistd.h>
 #include <string>
-#include <csignal>
+#include <signal.h>
 
-#include <sys/types.h>
 #include <libtest/dream.h>
 
 namespace libtest {
index a8ddc8a6fa2acf8cec73ac594aa8600403ed41cd..0137b03895dad3d715dc222b5fb9166652fe4b5b 100644 (file)
@@ -48,7 +48,7 @@ using namespace libtest;
 static test_return_t server_startup_single_TEST(void *obj)
 {
   server_startup_st *servers= (server_startup_st*)obj;
-  test_compare(true, server_startup(*servers, "memcached", libtest::get_free_port(), 0, NULL, false));
+  test_compare(true, server_startup(*servers, "memcached", libtest::get_free_port(), NULL));
   test_compare(true, servers->shutdown());
 
 
@@ -60,9 +60,9 @@ static test_return_t server_startup_multiple_TEST(void *obj)
   test_skip(true, jenkins_is_caller());
 
   server_startup_st *servers= (server_startup_st*)obj;
-  for (size_t x= 0; x < 10; x++)
+  for (size_t x= 0; x < 10; ++x)
   {
-    test_compare(true, server_startup(*servers, "memcached", libtest::get_free_port(), 0, NULL, false));
+    test_compare(true, server_startup(*servers, "memcached", libtest::get_free_port(), NULL));
   }
   test_compare(true, servers->shutdown());
 
index b55d68abfb346ad7653a48eab9b564588bc09316..f572cce6c2b0187c7a49b8ad221a3c10d5090c4d 100644 (file)
@@ -84,7 +84,7 @@ static test_return_t add_shutdown_servers(memcached_st *memc)
   while (memcached_server_count(memc) < 2)
   {
     const char *argv[1]= { "add_shutdown_server" };
-    test_true(global_framework->servers().start_socket_server("memcached", libtest::default_port(), 1, argv));
+    test_true(global_framework->servers().start_socket_server("memcached", libtest::default_port(), argv));
     test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, "localhost", libtest::default_port()));
   }
 
index 050d29277112287fbbab367535af463c8bd718e2..ed290ab9281374488bc93c25964a62639e342f1f 100644 (file)
@@ -243,10 +243,7 @@ struct test_pool_context_st {
 static __attribute__((noreturn)) void* connection_release(void *arg)
 {
   test_pool_context_st *resource= static_cast<test_pool_context_st *>(arg);
-  if (resource == NULL)
-  {
-    fatal_message("resource == NULL");
-  }
+  FATAL_IF(resource == NULL);
 
   // Release all of the memc we are holding 
   resource->rc= memcached_pool_release(resource->pool, resource->mmc);
@@ -396,17 +393,11 @@ static bool _running= false;
 static void set_running(const bool arg)
 {
   int error;
-  if ((error= pthread_mutex_lock(&mutex)) != 0)
-  {
-    fatal_message(strerror(error));
-  }
+  FATAL_IF_((error= pthread_mutex_lock(&mutex)) != 0, strerror(error));
 
   _running= arg;
 
-  if ((error= pthread_mutex_unlock(&mutex)) != 0)
-  {
-    fatal_message(strerror(error));
-  }
+  FATAL_IF_((error= pthread_mutex_unlock(&mutex)) != 0, strerror(error));
 }
 
 static bool running()
@@ -414,17 +405,11 @@ static bool running()
   int error;
   bool ret;
   
-  if ((error= pthread_mutex_lock(&mutex)) != 0)
-  {
-    fatal_message(strerror(error));
-  }
+  FATAL_IF_((error= pthread_mutex_lock(&mutex)) != 0, strerror(error));
 
   ret= _running;
 
-  if ((error= pthread_mutex_unlock(&mutex)) != 0)
-  {
-    fatal_message(strerror(error));
-  }
+  FATAL_IF_((error= pthread_mutex_unlock(&mutex)) != 0, strerror(error));
 
   return ret;
 }
index 596ec8eea60fece04520d19ab8738032e1304106..3dda2d8ada2a8c78624ed0b1a5601fc90c7ecbfb 100644 (file)
@@ -77,7 +77,7 @@ static void *world_create(libtest::server_startup_st& servers, test_return_t& er
 
     if (servers.sasl())
     {
-      if (server_startup(servers, "memcached-sasl", port, 0, NULL) == false)
+      if (server_startup(servers, "memcached-sasl", port, NULL) == false)
       {
         error= TEST_SKIPPED;
         return NULL;
@@ -85,7 +85,7 @@ static void *world_create(libtest::server_startup_st& servers, test_return_t& er
     }
     else
     {
-      if (server_startup(servers, "memcached", port, 0, NULL) == false)
+      if (server_startup(servers, "memcached", port, NULL) == false)
       {
         error= TEST_SKIPPED;
         return NULL;
index a3078e7670d347bd2d2d993536ff569c31934052..64cf55e5cf5ba0f5d6ecb6c28d76177d322d22e6 100644 (file)
@@ -53,8 +53,8 @@ static void *world_create(libtest::server_startup_st& servers, test_return_t& er
 
   for (uint32_t x= 0; x < servers.servers_to_run(); x++)
   {
-    const char *argv[1]= { "memcached" };
-    if (servers.start_socket_server("memcached", libtest::get_free_port(), 1, argv) == false)
+    const char *argv[]= { "memcached", 0 };
+    if (servers.start_socket_server("memcached", libtest::get_free_port(), argv) == false)
     {
 #if 0
       fatal_message("Could not launch memcached");
index d36db346cc869795c7fa5346c893db7048471d15..04a7b34259182ac643b556b452fc0ee3fa31e08c 100644 (file)
@@ -113,7 +113,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (server_startup(servers, "memcached", libtest::default_port(), 0, NULL) == false)
+  if (server_startup(servers, "memcached", libtest::default_port(), NULL) == false)
   {
     error= TEST_SKIPPED;
   }
index abbee9e718db3f98c5b4130246f0a9a09ff64182..2910e4b9be2635d05dbd1b4959aa19206dedd7c4 100644 (file)
@@ -132,7 +132,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (not server_startup(servers, "memcached", libtest::default_port(), 0, NULL))
+  if (not server_startup(servers, "memcached", libtest::default_port(), NULL))
   {
     error= TEST_FAILURE;
   }
index ef5ef0fa7abe33af80c3410a5bac92153566da59..440f1b1dec8a41a07a6ed1a15d05b7b037a3b75b 100644 (file)
@@ -91,7 +91,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (server_startup(servers, "memcached", libtest::default_port(), 0, NULL) == false)
+  if (server_startup(servers, "memcached", libtest::default_port(), NULL) == false)
   {
     error= TEST_FAILURE;
   }
index d702ef6a50983efad4f1cc59af3f187f4e06773a..a43a61240a0be4915d4de52219402415c24255f0 100644 (file)
@@ -118,7 +118,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (server_startup(servers, "memcached", libtest::default_port(), 0, NULL) == false)
+  if (server_startup(servers, "memcached", libtest::default_port(), NULL) == false)
   {
     error= TEST_FAILURE;
     return NULL;
index 2c40b4371f21af2a0af4125f828e856ce7f3a58d..0c57c029b7144f013d2d72caaf331cabf5a8b158 100644 (file)
@@ -149,7 +149,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (server_startup(servers, "memcached", libtest::default_port(), 0, NULL) == false)
+  if (server_startup(servers, "memcached", libtest::default_port(), NULL) == false)
   {
     error= TEST_SKIPPED;
   }
index 3a3ac076d2fb4574813a38561886b44ff7d5b033..c197b4903956c8ada4969e9c0229e68145af0c3d 100644 (file)
@@ -101,7 +101,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (server_startup(servers, "memcached", libtest::default_port(), 0, NULL) == 0)
+  if (server_startup(servers, "memcached", libtest::default_port(), NULL) == 0)
   {
     error= TEST_SKIPPED;
   }
index 6b2b061851cab6a9c408c1a64e9a1b832af07953..043e0ce50ef2a2d685efd03925765ad81d16b783 100644 (file)
@@ -152,7 +152,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (server_startup(servers, "memcached", libtest::default_port(), 0, NULL) == false)
+  if (server_startup(servers, "memcached", libtest::default_port(), NULL) == false)
   {
     error= TEST_FAILURE;
   }
index 2fd6a75f5858af5c31e77278ac0a4d0fb1abbbab..8a1a5cba74a23c5f468284ecede35f9ac1c1a32c 100644 (file)
@@ -173,8 +173,8 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  const char *argv[1]= { "memslap" };
-  if (not server_startup(servers, "memcached", libtest::default_port(), 1, argv))
+  const char *argv[]= { "memslap", 0 };
+  if (server_startup(servers, "memcached", libtest::default_port(), argv) == false)
   {
     error= TEST_FAILURE;
   }
index 86edee4f5c0c9a9e1d5040def3d99bfc9a1e40e6..7bbab3633cc00ba8a1bc1bfdc5bcdbf05be3bde0 100644 (file)
@@ -113,7 +113,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (server_startup(servers, "memcached", libtest::default_port(), 0, NULL) == false)
+  if (server_startup(servers, "memcached", libtest::default_port(), NULL) == false)
   {
     error= TEST_SKIPPED;
   }
index 5293ce8e435ea3f4e526923ed71f5efa588fdf1e..5617fa2895683fc5d11143ad2f320af07c08f94f 100644 (file)
@@ -145,7 +145,7 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
     return NULL;
   }
 
-  if (server_startup(servers, "memcached", libtest::default_port(), 0, NULL) == false)
+  if (server_startup(servers, "memcached", libtest::default_port(), NULL) == false)
   {
     error= TEST_SKIPPED;
   }