Merge in ability for memcapable to handle ascii/binary as flags to the
authorBrian Aker <brian@tangent.org>
Tue, 22 Feb 2011 02:02:11 +0000 (18:02 -0800)
committerBrian Aker <brian@tangent.org>
Tue, 22 Feb 2011 02:02:11 +0000 (18:02 -0800)
command.

1  2 
clients/memcapable.c

index 3de6baf18205837c32738e1c95bc112df283a790,7f5d51ee94e5144571eb320e7783f2b39f54cb45..fdbc35c8d4bb33624c0c72b37735f2da0b9ac188
@@@ -1937,20 -1861,29 +1937,40 @@@ 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";
    const char *port= "11211";
    int cmd;
 -  int tests = ascii_tests | binary_tests;
 +  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:?ab")) != EOF)
++  while ((cmd= getopt(argc, argv, "t:vch:p:PT:?ab")) != EOF)
    {
      switch (cmd) {
 -      tests = ascii_tests;
+     case 'a':
 -      tests = binary_tests;
++      tests.ascii= true;
++      tests.binary= false;
+       break;
+     case 'b':
++      tests.ascii= false;
++      tests.binary= true;
+       break;
      case 't':
        timeout= atoi(optarg);
        if (timeout == 0)
        break;
      case 'p': port= optarg;
        break;
 +    case 'P': prompt= true;
 +      break;
 +    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] [-a] [-b]\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"
-               "\t-T n\tJust run the test named n\n",
 +              "\t-P\tPrompt the user before starting a test.\n"
 +              "\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-a\tOnly test the ascii protocol\n"
+               "\t-b\tOnly test the binary protocol\n",
                argv[0]);
        return 1;
      }
  
    for (int ii= 0; testcases[ii].description != NULL; ++ii)
    {
 -    if ((testcases[ii].description[0] == 'a' && (tests & ascii_tests) == 0) ||
 -        (testcases[ii].description[0] == 'b' && (tests & binary_tests) == 0))
 +    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);