X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ffunction.c;h=27af67369c5729de9442e37d03061a6968bb05f4;hb=1019d0d8979ae75ee6dea937cb405a1367d6254d;hp=b9e7d303efdbfa121fe44e357dc9b0f1b837a1e2;hpb=cb05d3311de7e7ca578bafb116f3c8a56b9f0aa8;p=awesomized%2Flibmemcached diff --git a/tests/function.c b/tests/function.c index b9e7d303..27af6736 100644 --- a/tests/function.c +++ b/tests/function.c @@ -287,10 +287,18 @@ static test_return connection_test(memcached_st *memc) static test_return error_test(memcached_st *memc) { memcached_return rc; + uint32_t values[] = { 851992627U, 2337886783U, 3196981036U, 4001849190U, 982370485U, 1263635348U, 4242906218U, 3829656100U, 1891735253U, + 334139633U, 2257084983U, 3088286104U, 13199785U, 2542027183U, 1097051614U, 199566778U, 2748246961U, 2465192557U, + 1664094137U, 2405439045U, 1842224848U, 692413798U, 3479807801U, 919913813U, 4269430871U, 610793021U, 527273862U, + 1437122909U, 2300930706U, 2943759320U, 674306647U, 2400528935U, 54481931U, 4186304426U, 1741088401U, 2979625118U, + 4159057246U }; + assert(MEMCACHED_MAXIMUM_RETURN == 37); // You have updated the memcache_error messages but not updated docs/tests. for (rc= MEMCACHED_SUCCESS; rc < MEMCACHED_MAXIMUM_RETURN; rc++) { - printf("Error %d -> %s\n", rc, memcached_strerror(memc, rc)); + uint32_t hash_val; + hash_val= memcached_generate_hash_value(memcached_strerror(memc, rc), strlen(memcached_strerror(memc, rc)), MEMCACHED_HASH_JENKINS); + assert(values[rc] == hash_val); } return 0; @@ -1034,6 +1042,70 @@ static test_return get_test5(memcached_st *memc) return TEST_SUCCESS; } +static test_return mget_end(memcached_st *memc) +{ + const char *keys[] = { "foo", "foo2" }; + size_t lengths[] = { 3, 4 }; + const char *values[] = { "fjord", "41" }; + + memcached_return rc; + + // Set foo and foo2 + for(int i = 0; i < 2; i++) + { + rc= memcached_set(memc, keys[i], lengths[i], values[i], strlen(values[i]), + (time_t)0, (uint32_t)0); + assert(rc == MEMCACHED_SUCCESS); + } + + char *string; + size_t string_length; + uint32_t flags; + + // retrieve both via mget + rc= memcached_mget(memc, keys, lengths, 2); + assert(rc == MEMCACHED_SUCCESS); + + char key[MEMCACHED_MAX_KEY]; + size_t key_length; + + // this should get both + for(int i = 0; i < 2; i++) { + string = memcached_fetch(memc, key, &key_length, &string_length, + &flags, &rc); + assert(rc == MEMCACHED_SUCCESS); + int val = 0; + if(key_length == 4) + val = 1; + assert(string_length == strlen(values[val])); + assert(strncmp(values[val], string, string_length) == 0); + free(string); + } + + // this should indicate end + string = memcached_fetch(memc, key, &key_length, &string_length, &flags, &rc); + assert(rc == MEMCACHED_END); + + // now get just one + rc= memcached_mget(memc, keys, lengths, 1); + assert(rc == MEMCACHED_SUCCESS); + + string = memcached_fetch(memc, key, &key_length, &string_length, &flags, &rc); + assert(key_length == lengths[0]); + assert(strncmp(keys[0], key, key_length) == 0); + assert(string_length == strlen(values[0])); + assert(strncmp(values[0], string, string_length) == 0); + assert(rc == MEMCACHED_SUCCESS); + free(string); + + // this should indicate end + string = memcached_fetch(memc, key, &key_length, &string_length, &flags, &rc); + assert(rc != MEMCACHED_SUCCESS); + assert(rc == MEMCACHED_END); + + return TEST_SUCCESS; +} + /* Do not copy the style of this code, I just access hosts to testthis function */ static test_return stats_servername_test(memcached_st *memc) { @@ -2304,6 +2376,7 @@ static test_return user_supplied_bug16(memcached_st *memc) return 0; } +#ifndef __sun /* Check the validity of chinese key*/ static test_return user_supplied_bug17(memcached_st *memc) { @@ -2330,6 +2403,7 @@ static test_return user_supplied_bug17(memcached_st *memc) return 0; } +#endif /* From Andrei on IRC @@ -3334,7 +3408,7 @@ static memcached_return poll_timeout(memcached_st *memc) memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, timeout); - timeout= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT); + timeout= (size_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT); assert(timeout == 100); @@ -3729,6 +3803,8 @@ static test_return replication_mget_test(memcached_st *memc) memcached_free(new_clone); } + memcached_free(memc_clone); + return TEST_SUCCESS; } @@ -4435,6 +4511,7 @@ test_st tests[] ={ {"mget_result", 1, mget_result_test }, {"mget_result_alloc", 1, mget_result_alloc_test }, {"mget_result_function", 1, mget_result_function }, + {"mget_end", 0, mget_end }, {"get_stats", 0, get_stats }, {"add_host_test", 0, add_host_test }, {"add_host_test_1", 0, add_host_test1 },