X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ffunction.c;h=2bc0192b3f0cf39f510eefcb729ae4b2852e2ce2;hb=f6c04131cc9952372e3f63de2db4edc9f8181fb2;hp=679dfce579861d971d6ecce4e0fac8c07a179e1e;hpb=109d5bfa8df63c0944417e0f556679b48030c66d;p=m6w6%2Flibmemcached diff --git a/tests/function.c b/tests/function.c index 679dfce5..2bc0192b 100644 --- a/tests/function.c +++ b/tests/function.c @@ -1484,8 +1484,7 @@ static test_return_t mget_execute(memcached_st *memc) /* Try to get all of them with a large multiget */ unsigned int counter= 0; memcached_execute_function callbacks[1]= { [0]= &callback_counter }; - rc= memcached_mget_execute(memc, NULL, 0, - (const char**)keys, key_length, + rc= memcached_mget_execute(memc, (const char**)keys, key_length, (size_t)max_keys, callbacks, &counter, 1); if (binary) @@ -4807,19 +4806,18 @@ static test_return_t regression_bug_447342(memcached_st *memc) rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, 2); assert(rc == MEMCACHED_SUCCESS); - const size_t max_keys= 100; char **keys= calloc(max_keys, sizeof(char*)); size_t *key_length=calloc(max_keys, sizeof(size_t)); for (int x= 0; x < (int)max_keys; ++x) { - char k[251]; - key_length[x]= (size_t)snprintf(k, sizeof(k), "0200%u", x); - keys[x]= strdup(k); - assert(keys[x] != NULL); - rc= memcached_set(memc, k, key_length[x], k, key_length[x], 0, 0); - assert(rc == MEMCACHED_SUCCESS); + char k[251]; + key_length[x]= (size_t)snprintf(k, sizeof(k), "0200%u", x); + keys[x]= strdup(k); + assert(keys[x] != NULL); + rc= memcached_set(memc, k, key_length[x], k, key_length[x], 0, 0); + assert(rc == MEMCACHED_SUCCESS); } /* @@ -4868,6 +4866,32 @@ static test_return_t regression_bug_447342(memcached_st *memc) rc= memcached_fetch_execute(memc, callbacks, (void *)&counter, 1); assert(counter == (unsigned int)max_keys); + /* restore the memc handle */ + memc->hosts[0].port= port0; + memc->hosts[2].port= port2; + + memcached_quit(memc); + + /* Remove half of the objects */ + for (int x= 0; x < (int)max_keys; ++x) + if (x & 1) + { + rc= memcached_delete(memc, keys[x], key_length[x], 0); + assert(rc == MEMCACHED_SUCCESS); + } + + memcached_quit(memc); + memc->hosts[0].port= 0; + memc->hosts[2].port= 0; + + /* now retry the command, this time we should have cache misses */ + rc= memcached_mget(memc, (const char* const *)keys, key_length, max_keys); + assert(rc == MEMCACHED_SUCCESS); + + counter= 0; + rc= memcached_fetch_execute(memc, callbacks, (void *)&counter, 1); + assert(counter == (unsigned int)(max_keys >> 1)); + /* Release allocated resources */ for (size_t x= 0; x < max_keys; ++x) free(keys[x]); @@ -4877,11 +4901,9 @@ static test_return_t regression_bug_447342(memcached_st *memc) /* restore the memc handle */ memc->hosts[0].port= port0; memc->hosts[2].port= port2; - return TEST_SUCCESS; } - /* Test memcached_server_get_last_disconnect * For a working server set, shall be NULL * For a set of non existing server, shall not be NULL