rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint16_t)0);
- WATCHPOINT_ERROR(rc);
assert(rc == MEMCACHED_SUCCESS);
return 0;
while ((results= memcached_fetch_result(memc, &results_obj, &rc)) != NULL)
assert(!results);
- assert(rc == MEMCACHED_NOTFOUND);
+ assert(rc == MEMCACHED_END);
for (x= 0; x < 3; x++)
{
assert(results);
}
assert(!results);
- assert(rc == MEMCACHED_NOTFOUND);
+ assert(rc == MEMCACHED_END);
for (x= 0; x < 3; x++)
{
}
assert(!return_value);
assert(return_value_length == 0);
- assert(rc == MEMCACHED_NOTFOUND);
+ assert(rc == MEMCACHED_END);
for (x= 0; x < 3; x++)
{
&value_length, &flags, &rc)))
count++;
assert(count == 0);
- assert(rc == MEMCACHED_NOTFOUND);
+ assert(rc == MEMCACHED_END);
for (x= 0; x < 4; x++)
{
assert(rc == MEMCACHED_SUCCESS);
}
- for (x= 0; x < 10; x++)
+ for (x= 0; x < 2; x++)
{
value= memcached_get(memc, keys[0], key_length[0],
&value_length, &flags, &rc);
{
value= memcached_fetch(memc, return_key, &return_key_length,
&value_length, &flags, &rc);
- memcmp(value, insert_data, value_length);
+ assert(rc == MEMCACHED_SUCCESS);
+ assert(!(memcmp(value, insert_data, value_length)));
assert(value_length);
free(value);
- assert(rc == MEMCACHED_SUCCESS);
}
}
return 0;
}
+uint8_t user_supplied_bug9(memcached_st *memc)
+{
+ memcached_return rc;
+ char *keys[]= {"UDATA:edevil@sapo.pt", "fudge&*@#", "for^#@&$not"};
+ size_t key_length[3];
+ unsigned int x;
+ uint16_t flags;
+ unsigned count= 0;
+
+ char return_key[MEMCACHED_MAX_KEY];
+ size_t return_key_length;
+ char *return_value;
+ size_t return_value_length;
+
+
+ key_length[0]= strlen("UDATA:edevil@sapo.pt");
+ key_length[1]= strlen("fudge&*@#");
+ key_length[2]= strlen("for^#@&$not");
+
+
+ for (x= 0; x < 3; x++)
+ {
+ rc= memcached_set(memc, keys[x], key_length[x],
+ keys[x], key_length[x],
+ (time_t)50, (uint16_t)9);
+ assert(rc == MEMCACHED_SUCCESS);
+ }
+
+ rc= memcached_mget(memc, keys, key_length, 3);
+ assert(rc == MEMCACHED_SUCCESS);
+
+ /* We need to empty the server before continueing test */
+ while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
+ &return_value_length, &flags, &rc)) != NULL)
+ {
+ assert(return_value);
+ count++;
+ }
+ assert(count == 3);
+
+ return 0;
+}
+
+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);
+
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_NO_BLOCK, &set);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_TCP_NODELAY, &set);
+
+ 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;
+}
+
uint8_t result_static(memcached_st *memc)
{
memcached_result_st result;
memcached_return enable_consistent(memcached_st *memc)
{
memcached_server_distribution value= MEMCACHED_DISTRIBUTION_CONSISTENT;
+ memcached_hash hash;
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, &value);
+ pre_hsieh(memc);
+
+ value= (memcached_server_distribution)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION);
+ assert(value == MEMCACHED_DISTRIBUTION_CONSISTENT);
+
+ hash= (memcached_hash)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH);
+ assert(hash == MEMCACHED_HASH_HSIEH);
+
return MEMCACHED_SUCCESS;
}
{"user_supplied_bug6", 1, user_supplied_bug6 },
{"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 },
{0, 0, 0}
};
{"user", 0, 0, user_tests},
{"generate", 0, 0, generate_tests},
{"generate_hsieh", pre_hsieh, 0, generate_tests},
+ {"generate_hsieh_consistent", enable_consistent, 0, generate_tests},
+ {"generate_md5", pre_md5, 0, generate_tests},
{"generate_nonblock", pre_nonblock, 0, generate_tests},
{0, 0, 0, 0}
};