X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ffunction.c;h=f1074697d4853d6f820238376beb1bc629740db1;hb=d4c5a2229396c74f3e66767f01ce4c8853eba92b;hp=744e94ec6932a0dadfd9d185ba32eee73c96adaf;hpb=4c8d96d66ed97bf25db6afbd14abfbeb42661371;p=m6w6%2Flibmemcached diff --git a/tests/function.c b/tests/function.c index 744e94ec..f1074697 100644 --- a/tests/function.c +++ b/tests/function.c @@ -1224,6 +1224,112 @@ static test_return_t decrement_with_initial_test(memcached_st *memc) return TEST_SUCCESS; } +static test_return_t increment_by_key_test(memcached_st *memc) +{ + uint64_t new_number; + memcached_return rc; + const char *master_key= "foo"; + const char *key= "number"; + const char *value= "0"; + + rc= memcached_set_by_key(memc, master_key, strlen(master_key), + key, strlen(key), + value, strlen(value), + (time_t)0, (uint32_t)0); + assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED); + + rc= memcached_increment_by_key(memc, master_key, strlen(master_key), key, strlen(key), + 1, &new_number); + assert(rc == MEMCACHED_SUCCESS); + assert(new_number == 1); + + rc= memcached_increment_by_key(memc, master_key, strlen(master_key), key, strlen(key), + 1, &new_number); + assert(rc == MEMCACHED_SUCCESS); + assert(new_number == 2); + + return TEST_SUCCESS; +} + +static test_return_t increment_with_initial_by_key_test(memcached_st *memc) +{ + if (memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) != 0) + { + uint64_t new_number; + memcached_return rc; + const char *master_key= "foo"; + const char *key= "number"; + uint64_t initial= 0; + + rc= memcached_increment_with_initial_by_key(memc, master_key, strlen(master_key), + key, strlen(key), + 1, initial, 0, &new_number); + assert(rc == MEMCACHED_SUCCESS); + assert(new_number == initial); + + rc= memcached_increment_with_initial_by_key(memc, master_key, strlen(master_key), + key, strlen(key), + 1, initial, 0, &new_number); + assert(rc == MEMCACHED_SUCCESS); + assert(new_number == (initial + 1)); + } + return TEST_SUCCESS; +} + +static test_return_t decrement_by_key_test(memcached_st *memc) +{ + uint64_t new_number; + memcached_return rc; + const char *master_key= "foo"; + const char *key= "number"; + const char *value= "3"; + + rc= memcached_set_by_key(memc, master_key, strlen(master_key), + key, strlen(key), + value, strlen(value), + (time_t)0, (uint32_t)0); + assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED); + + rc= memcached_decrement_by_key(memc, master_key, strlen(master_key), + key, strlen(key), + 1, &new_number); + assert(rc == MEMCACHED_SUCCESS); + assert(new_number == 2); + + rc= memcached_decrement_by_key(memc, master_key, strlen(master_key), + key, strlen(key), + 1, &new_number); + assert(rc == MEMCACHED_SUCCESS); + assert(new_number == 1); + + return TEST_SUCCESS; +} + +static test_return_t decrement_with_initial_by_key_test(memcached_st *memc) +{ + if (memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) != 0) + { + uint64_t new_number; + memcached_return rc; + const char *master_key= "foo"; + const char *key= "number"; + uint64_t initial= 3; + + rc= memcached_decrement_with_initial_by_key(memc, master_key, strlen(master_key), + key, strlen(key), + 1, initial, 0, &new_number); + assert(rc == MEMCACHED_SUCCESS); + assert(new_number == initial); + + rc= memcached_decrement_with_initial_by_key(memc, master_key, strlen(master_key), + key, strlen(key), + 1, initial, 0, &new_number); + assert(rc == MEMCACHED_SUCCESS); + assert(new_number == (initial - 1)); + } + return TEST_SUCCESS; +} + static test_return_t quit_test(memcached_st *memc) { memcached_return rc; @@ -2742,7 +2848,8 @@ static test_return_t auto_eject_hosts(memcached_st *trash) /* and re-added when it's back. */ memc->hosts[2].next_retry = time(NULL) - 1; memc->next_distribution_rebuild= time(NULL) - 1; - run_distribution(memc); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, + memc->distribution); for (int x= 0; x < 99; x++) { uint32_t server_idx = memcached_generate_hash(memc, ketama_test_cases[x].key, strlen(ketama_test_cases[x].key)); @@ -4196,7 +4303,7 @@ static test_return_t set_udp_behavior_test(memcached_st *memc) memcached_quit(memc); memc->number_of_hosts= 0; - run_distribution(memc); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, memc->distribution); assert(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_USE_UDP, 1) == MEMCACHED_SUCCESS); assert(memc->flags & MEM_USE_UDP); assert(memc->flags & MEM_NOREPLY);; @@ -5291,6 +5398,10 @@ test_st tests[] ={ {"increment_with_initial", 1, increment_with_initial_test }, {"decrement", 0, decrement_test }, {"decrement_with_initial", 1, decrement_with_initial_test }, + {"increment_by_key", 0, increment_by_key_test }, + {"increment_with_initial_by_key", 1, increment_with_initial_by_key_test }, + {"decrement_by_key", 0, decrement_by_key_test }, + {"decrement_with_initial_by_key", 1, decrement_with_initial_by_key_test }, {"quit", 0, quit_test }, {"mget", 1, mget_test }, {"mget_result", 1, mget_result_test },