Merge in fixes for rpm.
[awesomized/libmemcached] / clients / memcapable.c
index 3de6baf18205837c32738e1c95bc112df283a790..69d2557ea959608a0702a2494971595cd17cb313 100644 (file)
@@ -623,7 +623,7 @@ static enum test_return test_binary_quit_impl(uint8_t cc)
                                     PROTOCOL_BINARY_RESPONSE_SUCCESS));
   }
 
-  /* Socket should be closed now, read should return 0 */
+  /* Socket should be closed now, read should return EXIT_SUCCESS */
   verify(timeout_io_op(sock, POLLIN, rsp.bytes, sizeof(rsp.bytes)) == 0);
 
   return TEST_PASS_RECONNECT;
@@ -1211,7 +1211,7 @@ static enum test_return test_ascii_quit(void)
   /* Verify that quit works */
   execute(send_string("quit\r\n"));
 
-  /* Socket should be closed now, read should return 0 */
+  /* Socket should be closed now, read should return EXIT_SUCCESS */
   char buffer[80];
   verify(timeout_io_op(sock, POLLIN, buffer, sizeof(buffer)) == 0);
   return TEST_PASS_RECONNECT;
@@ -1937,9 +1937,19 @@ struct testcase testcases[]= {
   { NULL, NULL}
 };
 
+const int ascii_tests = 1;
+const int binary_tests = 2;
+
+struct test_type_st
+{
+  bool ascii;
+  bool binary;
+};
+
 int main(int argc, char **argv)
 {
   static const char * const status_msg[]= {"[skip]", "[pass]", "[pass]", "[FAIL]"};
+  struct test_type_st tests= { true, true };
   int total= 0;
   int failed= 0;
   const char *hostname= "localhost";
@@ -1948,15 +1958,25 @@ int main(int argc, char **argv)
   bool prompt= false;
   const char *testname= NULL;
 
-  while ((cmd= getopt(argc, argv, "t:vch:p:PT:?")) != EOF)
+
+
+  while ((cmd= getopt(argc, argv, "t:vch:p:PT:?ab")) != EOF)
   {
     switch (cmd) {
+    case 'a':
+      tests.ascii= true;
+      tests.binary= false;
+      break;
+    case 'b':
+      tests.ascii= false;
+      tests.binary= true;
+      break;
     case 't':
       timeout= atoi(optarg);
       if (timeout == 0)
       {
         fprintf(stderr, "Invalid timeout. Please specify a number for -t\n");
-        return 1;
+        return EXIT_FAILURE;
       }
       break;
     case 'v': verbose= true;
@@ -1972,8 +1992,7 @@ int main(int argc, char **argv)
     case 'T': testname= optarg;
        break;
     default:
-      fprintf(stderr, "Usage: %s [-h hostname] [-p port] [-c] [-v] [-t n]"
-              " [-P] [-T testname]'\n"
+      fprintf(stderr, "Usage: %s [-h hostname] [-p port] [-c] [-v] [-t n] [-P] [-T testname]'\n"
               "\t-c\tGenerate coredump if a test fails\n"
               "\t-v\tVerbose test output (print out the assertion)\n"
               "\t-t n\tSet the timeout for io-operations to n seconds\n"
@@ -1981,9 +2000,11 @@ int main(int argc, char **argv)
               "\t\t\t\"skip\" will skip the test\n"
               "\t\t\t\"quit\" will terminate memcapable\n"
               "\t\t\tEverything else will start the test\n"
-              "\t-T n\tJust run the test named n\n",
+              "\t-T n\tJust run the test named n\n"
+              "\t-a\tOnly test the ascii protocol\n"
+              "\t-b\tOnly test the binary protocol\n",
               argv[0]);
-      return 1;
+      return EXIT_FAILURE;
     }
   }
 
@@ -1993,7 +2014,7 @@ int main(int argc, char **argv)
   {
     fprintf(stderr, "Failed to connect to <%s:%s>: %s\n",
             hostname, port, strerror(get_socket_errno()));
-    return 1;
+    return EXIT_FAILURE;
   }
 
   for (int ii= 0; testcases[ii].description != NULL; ++ii)
@@ -2001,6 +2022,11 @@ int main(int argc, char **argv)
     if (testname != NULL && strcmp(testcases[ii].description, testname) != 0)
        continue;
 
+    if ((testcases[ii].description[0] == 'a' && (tests.ascii) == 0) ||
+        (testcases[ii].description[0] == 'b' && (tests.binary) == 0))
+    {
+      continue;
+    }
     ++total;
     fprintf(stdout, "%-40s", testcases[ii].description);
     fflush(stdout);
@@ -2046,7 +2072,7 @@ int main(int argc, char **argv)
         fprintf(stderr, "Failed to connect to <%s:%s>: %s\n",
                 hostname, port, strerror(get_socket_errno()));
         fprintf(stderr, "%d of %d tests failed\n", failed, total);
-        return 1;
+        return EXIT_FAILURE;
       }
     }
   }