X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ffunction.c;h=9c57ec4da926720d39eb250ab201bf993c6113d9;hb=638c4924c5968294af0959620b4c04bfa25b6efb;hp=3408296681551ccde00373cd00f3e2af0372538f;hpb=ce94a18ec36e050c0afb49a8c6fba022e5bb82ee;p=m6w6%2Flibmemcached diff --git a/tests/function.c b/tests/function.c index 34082966..9c57ec4d 100644 --- a/tests/function.c +++ b/tests/function.c @@ -1379,6 +1379,7 @@ uint8_t user_supplied_bug9(memcached_st *memc) &return_value_length, &flags, &rc)) != NULL) { assert(return_value); + free(return_value); count++; } assert(count == 3); @@ -1386,6 +1387,88 @@ uint8_t user_supplied_bug9(memcached_st *memc) return 0; } +/* We are testing with aggressive timeout to get failures */ +uint8_t user_supplied_bug10(memcached_st *memc) +{ + char *key= "foo"; + char *value; + size_t value_length= 512; + unsigned int x; + int key_len= 3; + memcached_return rc; + unsigned int set= 1; + memcached_st *mclone= memcached_clone(NULL, memc); + int32_t timeout; + + memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_NO_BLOCK, &set); + memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_TCP_NODELAY, &set); + timeout= 2; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, &timeout); + + value = (char*)malloc(value_length * sizeof(char)); + + for (x= 0; x < value_length; x++) + value[x]= (char) (x % 127); + + for (x= 1; x <= 100000; ++x) + { + rc= memcached_set(mclone, key, key_len,value, value_length, 0, 0); + + assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_WRITE_FAILURE); + + if (rc == MEMCACHED_WRITE_FAILURE) + x--; + } + + free(value); + memcached_free(mclone); + + return 0; +} + +/* + We are looking failures in the async protocol +*/ +uint8_t user_supplied_bug11(memcached_st *memc) +{ + char *key= "foo"; + char *value; + size_t value_length= 512; + unsigned int x; + int key_len= 3; + memcached_return rc; + unsigned int set= 1; + int32_t timeout; + memcached_st *mclone= memcached_clone(NULL, memc); + + memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_NO_BLOCK, &set); + memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_TCP_NODELAY, &set); + timeout= -1; + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, &timeout); + + timeout= (int32_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT); + + assert(timeout == -1); + + value = (char*)malloc(value_length * sizeof(char)); + + for (x= 0; x < value_length; x++) + value[x]= (char) (x % 127); + + for (x= 1; x <= 100000; ++x) + { + rc= memcached_set(mclone, key, key_len,value, value_length, 0, 0); + + WATCHPOINT_IFERROR(rc); + //assert(rc == MEMCACHED_SUCCESS); + } + + free(value); + memcached_free(mclone); + + return 0; +} + uint8_t result_static(memcached_st *memc) { memcached_result_st result; @@ -1882,6 +1965,8 @@ test_st user_tests[] ={ {"user_supplied_bug7", 1, user_supplied_bug7 }, {"user_supplied_bug8", 1, user_supplied_bug8 }, {"user_supplied_bug9", 1, user_supplied_bug9 }, + {"user_supplied_bug10", 1, user_supplied_bug10 }, + {"user_supplied_bug11", 1, user_supplied_bug11 }, {0, 0, 0} };