X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ffunction.c;h=c95d3348ae353d79854b716cad55c2f9db49567c;hb=d9dab0a24eebad142b33d00ccb0f87b083f02195;hp=2ef0dc256c3c9c75d7b6f14603f923638ca814fe;hpb=e4ea2e9129e57ee1da4787a473d21b6aa9930396;p=m6w6%2Flibmemcached diff --git a/tests/function.c b/tests/function.c index 2ef0dc25..c95d3348 100644 --- a/tests/function.c +++ b/tests/function.c @@ -2856,7 +2856,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)); @@ -4153,6 +4154,46 @@ static test_return_t replication_mget_test(memcached_st *memc) return TEST_SUCCESS; } +static test_return_t replication_randomize_mget_test(memcached_st *memc) +{ + memcached_result_st result_obj; + memcached_return rc; + memcached_st *memc_clone= memcached_clone(NULL, memc); + memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, 3); + memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ, 1); + + const char *keys[]= { "key1", "key2", "key3", "key4", "key5", "key6", "key7" }; + size_t len[]= { 4, 4, 4, 4, 4, 4, 4 }; + + for (int x=0; x< 7; ++x) + { + rc= memcached_set(memc, keys[x], len[x], "1", 1, 0, 0); + test_truth(rc == MEMCACHED_SUCCESS); + } + + memcached_quit(memc); + + for (int x=0; x< 7; ++x) { + const char key[2]= { [0]= (const char)x }; + + rc= memcached_mget_by_key(memc_clone, key, 1, keys, len, 7); + test_truth(rc == MEMCACHED_SUCCESS); + + memcached_result_st *results= memcached_result_create(memc_clone, &result_obj); + test_truth(results); + + int hits= 0; + while ((results= memcached_fetch_result(memc_clone, &result_obj, &rc)) != NULL) + { + ++hits; + } + test_truth(hits == 7); + memcached_result_free(&result_obj); + } + memcached_free(memc_clone); + return TEST_SUCCESS; +} + static test_return_t replication_delete_test(memcached_st *memc) { memcached_return rc; @@ -4311,7 +4352,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); test_truth(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_USE_UDP, 1) == MEMCACHED_SUCCESS); test_truth(memc->flags & MEM_USE_UDP); test_truth(memc->flags & MEM_NOREPLY);; @@ -5509,6 +5550,7 @@ test_st replication_tests[]= { {"get", 0, replication_get_test }, {"mget", 0, replication_mget_test }, {"delete", 0, replication_delete_test }, + {"rand_mget", 0, replication_randomize_mget_test }, {0, 0, 0} };