Merge from libtest.
authorBrian Aker <brian@tangent.org>
Tue, 13 Mar 2012 16:05:25 +0000 (09:05 -0700)
committerBrian Aker <brian@tangent.org>
Tue, 13 Mar 2012 16:05:25 +0000 (09:05 -0700)
libtest/http.cc
libtest/http.hpp
libtest/memcached.cc
libtest/server_container.cc
libtest/test.cc

index 1a0a10ec0525a973368aa0283bdaec3abc57d3af..920fd021d647f34d1a01d257adcecad100b5b892 100644 (file)
@@ -20,6 +20,7 @@
  */
 
 #include <config.h>
+
 #include <libtest/common.h>
 
 #if defined(HAVE_CURL_CURL_H) && HAVE_CURL_CURL_H
 class CURL;
 #endif
 
+
+static void cleanup_curl(void)
+{
+#if defined(HAVE_CURL_CURL_H) && HAVE_CURL_CURL_H
+  curl_global_cleanup();
+#endif
+}
+
+static void initialize_curl_startup()
+{
+#if defined(HAVE_CURL_CURL_H) && HAVE_CURL_CURL_H
+  if (curl_global_init(CURL_GLOBAL_ALL))
+  {
+    fatal_message("curl_global_init(CURL_GLOBAL_ALL) failed");
+  }
+#endif
+
+  if (atexit(cleanup_curl))
+  {
+    fatal_message("atexit() failed");
+  }
+}
+
+static pthread_once_t start_key_once= PTHREAD_ONCE_INIT;
+void initialize_curl(void)
+{
+  int ret;
+  if (pthread_once(&start_key_once, initialize_curl_startup) != 0)
+  {
+    fatal_message(strerror(ret));
+  }
+}
+
 namespace libtest {
 namespace http {
 
@@ -59,6 +93,13 @@ static void init(CURL *curl, const std::string& url)
   }
 }
 
+HTTP::HTTP(const std::string& url_arg) :
+  _url(url_arg),
+  _response(0)
+{
+  initialize_curl();
+}
+
 bool GET::execute()
 {
   if (HAVE_LIBCURL)
index 012d7a0708329cb35e0147d4204589566a55f164..bbc23b975ae31a88862d8207a9aa83c27b5bfcb6 100644 (file)
@@ -28,10 +28,7 @@ namespace http {
 class HTTP {
 public:
 
-  HTTP(const std::string& url_arg) :
-    _url(url_arg),
-    _response(0)
-  { }
+  HTTP(const std::string& url_arg);
 
   virtual bool execute()= 0;
 
index 678c3cf18105a68f6ab64e71e85d88932ed52b05..5327e9b8dbb971a1181cda97aaa175b48507fa13 100644 (file)
@@ -123,7 +123,7 @@ public:
   bool ping()
   {
     // Memcached is slow to start, so we need to do this
-    if (not pid_file().empty())
+    if (pid_file().empty() == false)
     {
       if (wait_for_pidfile() == false)
       {
@@ -137,7 +137,7 @@ public:
 
     if (has_socket())
     {
-        ret= libmemcached_util_ping(socket().c_str(), 0, &rc);
+      ret= libmemcached_util_ping(socket().c_str(), 0, &rc);
     }
     else
     {
@@ -344,7 +344,11 @@ public:
 class MemcachedSaSL : public Memcached
 {
 public:
-  MemcachedSaSL(const std::string& host_arg, const in_port_t port_arg, const bool is_socket_arg, const std::string& username_arg, const std::string &password_arg) :
+  MemcachedSaSL(const std::string& host_arg,
+                const in_port_t port_arg, 
+                const bool is_socket_arg, 
+                const std::string& username_arg, 
+                const std::string &password_arg) :
     Memcached(host_arg, port_arg, is_socket_arg, username_arg, password_arg)
   { }
 
@@ -460,7 +464,7 @@ bool Memcached::build(size_t argc, const char *argv[])
 
 bool MemcachedLight::build(size_t argc, const char *argv[])
 {
-  for (int x= 0 ; x < argc ; x++)
+  for (size_t x= 0 ; x < argc ; x++)
   {
     add_option(argv[x]);
   }
index 5be04f98eb715c08dcc28599060a9f54fa1d520b..579f901c0694c855237f78332496cd0849f5454a 100644 (file)
@@ -328,7 +328,7 @@ bool server_startup_st::start_socket_server(const std::string& server_type, cons
   /*
     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;
index d367603d4d4e380074b36245bc7fbd011d8ac168..cafc48d4e45cfa9f2b41963ce73d3da0d15dab9b 100644 (file)
 
 #include <signal.h>
 
-#if defined(HAVE_CURL_CURL_H) && HAVE_CURL_CURL_H
-#include <curl/curl.h>
-#endif
-
 #ifndef __INTEL_COMPILER
 #pragma GCC diagnostic ignored "-Wold-style-cast"
 #endif
@@ -75,32 +71,11 @@ static long int timedif(struct timeval a, struct timeval b)
   return s + us;
 }
 
-static void cleanup_curl(void)
-{
-#if defined(HAVE_CURL_CURL_H) && HAVE_CURL_CURL_H
-  curl_global_cleanup();
-#endif
-}
-
 #include <getopt.h>
 #include <unistd.h>
 
 int main(int argc, char *argv[])
 {
-#if defined(HAVE_CURL_CURL_H) && HAVE_CURL_CURL_H
-  if (curl_global_init(CURL_GLOBAL_ALL))
-  {
-    Error << "curl_global_init(CURL_GLOBAL_ALL) failed";
-    return EXIT_FAILURE;
-  }
-#endif
-
-  if (atexit(cleanup_curl))
-  {
-    Error << "atexit() failed";
-    return EXIT_FAILURE;
-  }
-
   bool opt_repeat= false;
   std::string collection_to_run;
 
@@ -451,13 +426,13 @@ cleanup:
   {
     std::cerr << e.what() << std::endl;
   }
-  catch (std::bad_alloc& e)
+  catch (std::exception& e)
   {
     std::cerr << e.what() << std::endl;
   }
   catch (...)
   {
-    std::cerr << "Unknown exception halted execution" << std::endl;
+    std::cerr << "Unknown exception halted execution." << std::endl;
   }
 
   return exit_code;