static pairs_st *global_pairs;
static char *global_keys[GLOBAL_COUNT];
static size_t global_keys_length[GLOBAL_COUNT];
-static char *global_values[GLOBAL_COUNT];
-static size_t global_values_length[GLOBAL_COUNT];
uint8_t init_test(memcached_st *not_used)
{
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
return 0;
}
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
memcached_quit(memc);
rc= memcached_add(memc, key, strlen(key),
value, strlen(value),
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
rc= memcached_delete(memc, key, strlen(key), (time_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
return 0;
}
uint32_t flags;
rc= memcached_delete(memc, key, strlen(key), (time_t)0);
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_NOTFOUND);
+ assert(rc == MEMCACHED_BUFFERED || rc == MEMCACHED_NOTFOUND);
string= memcached_get(memc, key, strlen(key),
&string_length, &flags, &rc);
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
string= memcached_get(memc, key, strlen(key),
&string_length, &flags, &rc);
rc= memcached_set(memc, key, strlen(key),
value, value_length,
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
}
return 0;
rc= memcached_set(memc, key, strlen(key),
value, value_length,
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
}
free(value);
rc= memcached_set(memc, key, strlen(key),
value, value_length,
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
string= memcached_get(memc, key, strlen(key),
&string_length, &flags, &rc);
rc= memcached_set(memc, key, strlen(key),
value, value_length,
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
for (x= 0; x < 10; x++)
{
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
rc= memcached_increment(memc, key, strlen(key),
1, &new_number);
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
rc= memcached_decrement(memc, key, strlen(key),
1, &new_number);
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)10, (uint32_t)3);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
memcached_quit(memc);
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)50, (uint32_t)9);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
return 0;
}
rc= memcached_set(memc, keys[x], key_length[x],
keys[x], key_length[x],
(time_t)50, (uint32_t)9);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
}
rc= memcached_mget(memc, keys, key_length, 3);
rc= memcached_set(memc, keys[x], key_length[x],
keys[x], key_length[x],
(time_t)50, (uint32_t)9);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
}
rc= memcached_mget(memc, keys, key_length, 3);
return 0;
}
+/* Count the results */
+unsigned int callback_counter(memcached_st *ptr, memcached_result_st *result, void *context)
+{
+ unsigned int *counter= (unsigned int *)context;
+
+ *counter= *counter + 1;
+
+ return 0;
+}
+
+uint8_t mget_result_function(memcached_st *memc)
+{
+ memcached_return rc;
+ char *keys[]= {"fudge", "son", "food"};
+ size_t key_length[]= {5, 3, 4};
+ unsigned int x;
+ unsigned int counter;
+ unsigned int (*callbacks[1])(memcached_st *, memcached_result_st *, void *);
+
+ /* We need to empty the server before continueing test */
+ rc= memcached_flush(memc, 0);
+ for (x= 0; x < 3; x++)
+ {
+ rc= memcached_set(memc, keys[x], key_length[x],
+ keys[x], key_length[x],
+ (time_t)50, (uint32_t)9);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
+ }
+
+ rc= memcached_mget(memc, keys, key_length, 3);
+ assert(rc == MEMCACHED_SUCCESS);
+
+ callbacks[0]= &callback_counter;
+ counter= 0;
+ rc= memcached_fetch_execute(memc, callbacks, (void *)&counter, 1);
+
+ assert(counter == 3);
+
+ return 0;
+}
+
uint8_t mget_test(memcached_st *memc)
{
memcached_return rc;
rc= memcached_set(memc, keys[x], key_length[x],
keys[x], key_length[x],
(time_t)50, (uint32_t)9);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
}
rc= memcached_mget(memc, keys, key_length, 3);
list= memcached_stat_get_keys(memc, &stat, &rc);
assert(rc == MEMCACHED_SUCCESS);
for (ptr= list; *ptr; ptr++)
- printf("Found key %s\n", *ptr);
+ assert(*ptr);
fflush(stdout);
free(list);
return 0;
}
+uint8_t version_string_test
+{
+ const char *version_string;
+ version_string= memcached_lib_version();
+ assert(!strcmp(version_string, MEMCACHE_VERSION_STRING));
+ return 0;
+}
+
uint8_t get_stats(memcached_st *memc)
{
unsigned int x;
return 0;
}
+memcached_return clone_test_callback(memcached_st *parent, memcached_st *clone)
+{
+ return MEMCACHED_SUCCESS;
+}
+
+memcached_return cleanup_test_callback(memcached_st *ptr)
+{
+ return MEMCACHED_SUCCESS;
+}
+
+uint8_t callback_test(memcached_st *memc)
+{
+ /* Test User Data */
+ {
+ int x= 5;
+ int *test_ptr;
+ memcached_return rc;
+
+ rc= memcached_callback_set(memc, MEMCACHED_CALLBACK_USER_DATA, &x);
+ assert(rc == MEMCACHED_SUCCESS);
+ test_ptr= (int *)memcached_callback_get(memc, MEMCACHED_CALLBACK_USER_DATA, &rc);
+ assert(*test_ptr == x);
+ }
+
+ /* Test Clone Callback */
+ {
+ clone_func temp_function;
+ memcached_return rc;
+
+ rc= memcached_callback_set(memc, MEMCACHED_CALLBACK_CLONE_FUNCTION, clone_test_callback);
+ assert(rc == MEMCACHED_SUCCESS);
+ temp_function= (clone_func)memcached_callback_get(memc, MEMCACHED_CALLBACK_CLONE_FUNCTION, &rc);
+ assert(temp_function == clone_test_callback);
+ }
+
+ /* Test Cleanup Callback */
+ {
+ cleanup_func temp_function;
+ memcached_return rc;
+
+ rc= memcached_callback_set(memc, MEMCACHED_CALLBACK_CLONE_FUNCTION, cleanup_test_callback);
+ assert(rc == MEMCACHED_SUCCESS);
+ temp_function= (cleanup_func)memcached_callback_get(memc, MEMCACHED_CALLBACK_CLONE_FUNCTION, &rc);
+ assert(temp_function == cleanup_test_callback);
+ }
+
+ return 0;
+}
+
/* We don't test the behavior itself, we test the switches */
uint8_t behavior_test(memcached_st *memc)
{
value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE);
assert(value > 0);
+ {
+ int x= 5;
+ int *test_ptr;
+
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_USER_DATA, &x);
+ test_ptr= (int *)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_USER_DATA);
+ assert(*test_ptr == x);
+ }
+
return 0;
}
rc = memcached_set(memc, key, strlen(key),
randomstuff, strlen(randomstuff), 10, 0);
/* If we fail, lets try again */
- if (rc != MEMCACHED_SUCCESS)
+ if (rc != MEMCACHED_SUCCESS && rc != MEMCACHED_BUFFERED)
rc = memcached_set(memc, key, strlen(key),
randomstuff, strlen(randomstuff), 10, 0);
- assert(rc == MEMCACHED_SUCCESS);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
}
return 0;
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);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, &timeout);
value = (char*)malloc(value_length * sizeof(char));
{
rc= memcached_set(mclone, key, key_len,value, value_length, 0, 0);
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_WRITE_FAILURE);
+ assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_WRITE_FAILURE || rc == MEMCACHED_BUFFERED);
if (rc == MEMCACHED_WRITE_FAILURE)
x--;
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);
+ memcached_behavior_set(mclone, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, &timeout);
- timeout= (int32_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT);
+ timeout= (int32_t)memcached_behavior_get(mclone, MEMCACHED_BEHAVIOR_POLL_TIMEOUT);
assert(timeout == -1);
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);
return 0;
}
+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;
+}
+
+#ifdef NOT_DONE
uint8_t mset_data(memcached_st *memc)
{
unsigned long long x;
return 0;
}
+#endif
uint8_t get_read(memcached_st *memc)
{
return 0;
}
+uint8_t mget_read_function(memcached_st *memc)
+{
+ memcached_return rc;
+ unsigned int counter;
+ unsigned int (*callbacks[1])(memcached_st *, memcached_result_st *, void *);
+
+ rc= memcached_mget(memc, global_keys, global_keys_length, GLOBAL_COUNT);
+ assert(rc == MEMCACHED_SUCCESS);
+
+ callbacks[0]= &callback_counter;
+ counter= 0;
+ rc= memcached_fetch_execute(memc, callbacks, (void *)&counter, 1);
+
+ return 0;
+}
+
uint8_t delete_generate(memcached_st *memc)
{
unsigned int x;
return 0;
}
-uint8_t mdelete_generate(memcached_st *memc)
+uint8_t delete_buffer_generate(memcached_st *memc)
{
- memcached_return rc;
+ int latch= 0;
+ unsigned int x;
- rc= memcached_mdelete(memc, global_keys, global_keys_length, GLOBAL_COUNT, 0);
+ latch= 1;
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, &latch);
+
+ for (x= 0; x < GLOBAL_COUNT; x++)
+ {
+ (void)memcached_delete(memc, global_keys[x], global_keys_length[x], (time_t)0);
+ }
return 0;
}
-
uint8_t free_data(memcached_st *memc)
{
pairs_free(global_pairs);
{"mget", 1, mget_test },
{"mget_result", 1, mget_result_test },
{"mget_result_alloc", 1, mget_result_alloc_test },
+ {"mget_result_function", 1, mget_result_function },
{"get_stats", 0, get_stats },
{"add_host_test", 0, add_host_test },
{"get_stats_keys", 0, get_stats_keys },
{"behavior_test", 0, get_stats_keys },
+ {"callback_test", 0, get_stats_keys },
+ {"version_string_test", 0, version_string_test},
{0, 0, 0}
};
};
test_st generate_tests[] ={
- {"generate_data", 0, generate_data },
+ {"generate_data", 1, generate_data },
{"get_read", 0, get_read },
{"delete_generate", 0, delete_generate },
- {"generate_data", 0, generate_data },
+ {"generate_buffer_data", 1, generate_buffer_data },
+ {"delete_buffer", 0, delete_buffer_generate},
+ {"generate_data", 1, generate_data },
{"mget_read", 0, mget_read },
{"mget_read_result", 0, mget_read_result },
- {"mdelete_generate", 0, mdelete_generate },
- {"cleanup", 0, cleanup_pairs },
+ {"mget_read_function", 0, mget_read_function },
+ {"cleanup", 1, cleanup_pairs },
{0, 0, 0}
};