X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Fatomsmasher.c;h=08aa86f7f7cb3d72f30cb15ba4efb12ca97a8240;hb=7e0ffed050b62cc5dcf5d16c148185074bfd7d50;hp=abe3a21e9cec52ab99e7d868ff099a5f7cba2a33;hpb=e660fe3e93b1068891c1306fd9eaeac27d3c18a9;p=awesomized%2Flibmemcached diff --git a/tests/atomsmasher.c b/tests/atomsmasher.c index abe3a21e..08aa86f7 100644 --- a/tests/atomsmasher.c +++ b/tests/atomsmasher.c @@ -2,7 +2,6 @@ Sample test application. */ #include -#include #include #include #include @@ -12,9 +11,9 @@ #include #include #include "server.h" -#include "../lib/common.h" -#include "../src/generator.h" -#include "../src/execute.h" +#include "../libmemcached/common.h" +#include "../clients/generator.h" +#include "../clients/execute.h" #ifndef INT64_MAX #define INT64_MAX LONG_MAX @@ -37,14 +36,14 @@ static pairs_st *global_pairs; static char *global_keys[GLOBAL_COUNT]; static size_t global_keys_length[GLOBAL_COUNT]; -uint8_t cleanup_pairs(memcached_st *memc) +static test_return cleanup_pairs(memcached_st *memc __attribute__((unused))) { pairs_free(global_pairs); return 0; } -uint8_t generate_pairs(memcached_st *memc) +static test_return generate_pairs(memcached_st *memc __attribute__((unused))) { unsigned long long x; global_pairs= pairs_generate(GLOBAL_COUNT, 400); @@ -59,7 +58,7 @@ uint8_t generate_pairs(memcached_st *memc) return 0; } -uint8_t drizzle(memcached_st *memc) +static test_return drizzle(memcached_st *memc) { unsigned int x; memcached_return rc; @@ -111,34 +110,32 @@ infinite: return 0; } -memcached_return pre_nonblock(memcached_st *memc) +static memcached_return pre_nonblock(memcached_st *memc) { - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, NULL); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, 0); return MEMCACHED_SUCCESS; } -memcached_return pre_md5(memcached_st *memc) +static memcached_return pre_md5(memcached_st *memc) { - memcached_hash value= MEMCACHED_HASH_MD5; - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, (uint64_t)MEMCACHED_HASH_MD5); return MEMCACHED_SUCCESS; } -memcached_return pre_hsieh(memcached_st *memc) +static memcached_return pre_hsieh(memcached_st *memc) { - memcached_hash value= MEMCACHED_HASH_HSIEH; - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, (uint64_t)MEMCACHED_HASH_HSIEH); return MEMCACHED_SUCCESS; } -memcached_return enable_consistent(memcached_st *memc) +static memcached_return enable_consistent(memcached_st *memc) { memcached_server_distribution value= MEMCACHED_DISTRIBUTION_CONSISTENT; memcached_hash hash; - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, &value); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, value); pre_hsieh(memc); value= (memcached_server_distribution)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION); @@ -151,10 +148,56 @@ memcached_return enable_consistent(memcached_st *memc) return MEMCACHED_SUCCESS; } +/* + Set the value, then quit to make sure it is flushed. + Come back in and test that add fails. +*/ +static test_return add_test(memcached_st *memc) +{ + memcached_return rc; + char *key= "foo"; + char *value= "when we sanitize"; + unsigned long long setting_value; + + setting_value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NO_BLOCK); + + rc= memcached_set(memc, key, strlen(key), + value, strlen(value), + (time_t)0, (uint32_t)0); + assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED); + memcached_quit(memc); + rc= memcached_add(memc, key, strlen(key), + value, strlen(value), + (time_t)0, (uint32_t)0); + + /* Too many broken OS'es have broken loopback in async, so we can't be sure of the result */ + if (setting_value) + assert(rc == MEMCACHED_NOTSTORED || MEMCACHED_STORED); + else + assert(rc == MEMCACHED_NOTSTORED); + + return 0; +} + +/* + * repeating add_tests many times + * may show a problem in timing + */ +static test_return many_adds(memcached_st *memc) +{ + unsigned int i; + for (i = 0; i < TEST_COUNTER; i++) + { + add_test(memc); + } + return 0; +} + test_st smash_tests[] ={ {"generate_pairs", 1, generate_pairs }, {"drizzle", 1, drizzle }, {"cleanup", 1, cleanup_pairs }, + {"many_adds", 1, many_adds }, {0, 0, 0} }; @@ -170,7 +213,7 @@ collection_st collection[] ={ #define SERVERS_TO_CREATE 5 -void *world_create(void) +static void *world_create(void) { server_startup_st *construct; @@ -183,7 +226,7 @@ void *world_create(void) return construct; } -void world_destroy(void *p) +static void world_destroy(void *p) { server_startup_st *construct= (server_startup_st *)p; memcached_server_st *servers= (memcached_server_st *)construct->servers;