X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ftest.c;h=7b8c462e247380f326811caaf6184e7b60fe828e;hb=1207354f3bcebf2bb489ec0e56152918d56be81e;hp=5653271aa6fe06d9f9ae06c6107d63cb92e45332;hpb=d23b8c0a8c394a0ea2d0482e9e4d508e2f38f642;p=m6w6%2Flibmemcached diff --git a/tests/test.c b/tests/test.c index 5653271a..7b8c462e 100644 --- a/tests/test.c +++ b/tests/test.c @@ -7,6 +7,9 @@ #include #include #include +#include +#include +#include #include #include "../lib/common.h" @@ -521,9 +524,10 @@ void behavior_test(memcached_st *memc) value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY); assert(value == 1); - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_MD5_HASHING, &set); - value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_MD5_HASHING); - assert(value == 1); + set= MEMCACHED_HASH_MD5; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &set); + value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH); + assert(value == MEMCACHED_HASH_MD5); set= 0; @@ -535,9 +539,15 @@ void behavior_test(memcached_st *memc) value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY); assert(value == 0); - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_MD5_HASHING, &set); - value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_MD5_HASHING); - assert(value == 0); + set= MEMCACHED_HASH_DEFAULT; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &set); + value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH); + assert(value == MEMCACHED_HASH_DEFAULT); + + set= MEMCACHED_HASH_CRC; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &set); + value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH); + assert(value == MEMCACHED_HASH_CRC); value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE); assert(value > 0); @@ -800,20 +810,92 @@ void add_host_test1(memcached_st *memc) memcached_server_list_free(servers); } -void pre_nonblock(memcached_st *memc) +memcached_return pre_nonblock(memcached_st *memc) { memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, NULL); + + return MEMCACHED_SUCCESS; +} + +memcached_return pre_md5(memcached_st *memc) +{ + memcached_hash value= MEMCACHED_HASH_MD5; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + + return MEMCACHED_SUCCESS; +} + +memcached_return pre_crc(memcached_st *memc) +{ + memcached_hash value= MEMCACHED_HASH_CRC; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + + return MEMCACHED_SUCCESS; +} + +memcached_return pre_hash_fnv1_64(memcached_st *memc) +{ + memcached_hash value= MEMCACHED_HASH_FNV1_64; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + + return MEMCACHED_SUCCESS; +} + +memcached_return pre_hash_fnv1a_64(memcached_st *memc) +{ + memcached_hash value= MEMCACHED_HASH_FNV1A_64; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + + return MEMCACHED_SUCCESS; } -void pre_md5(memcached_st *memc) +memcached_return pre_hash_fnv1_32(memcached_st *memc) { - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_MD5_HASHING, NULL); + memcached_hash value= MEMCACHED_HASH_FNV1_32; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + + return MEMCACHED_SUCCESS; +} + +memcached_return pre_hash_fnv1a_32(memcached_st *memc) +{ + memcached_hash value= MEMCACHED_HASH_FNV1A_32; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + + return MEMCACHED_SUCCESS; +} + +memcached_return pre_hash_ketama(memcached_st *memc) +{ + memcached_hash value= MEMCACHED_HASH_KETAMA; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + + return MEMCACHED_SUCCESS; +} + +memcached_return pre_unix_socket(memcached_st *memc) +{ + memcached_return rc; + struct stat buf; + + memcached_server_list_free(memc->hosts); + memc->hosts= NULL; + memc->number_of_hosts= 0; + + if (stat("/tmp/memcached.socket", &buf)) + return MEMCACHED_FAILURE; + + rc= memcached_server_add_unix_socket(memc, "/tmp/memcached.socket"); + + return rc; } -void pre_nodelay(memcached_st *memc) +memcached_return pre_nodelay(memcached_st *memc) { memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, NULL); memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, NULL); + + return MEMCACHED_SUCCESS; } typedef struct collection_st collection_st; @@ -827,8 +909,8 @@ struct test_st { struct collection_st { char *name; - void (*pre)(memcached_st *memc); - void (*post)(memcached_st *memc); + memcached_return (*pre)(memcached_st *memc); + memcached_return (*post)(memcached_st *memc); test_st *tests; }; @@ -917,6 +999,14 @@ int main(int argc, char *argv[]) {"nonblock", pre_nonblock, 0, tests}, {"nodelay", pre_nodelay, 0, tests}, {"md5", pre_md5, 0, tests}, + {"crc", pre_crc, 0, tests}, + {"fnv1_64", pre_hash_fnv1_64, 0, tests}, + {"fnv1a_64", pre_hash_fnv1a_64, 0, tests}, + {"fnv1_32", pre_hash_fnv1_32, 0, tests}, + {"fnv1a_32", pre_hash_fnv1a_32, 0, tests}, + {"ketama", pre_hash_ketama, 0, tests}, + {"unix_socket", pre_unix_socket, 0, tests}, + {"unix_socket_nodelay", pre_nodelay, 0, tests}, {"string", 0, 0, string_tests}, {"user", 0, 0, user_tests}, {0, 0, 0, 0} @@ -963,7 +1053,16 @@ int main(int argc, char *argv[]) } if (next->pre) - next->pre(memc); + { + memcached_return rc; + rc= next->pre(memc); + + if (rc != MEMCACHED_SUCCESS) + { + fprintf(stderr, "\t\t\t\t\t [ skipping ]\n"); + goto error; + } + } gettimeofday(&start_time, NULL); run->function(memc); @@ -973,9 +1072,10 @@ int main(int argc, char *argv[]) load_time % 1000); if (next->post) - next->post(memc); + (void)next->post(memc); assert(memc); +error: memcached_free(memc); } }