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;
/* 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;
{
/* @todo add tests for bogus format! */
char buffer[1024];
- sprintf(buffer, "set %s 0 0 5%s\r\nvalue\r\n", key,
- noreply ? " noreply" : "");
+ snprintf(buffer, sizeof(buffer), "set %s 0 0 5%s\r\nvalue\r\n", key, noreply ? " noreply" : "");
execute(send_string(buffer));
if (!noreply)
{
/* @todo add tests for bogus format! */
char buffer[1024];
- sprintf(buffer, "add %s 0 0 5%s\r\nvalue\r\n", key,
- noreply ? " noreply" : "");
+ snprintf(buffer, sizeof(buffer), "add %s 0 0 5%s\r\nvalue\r\n", key, noreply ? " noreply" : "");
execute(send_string(buffer));
if (!noreply)
datasize= strlen(value);
verify(datasize < sizeof(buffer));
- sprintf(buffer, "get %s\r\n", key);
+ snprintf(buffer, sizeof(buffer), "get %s\r\n", key);
execute(send_string(buffer));
if (exist)
datasize= strlen(value);
verify(datasize < sizeof(buffer));
- sprintf(buffer, "gets %s\r\n", key);
+ snprintf(buffer, sizeof(buffer), "gets %s\r\n", key);
execute(send_string(buffer));
if (exist)
{
char buffer[300];
size_t len= strlen(value);
- sprintf(buffer, "set %s 0 0 %u\r\n", key, (unsigned int)len);
+ snprintf(buffer, sizeof(buffer), "set %s 0 0 %u\r\n", key, (unsigned int)len);
execute(send_string(buffer));
execute(retry_write(value, len));
execute(send_string("\r\n"));
static enum test_return test_ascii_replace_impl(const char* key, bool noreply)
{
char buffer[1024];
- sprintf(buffer, "replace %s 0 0 5%s\r\nvalue\r\n", key,
- noreply ? " noreply" : "");
+ snprintf(buffer, sizeof(buffer), "replace %s 0 0 5%s\r\nvalue\r\n", key, noreply ? " noreply" : "");
execute(send_string(buffer));
if (noreply)
execute(ascii_set_item(key, "value"));
execute(ascii_gets_item(key, "value", true, &cas));
- sprintf(buffer, "cas %s 0 0 6 %lu%s\r\nvalue2\r\n", key, cas,
- noreply ? " noreply" : "");
+ snprintf(buffer, sizeof(buffer), "cas %s 0 0 6 %lu%s\r\nvalue2\r\n", key, cas, noreply ? " noreply" : "");
execute(send_string(buffer));
if (noreply)
execute(receive_error_response());
char buffer[1024];
- sprintf(buffer, "delete %s%s\r\n", key, noreply ? " noreply" : "");
+ snprintf(buffer, sizeof(buffer), "delete %s%s\r\n", key, noreply ? " noreply" : "");
execute(send_string(buffer));
if (noreply)
static enum test_return test_ascii_incr_impl(const char* key, bool noreply)
{
char cmd[300];
- sprintf(cmd, "incr %s 1%s\r\n", key, noreply ? " noreply" : "");
+ snprintf(cmd, sizeof(cmd), "incr %s 1%s\r\n", key, noreply ? " noreply" : "");
execute(ascii_set_item(key, "0"));
for (int x= 1; x < 11; ++x)
static enum test_return test_ascii_decr_impl(const char* key, bool noreply)
{
char cmd[300];
- sprintf(cmd, "decr %s 1%s\r\n", key, noreply ? " noreply" : "");
+ snprintf(cmd, sizeof(cmd), "decr %s 1%s\r\n", key, noreply ? " noreply" : "");
execute(ascii_set_item(key, "9"));
for (int x= 8; x > -1; --x)
value="hello";
char cmd[400];
- sprintf(cmd, "%s %s 0 0 %u%s\r\n%s\r\n",
- append ? "append" : "prepend",
- key, (unsigned int)strlen(value), noreply ? " noreply" : "",
- value);
+ snprintf(cmd, sizeof(cmd), "%s %s 0 0 %u%s\r\n%s\r\n",
+ append ? "append" : "prepend",
+ key, (unsigned int)strlen(value), noreply ? " noreply" : "",
+ value);
execute(send_string(cmd));
if (noreply)
execute(ascii_get_item(key, "hello world", true));
- sprintf(cmd, "%s %s_notfound 0 0 %u%s\r\n%s\r\n",
- append ? "append" : "prepend",
- key, (unsigned int)strlen(value), noreply ? " noreply" : "",
- value);
+ snprintf(cmd, sizeof(cmd), "%s %s_notfound 0 0 %u%s\r\n%s\r\n",
+ append ? "append" : "prepend",
+ key, (unsigned int)strlen(value), noreply ? " noreply" : "",
+ value);
execute(send_string(cmd));
if (noreply)
{ 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";
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;
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"
"\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;
}
}
{
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)
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);
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;
}
}
}