Osx fixes.
authorBrian Aker <brian@tangent.org>
Mon, 26 Mar 2012 18:15:13 +0000 (11:15 -0700)
committerBrian Aker <brian@tangent.org>
Mon, 26 Mar 2012 18:15:13 +0000 (11:15 -0700)
libtest/cmdline.cc
libtest/memcached.cc
libtest/server.h
libtest/signal.cc
libtest/unittest.cc
libtest/wait.h
memcached/memcached.c
tests/include.am

index 1a13342b6b4a9e38b811d8d0afd77152b4fe806e..b93d8aba096b10fa5cf0a81307877f18e159ea6c 100644 (file)
@@ -300,7 +300,7 @@ bool Application::slurp()
     return false;
   }
 
-  if (fds[0].revents == POLLIN)
+  if (fds[0].revents & POLLIN)
   {
     ssize_t read_length;
     char buffer[1024]= { 0 };
@@ -329,8 +329,10 @@ bool Application::slurp()
     }
   }
 
-  if (fds[1].revents == POLLIN)
+  if (fds[1].revents & POLLIN)
   {
+    stderr_fd.nonblock();
+
     ssize_t read_length;
     char buffer[1024]= { 0 };
     while ((read_length= ::read(stderr_fd.fd()[0], buffer, sizeof(buffer))))
index e7c163957918feaac4fdac663a94126311f6a0b5..9c237fdddfed9670146510b4bb4c76935ada3b7a 100644 (file)
@@ -101,17 +101,21 @@ public:
     return _username;
   }
 
+  bool wait_for_pidfile() const
+  {
+    Wait wait(pid(), 4);
+
+    return wait.successful();
+  }
+
   pid_t get_pid(bool error_is_ok)
   {
     // Memcached is slow to start, so we need to do this
-    if (pid_file().empty() == false)
+    if (error_is_ok and
+        wait_for_pidfile() == false)
     {
-      if (error_is_ok and
-          wait_for_pidfile() == false)
-      {
-        Error << "Pidfile was not found:" << pid_file();
-        return -1;
-      }
+      Error << "Pidfile was not found:" << pid_file();
+      return -1;
     }
 
     pid_t local_pid;
@@ -140,15 +144,17 @@ public:
 
   bool ping()
   {
+#if 0
     // Memcached is slow to start, so we need to do this
     if (pid_file().empty() == false)
     {
       if (wait_for_pidfile() == false)
       {
-        Error << "Pidfile was not found:" << pid_file();
+        Error << "Pidfile was not found:" << pid_file() << " :" << running();
         return -1;
       }
     }
+#endif
 
     memcached_return_t rc;
     bool ret;
index c9700e95e620fe6a28ff2bc2aba1ee4149b5b043..68d5e2265053458a32864d3ed22f58eff4fd18cf 100644 (file)
@@ -207,7 +207,7 @@ public:
     return (_pid > 1);
   }
 
-  bool wait_for_pidfile() const;
+  virtual bool wait_for_pidfile() const;
 
   bool check_pid(pid_t pid_arg) const
   {
index 266a7c4ac7d98ac0046f6a1ceaec44c0634a14f8..2fd99e07a1c558f1a4405a39ee2d0ff8bb29b12d 100644 (file)
@@ -143,6 +143,10 @@ static void *sig_thread(void *arg)
       }
       break;
 
+    case 0:
+      Error << "Inside of gdb?";
+      break;
+
     default:
       Error << "Signal handling thread got unexpected signal " <<  strsignal(sig);
       break;
index a5860bdd35b4790a1ec1349f19d30cbd1bc80bd4..10d6c062de2cc8b3a814b78d7806d51f81fad0c7 100644 (file)
@@ -388,7 +388,6 @@ static test_return_t application_doesnotexist_BINARY(void *)
   const char *args[]= { "--fubar", 0 };
 #if defined(TARGET_OS_OSX) && TARGET_OS_OSX
   test_compare(Application::INVALID, true_app.run(args));
-  test_compare(Application::FAILURE, true_app.wait());
 #else
   test_compare(Application::SUCCESS, true_app.run(args));
   test_compare(Application::INVALID, true_app.wait());
index c6c3f966d84a79fcbddd9f167cc515d8e3992be1..f81a29ad85e0762d5124af8908cf3c52a9207464 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <unistd.h>
 #include <string>
+#include <signal.h>
 
 #include <libtest/dream.h>
 
@@ -63,6 +64,30 @@ public:
     }
   }
 
+  Wait(const pid_t &_pid_arg, uint32_t timeout= 6) :
+    _successful(false)
+  {
+    uint32_t waited;
+    uint32_t this_wait;
+    uint32_t retry;
+
+    for (waited= 0, retry= 1; ; retry++, waited+= this_wait)
+    {
+      if (kill(_pid_arg, 0) == 0)
+      {
+        _successful= true;
+        break;
+      }
+      else if (waited >= timeout)
+      {
+        break;
+      }
+
+      this_wait= retry * retry / 3 + 1;
+      libtest::dream(this_wait, 0);
+    }
+  }
+
   bool successful() const
   {
     return _successful;
index 7d053cce8c943032a80f9766285c96bb2c4126a8..10e89f8051843ff05c73edf795347017839bf37d 100644 (file)
@@ -5278,8 +5278,10 @@ int main (int argc, char **argv) {
     stop_assoc_maintenance_thread();
 
     /* remove the PID file if we're a daemon */
+#if 0
     if (do_daemonize)
         remove_pidfile(pid_file);
+#endif
     /* Clean up strdup() call for bind() address */
     if (settings.inter)
       free(settings.inter);
index 7bc9e60b99dcddf2f338ada4accedcb3759239f4..56e7181674f3a7c7c9dc824b5aa355edb440aafe 100644 (file)
@@ -94,7 +94,7 @@ test-memcapable: tests/var tests/memcapable
 pahole-mem: tests/testapp
        @$(PAHOLE_COMMAND)  tests/testapp
 
-gdb-mem: tests/var tests/libmemcached-1.0/testapp
+gdb-mem: tests/libmemcached-1.0/testapp
        @$(DEBUG_COMMAND)  tests/libmemcached-1.0/testapp
 
 gdb-sasl: tests/sasl