#include <sys/stat.h>
#include <unistd.h>
#include <time.h>
+#include "server.h"
#include "../lib/common.h"
#include "../src/generator.h"
#include "../src/execute.h"
#include "test.h"
#define GLOBAL_COUNT 100000
+#define GLOBAL2_COUNT 1000
+static uint32_t global_count;
+
static pairs_st *global_pairs;
static char *global_keys[GLOBAL_COUNT];
static size_t global_keys_length[GLOBAL_COUNT];
return 0;
}
+uint8_t server_sort_test(memcached_st *ptr)
+{
+ memcached_server_st *server_list;
+ memcached_return rc;
+
+ memcached_behavior_set(ptr, MEMCACHED_BEHAVIOR_SORT_HOSTS, 1);
+
+ server_list= memcached_server_list_append(NULL, "arg", 0, &rc);
+ assert(server_list);
+
+ server_list= memcached_server_list_append(server_list, "localhost", 0, &rc);
+ assert(server_list);
+
+ server_list= memcached_server_list_append(server_list, "c", 0, &rc);
+ assert(server_list);
+
+ server_list= memcached_server_list_append(server_list, "abba", 0, &rc);
+ assert(server_list);
+
+ free(server_list);
+
+ return 0;
+}
+
uint8_t allocation_test(memcached_st *not_used)
{
memcached_st *memc;
rc= memcached_flush(memc, 0);
assert(rc == MEMCACHED_SUCCESS);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, set);
for (x= 0; x < 3; x++)
{
rc= memcached_flush(memc, 0);
assert(rc == MEMCACHED_SUCCESS);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, set);
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
assert(strlen("we the people") == value_length);
assert(rc == MEMCACHED_SUCCESS);
+ rc= memcached_cas(memc, key, key_length,
+ "change the value", strlen("change the value"),
+ 0, 0, memcached_result_cas(results));
+
+ assert(rc == MEMCACHED_SUCCESS);
+
+ rc= memcached_cas(memc, key, key_length,
+ "change the value", strlen("change the value"),
+ 0, 0, 23);
+
+ assert(rc == MEMCACHED_DATA_EXISTS);
+
+
memcached_result_free(&results_obj);
return 0;
memcached_return rc;
char *key= "foo";
char *value= "when we sanitize";
+ unsigned long long setting_value;
+
+ setting_value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NO_BLOCK);
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
rc= memcached_add(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_NOTSTORED);
+
+ /* Too many broken OS'es have broken loopback in async, so we can't be sure of the result */
+ if (setting_value)
+ assert(rc == MEMCACHED_NOTSTORED || MEMCACHED_STORED);
+ else
+ assert(rc == MEMCACHED_NOTSTORED);
return 0;
}
memcached_return rc;
char *key= "foo";
char *value= "when we sanitize";
+ char *original= "first we insert some data";
+
+ rc= memcached_set(memc, key, strlen(key),
+ original, strlen(original),
+ (time_t)0, (uint32_t)0);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
rc= memcached_replace(memc, key, strlen(key),
value, strlen(value),
return 0;
}
+memcached_return server_function(memcached_st *ptr, memcached_server_st *server, void *context)
+{
+ /* Do Nothing */
+
+ return MEMCACHED_SUCCESS;
+}
+
+uint8_t memcached_server_cursor_test(memcached_st *memc)
+{
+ char *context= "foo bad";
+ memcached_server_function callbacks[1];
+
+ callbacks[0]= server_function;
+ memcached_server_cursor(memc, callbacks, context, 1);
+
+ return 0;
+}
+
+uint8_t bad_key_test(memcached_st *memc)
+{
+ memcached_return rc;
+ char *key= "foo bad";
+ char *string;
+ size_t string_length;
+ uint32_t flags;
+ memcached_st *clone;
+ unsigned int set= 1;
+
+ clone= memcached_clone(NULL, memc);
+ assert(clone);
+
+ (void)memcached_behavior_set(clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, set);
+
+ string= memcached_get(clone, key, strlen(key),
+ &string_length, &flags, &rc);
+ assert(rc == MEMCACHED_BAD_KEY_PROVIDED);
+ assert(string_length == 0);
+ assert(!string);
+
+ set= 0;
+ (void)memcached_behavior_set(clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, set);
+ string= memcached_get(clone, key, strlen(key),
+ &string_length, &flags, &rc);
+ assert(rc == MEMCACHED_NOTFOUND);
+ assert(string_length == 0);
+ assert(!string);
+
+ memcached_free(clone);
+
+ return 0;
+}
+
uint8_t get_test(memcached_st *memc)
{
memcached_return rc;
size_t key_length[]= {5, 3, 4};
unsigned int x;
unsigned int counter;
- unsigned int (*callbacks[1])(memcached_st *, memcached_result_st *, void *);
+ memcached_execute_function callbacks[1];
/* We need to empty the server before continueing test */
rc= memcached_flush(memc, 0);
unsigned long long value;
unsigned int set= 1;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, set);
value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NO_BLOCK);
assert(value == 1);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, set);
value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY);
assert(value == 1);
set= MEMCACHED_HASH_MD5;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, set);
value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH);
assert(value == MEMCACHED_HASH_MD5);
set= 0;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, set);
value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NO_BLOCK);
assert(value == 0);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, set);
value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY);
assert(value == 0);
set= MEMCACHED_HASH_DEFAULT;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, set);
value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH);
assert(value == MEMCACHED_HASH_DEFAULT);
set= MEMCACHED_HASH_CRC;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, set);
value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH);
assert(value == MEMCACHED_HASH_CRC);
/* We just keep looking at the same values over and over */
srandom(10);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, &setter);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, &setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, setter);
/* add key */
unsigned long long total;
setter= 1;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, &setter);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, &setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, setter);
#ifdef NOT_YET
setter = 20 * 1024576;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE, &setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE, setter);
setter = 20 * 1024576;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE, &setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE, setter);
getter = memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE);
getter = memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE);
if (rc == MEMCACHED_NOTFOUND)
errors++;
else
+ {
+ WATCHPOINT_ERROR(rc);
assert(0);
+ }
continue;
}
size_t key_lengths[KEY_COUNT];
setter= 1;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, &setter);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, &setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, setter);
#ifdef NOT_YET
setter = 20 * 1024576;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE, &setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE, setter);
setter = 20 * 1024576;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE, &setter);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE, setter);
getter = memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE);
getter = memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE);
#endif
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);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_NO_BLOCK, set);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_TCP_NODELAY, set);
timeout= 2;
- memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, &timeout);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, timeout);
value = (char*)malloc(value_length * sizeof(char));
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);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_NO_BLOCK, set);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_TCP_NODELAY, set);
timeout= -1;
- memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, &timeout);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, timeout);
timeout= (int32_t)memcached_behavior_get(mclone, MEMCACHED_BEHAVIOR_POLL_TIMEOUT);
&value_length, &flags, &rc);
assert(value);
assert(rc == MEMCACHED_SUCCESS);
+ free(value);
rc= memcached_increment(memc, "autoincrement", strlen("autoincrement"),
1, &number_value);
return 0;
}
+/*
+ Bug found where command total one more than MEMCACHED_MAX_BUFFER
+ set key34567890 0 0 8169 \r\n is sent followed by buffer of size 8169, followed by 8169
+ */
+uint8_t user_supplied_bug13(memcached_st *memc)
+{
+ char key[] = "key34567890";
+ char *overflow;
+ memcached_return rc;
+ size_t overflowSize;
+
+ char commandFirst[]= "set key34567890 0 0 ";
+ char commandLast[] = " \r\n"; /* first line of command sent to server */
+ size_t commandLength;
+ size_t testSize;
+
+ commandLength = strlen(commandFirst) + strlen(commandLast) + 4; /* 4 is number of characters in size, probably 8196 */
+
+ overflowSize = MEMCACHED_MAX_BUFFER - commandLength;
+
+ for (testSize= overflowSize - 1; testSize < overflowSize + 1; testSize++)
+ {
+ overflow= malloc(testSize);
+ assert(overflow != NULL);
+
+ memset(overflow, 'x', testSize);
+ rc= memcached_set(memc, key, strlen(key),
+ overflow, testSize, 0, 0);
+ assert(rc == MEMCACHED_SUCCESS);
+ free(overflow);
+ }
+
+ return 0;
+}
+
+
+/*
+ Test values of many different sizes
+ Bug found where command total one more than MEMCACHED_MAX_BUFFER
+ set key34567890 0 0 8169 \r\n
+ is sent followed by buffer of size 8169, followed by 8169
+ */
+uint8_t user_supplied_bug14(memcached_st *memc)
+{
+ int setter= 1;
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, setter);
+ memcached_return rc;
+ char *key= "foo";
+ char *value;
+ size_t value_length= 18000;
+ char *string;
+ size_t string_length;
+ uint32_t flags;
+ unsigned int x;
+ size_t current_length;
+
+ value = (char*)malloc(value_length);
+ assert(value);
+
+ for (x= 0; x < value_length; x++)
+ value[x] = (char) (x % 127);
+
+ for (current_length= 0; current_length < value_length; current_length++)
+ {
+ rc= memcached_set(memc, key, strlen(key),
+ value, current_length,
+ (time_t)0, (uint32_t)0);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
+
+ string= memcached_get(memc, key, strlen(key),
+ &string_length, &flags, &rc);
+
+ assert(rc == MEMCACHED_SUCCESS);
+ assert(string);
+ assert(string_length == current_length);
+ assert(!memcmp(string, value, string_length));
+
+ free(string);
+ }
+
+ free(value);
+
+ return 0;
+}
+
uint8_t result_static(memcached_st *memc)
{
memcached_result_st result;
return 0;
}
-uint8_t generate_data(memcached_st *memc)
+uint8_t generate_pairs(memcached_st *memc)
{
unsigned long long x;
- global_pairs= pairs_generate(GLOBAL_COUNT);
- execute_set(memc, global_pairs, GLOBAL_COUNT);
+ global_pairs= pairs_generate(GLOBAL_COUNT, 400);
+ global_count= GLOBAL_COUNT;
- for (x= 0; x < GLOBAL_COUNT; x++)
+ for (x= 0; x < global_count; x++)
{
global_keys[x]= global_pairs[x].key;
global_keys_length[x]= global_pairs[x].key_length;
return 0;
}
-uint8_t generate_buffer_data(memcached_st *memc)
+uint8_t generate_large_pairs(memcached_st *memc)
{
- int latch= 0;
+ unsigned long long x;
+ global_pairs= pairs_generate(GLOBAL2_COUNT, MEMCACHED_MAX_BUFFER+10);
+ global_count= GLOBAL2_COUNT;
- latch= 1;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, &latch);
- generate_data(memc);
+ for (x= 0; x < global_count; x++)
+ {
+ global_keys[x]= global_pairs[x].key;
+ global_keys_length[x]= global_pairs[x].key_length;
+ }
return 0;
}
-#ifdef NOT_DONE
-uint8_t mset_data(memcached_st *memc)
+uint8_t generate_data(memcached_st *memc)
{
- unsigned long long x;
- global_pairs= pairs_generate(GLOBAL_COUNT);
+ execute_set(memc, global_pairs, global_count);
- (void)memcached_delete(memc, global_keys[x], global_keys_length[x], (time_t)0);
+ return 0;
+}
- for (x= 0; x < GLOBAL_COUNT; x++)
- {
- global_keys[x]= global_pairs[x].key;
- global_keys_length[x]= global_pairs[x].key_length;
- }
+uint8_t generate_buffer_data(memcached_st *memc)
+{
+ int latch= 0;
+
+ latch= 1;
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, latch);
+ generate_data(memc);
return 0;
}
-#endif
uint8_t get_read(memcached_st *memc)
{
size_t return_value_length;
uint32_t flags;
- for (x= 0; x < GLOBAL_COUNT; x++)
+ for (x= 0; x < global_count; x++)
{
return_value= memcached_get(memc, global_keys[x], global_keys_length[x],
&return_value_length, &flags, &rc);
{
memcached_return rc;
- rc= memcached_mget(memc, global_keys, global_keys_length, GLOBAL_COUNT);
+ rc= memcached_mget(memc, global_keys, global_keys_length, global_count);
assert(rc == MEMCACHED_SUCCESS);
/* Turn this into a help function */
{
{
memcached_return rc;
- rc= memcached_mget(memc, global_keys, global_keys_length, GLOBAL_COUNT);
+ rc= memcached_mget(memc, global_keys, global_keys_length, global_count);
assert(rc == MEMCACHED_SUCCESS);
/* Turn this into a help function */
{
unsigned int counter;
unsigned int (*callbacks[1])(memcached_st *, memcached_result_st *, void *);
- rc= memcached_mget(memc, global_keys, global_keys_length, GLOBAL_COUNT);
+ rc= memcached_mget(memc, global_keys, global_keys_length, global_count);
assert(rc == MEMCACHED_SUCCESS);
callbacks[0]= &callback_counter;
{
unsigned int x;
- for (x= 0; x < GLOBAL_COUNT; x++)
+ for (x= 0; x < global_count; x++)
{
(void)memcached_delete(memc, global_keys[x], global_keys_length[x], (time_t)0);
}
unsigned int x;
latch= 1;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, &latch);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, latch);
- for (x= 0; x < GLOBAL_COUNT; x++)
+ for (x= 0; x < global_count; x++)
{
(void)memcached_delete(memc, global_keys[x], global_keys_length[x], (time_t)0);
}
memcached_return pre_nonblock(memcached_st *memc)
{
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, NULL);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, 0);
return MEMCACHED_SUCCESS;
}
memcached_return pre_md5(memcached_st *memc)
{
memcached_hash value= MEMCACHED_HASH_MD5;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, value);
return MEMCACHED_SUCCESS;
}
memcached_return pre_crc(memcached_st *memc)
{
memcached_hash value= MEMCACHED_HASH_CRC;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, value);
return MEMCACHED_SUCCESS;
}
memcached_return pre_hsieh(memcached_st *memc)
{
memcached_hash value= MEMCACHED_HASH_HSIEH;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, value);
return MEMCACHED_SUCCESS;
}
memcached_return pre_hash_fnv1_64(memcached_st *memc)
{
memcached_hash value= MEMCACHED_HASH_FNV1_64;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, value);
return MEMCACHED_SUCCESS;
}
memcached_return pre_hash_fnv1a_64(memcached_st *memc)
{
memcached_hash value= MEMCACHED_HASH_FNV1A_64;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, value);
return MEMCACHED_SUCCESS;
}
memcached_return pre_hash_fnv1_32(memcached_st *memc)
{
memcached_hash value= MEMCACHED_HASH_FNV1_32;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, value);
return MEMCACHED_SUCCESS;
}
memcached_return pre_hash_fnv1a_32(memcached_st *memc)
{
memcached_hash value= MEMCACHED_HASH_FNV1A_32;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, value);
return MEMCACHED_SUCCESS;
}
memcached_return pre_hash_ketama(memcached_st *memc)
{
memcached_hash value= MEMCACHED_HASH_KETAMA;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, value);
return MEMCACHED_SUCCESS;
}
{
memcached_server_distribution value= MEMCACHED_DISTRIBUTION_CONSISTENT;
memcached_hash hash;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, &value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, value);
pre_hsieh(memc);
value= (memcached_server_distribution)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION);
memc->hosts[0].minor_version >= 2 &&
memc->hosts[0].micro_version >= 4)
{
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, &set);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, set);
return MEMCACHED_SUCCESS;
}
memcached_return pre_nodelay(memcached_st *memc)
{
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, NULL);
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, NULL);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, 0);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, 0);
return MEMCACHED_SUCCESS;
}
timeout= 100;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, &timeout);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, timeout);
timeout= (int32_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT);
{"init", 0, init_test },
{"allocation", 0, allocation_test },
{"server_list_null_test", 0, server_list_null_test},
+ {"server_sort", 0, server_sort_test},
{"clone_test", 0, clone_test },
{"error", 0, error_test },
{"set", 0, set_test },
{"set2", 0, set_test2 },
{"set3", 0, set_test3 },
{"add", 1, add_test },
- {"replace", 0, replace_test },
+ {"replace", 1, replace_test },
{"delete", 1, delete_test },
{"get", 1, get_test },
{"get2", 0, get_test2 },
{"behavior_test", 0, get_stats_keys },
{"callback_test", 0, get_stats_keys },
{"version_string_test", 0, version_string_test},
+ {"bad_key", 1, bad_key_test },
+ {"memcached_server_cursor", 1, memcached_server_cursor_test },
{0, 0, 0}
};
{"user_supplied_bug10", 1, user_supplied_bug10 },
{"user_supplied_bug11", 1, user_supplied_bug11 },
{"user_supplied_bug12", 1, user_supplied_bug12 },
+ {"user_supplied_bug13", 1, user_supplied_bug13 },
+ {"user_supplied_bug14", 1, user_supplied_bug14 },
{0, 0, 0}
};
test_st generate_tests[] ={
+ {"generate_pairs", 1, generate_pairs },
{"generate_data", 1, generate_data },
{"get_read", 0, get_read },
{"delete_generate", 0, delete_generate },
{"mget_read_result", 0, mget_read_result },
{"mget_read_function", 0, mget_read_function },
{"cleanup", 1, cleanup_pairs },
+ {"generate_large_pairs", 1, generate_large_pairs },
+ {"generate_data", 1, generate_data },
+ {"generate_buffer_data", 1, generate_buffer_data },
+ {"cleanup", 1, cleanup_pairs },
{0, 0, 0}
};
{0, 0, 0, 0}
};
-collection_st *gets_collections(void)
+#define SERVERS_TO_CREATE 5
+
+void *world_create(void)
+{
+ server_startup_st *construct;
+
+ construct= (server_startup_st *)malloc(sizeof(server_startup_st));
+ memset(construct, 0, sizeof(server_startup_st));
+ construct->count= SERVERS_TO_CREATE;
+ construct->udp= 0;
+ server_startup(construct);
+
+ return construct;
+}
+
+void world_destroy(void *p)
+{
+ server_startup_st *construct= (server_startup_st *)p;
+ memcached_server_st *servers= (memcached_server_st *)construct->servers;
+ memcached_server_list_free(servers);
+
+ server_shutdown(construct);
+ free(construct);
+}
+
+void get_world(world_st *world)
{
- return collection;
+ world->collections= collection;
+ world->create= world_create;
+ world->destroy= world_destroy;
}