X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ftest.c;h=653a3ddc905511e932814ab823eb6b388c14a5b9;hb=7440e41da7475141f68195d678abcabd8fc3db23;hp=e7e16f54dee1f5ae7bffde2da0b94a47397575e5;hpb=fa543a0643aafcd5042080ca060f0418b95eb8ca;p=awesomized%2Flibmemcached diff --git a/tests/test.c b/tests/test.c index e7e16f54..653a3ddc 100644 --- a/tests/test.c +++ b/tests/test.c @@ -10,9 +10,13 @@ #include #include #include +#include #include "test.h" +#define TEST_PORT_BASE MEMCACHED_DEFAULT_PORT+10 +#define TEST_SERVERS 5 + long int timedif(struct timeval a, struct timeval b) { register int us, s; @@ -24,6 +28,46 @@ long int timedif(struct timeval a, struct timeval b) return s + us; } +char *server_startup() +{ + unsigned int x; + char server_string_buffer[8096]; + char *end_ptr; + + end_ptr= server_string_buffer; + + for (x= 0; x < TEST_SERVERS; x++) + { + char buffer[1024]; /* Nothing special for number */ + int count; + + sprintf(buffer, "memcached -d -P /tmp/%umemc.pid -p %u", x, x+ TEST_PORT_BASE); + system(buffer); + count= sprintf(end_ptr, "localhost:%u,", x + TEST_PORT_BASE); + end_ptr+= count; + } + *end_ptr= 0; + + return strdup(server_string_buffer); +} + +void server_shutdown(char *server_string) +{ + unsigned int x; + + if (server_string) + { + for (x= 0; x < TEST_SERVERS; x++) + { + char buffer[1024]; /* Nothing special for number */ + sprintf(buffer, "cat /tmp/%umemc.pid | xargs kill", x); + system(buffer); + } + + free(server_string); + } +} + int main(int argc, char *argv[]) { unsigned int x; @@ -32,6 +76,8 @@ int main(int argc, char *argv[]) char *wildcard= NULL; memcached_server_st *servers; collection_st *collection; + collection_st *next; + uint8_t failed; collection= gets_collections(); @@ -42,60 +88,69 @@ int main(int argc, char *argv[]) if (argc == 3) wildcard= argv[2]; - if (!(server_list= getenv("MEMCACHED_SERVERS"))) - server_list= "localhost"; + if ((server_list= getenv("MEMCACHED_SERVERS"))) + { + printf("servers %s\n", server_list); + servers= memcached_servers_parse(server_list); + server_list= NULL; + } + else + { + server_list= server_startup(); + printf("servers %s\n", server_list); + servers= memcached_servers_parse(server_list); + } + assert(servers); - printf("servers %s\n", server_list); srandom(time(NULL)); - servers= memcached_servers_parse(server_list); - assert(servers); for (x= 0; x < memcached_server_list_count(servers); x++) { printf("\t%s : %u\n", servers[x].hostname, servers[x].port); - assert(servers[x].stack_responses == 0); assert(servers[x].fd == -1); assert(servers[x].cursor_active == 0); } printf("\n"); - collection_st *next; for (next= collection; next->name; next++) { test_st *run; run= next->tests; - if (collection_to_run && strcmp(collection_to_run, next->name)) + if (collection_to_run && fnmatch(collection_to_run, next->name, 0)) continue; fprintf(stderr, "\n%s\n\n", next->name); for (x= 0; run->name; run++) { - if (wildcard && strcmp(wildcard, run->name)) - continue; - - fprintf(stderr, "Testing %s", run->name); - + unsigned int loop; memcached_st *memc; memcached_return rc; struct timeval start_time, end_time; + long int load_time; + + if (wildcard && fnmatch(wildcard, run->name, 0)) + continue; + + fprintf(stderr, "Testing %s", run->name); memc= memcached_create(NULL); assert(memc); - if (run->requires_flush) - memcached_flush(memc, 0); - rc= memcached_server_push(memc, servers); assert(rc == MEMCACHED_SUCCESS); - unsigned int loop; + if (run->requires_flush) + { + memcached_flush(memc, 0); + memcached_quit(memc); + } + for (loop= 0; loop < memcached_server_list_count(servers); loop++) { - assert(memc->hosts[loop].stack_responses == 0); assert(memc->hosts[loop].fd == -1); assert(memc->hosts[loop].cursor_active == 0); } @@ -113,11 +168,15 @@ int main(int argc, char *argv[]) } gettimeofday(&start_time, NULL); - run->function(memc); + failed= run->function(memc); gettimeofday(&end_time, NULL); - long int load_time= timedif(end_time, start_time); - fprintf(stderr, "\t\t\t\t\t %ld.%03ld [ ok ]\n", load_time / 1000, - load_time % 1000); + load_time= timedif(end_time, start_time); + if (failed) + fprintf(stderr, "\t\t\t\t\t %ld.%03ld [ failed ]\n", load_time / 1000, + load_time % 1000); + else + fprintf(stderr, "\t\t\t\t\t %ld.%03ld [ ok ]\n", load_time / 1000, + load_time % 1000); if (next->post) (void)next->post(memc); @@ -132,5 +191,7 @@ error: memcached_server_list_free(servers); + server_shutdown(server_list); + return 0; }