{ 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);