X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ffunction.c;h=38de6679daf5e56f2df810c41db23b6a433326ee;hb=26aff973ea8db6495862e66cb287e9c000103c9e;hp=bcf08fe6c8cdd54dd586830204b2ca2568c81b6a;hpb=1d6e6af8afc6a08163160d8107276cac79688751;p=m6w6%2Flibmemcached diff --git a/tests/function.c b/tests/function.c index bcf08fe6..38de6679 100644 --- a/tests/function.c +++ b/tests/function.c @@ -59,26 +59,44 @@ uint8_t server_list_null_test(memcached_st *ptr) return 0; } +#define TEST_PORT_COUNT 7 +uint32_t test_ports[TEST_PORT_COUNT]; + +memcached_return server_display_function(memcached_st *ptr, memcached_server_st *server, void *context) +{ + /* Do Nothing */ + uint32_t *bigger= (uint32_t *)context; + assert(*bigger <= server->port); + + return MEMCACHED_SUCCESS; +} + uint8_t server_sort_test(memcached_st *ptr) { - memcached_server_st *server_list; + uint8_t x; + uint32_t bigger= 0; /* Prime the value for the assert in server_display_function */ memcached_return rc; + memcached_server_function callbacks[1]; + memcached_st *local_memc; - memcached_behavior_set(ptr, MEMCACHED_BEHAVIOR_SORT_HOSTS, 1); - - server_list= memcached_server_list_append(NULL, "arg", 0, &rc); - assert(server_list); + local_memc= memcached_create(NULL); + assert(local_memc); + memcached_behavior_set(local_memc, MEMCACHED_BEHAVIOR_SORT_HOSTS, 1); - server_list= memcached_server_list_append(server_list, "localhost", 0, &rc); - assert(server_list); + for (x= 0; x < TEST_PORT_COUNT; x++) + { + test_ports[x]= random() % 64000; + rc= memcached_server_add(local_memc, "localhost", test_ports[x]); + assert(local_memc->number_of_hosts == x+1); + assert(local_memc->hosts[0].count == x+1); + assert(rc == MEMCACHED_SUCCESS); + } - server_list= memcached_server_list_append(server_list, "c", 0, &rc); - assert(server_list); + callbacks[0]= server_display_function; + memcached_server_cursor(local_memc, callbacks, (void *)&bigger, 1); - server_list= memcached_server_list_append(server_list, "abba", 0, &rc); - assert(server_list); - free(server_list); + memcached_free(local_memc); return 0; } @@ -522,6 +540,70 @@ uint8_t bad_key_test(memcached_st *memc) return 0; } +#define READ_THROUGH_VALUE "set for me" +memcached_return read_through_trigger(memcached_st *memc, + char *key, size_t key_length, + memcached_result_st *result) +{ + + return memcached_result_set_value(result, READ_THROUGH_VALUE, strlen(READ_THROUGH_VALUE)); +} + +uint8_t read_through(memcached_st *memc) +{ + memcached_return rc; + char *key= "foo"; + char *string; + size_t string_length; + uint32_t flags; + + string= memcached_get(memc, key, strlen(key), + &string_length, &flags, &rc); + + assert(rc == MEMCACHED_NOTFOUND); + assert(string_length == 0); + assert(!string); + + rc= memcached_callback_set(memc, MEMCACHED_CALLBACK_GET_FAILURE, read_through_trigger); + assert(rc == MEMCACHED_SUCCESS); + + string= memcached_get(memc, key, strlen(key), + &string_length, &flags, &rc); + + assert(rc == MEMCACHED_SUCCESS); + assert(string_length == strlen(READ_THROUGH_VALUE)); + assert(!strcmp(READ_THROUGH_VALUE, string)); + + string= memcached_get(memc, key, strlen(key), + &string_length, &flags, &rc); + + assert(rc == MEMCACHED_SUCCESS); + assert(string_length == strlen(READ_THROUGH_VALUE)); + assert(!strcmp(READ_THROUGH_VALUE, string)); + + return 0; +} + +memcached_return delete_trigger(memcached_st *ptr, char *key, size_t key_length) +{ + assert(key); + + return MEMCACHED_SUCCESS; +} + +uint8_t delete_through(memcached_st *memc) +{ + memcached_trigger_delete_key callback; + memcached_return rc; + + callback= delete_trigger; + + rc= memcached_callback_set(memc, MEMCACHED_CALLBACK_DELETE_TRIGGER, callback); + assert(rc == MEMCACHED_SUCCESS); + + return 0; +} + uint8_t get_test(memcached_st *memc) { memcached_return rc; @@ -1821,7 +1903,8 @@ uint8_t user_supplied_bug14(memcached_st *memc) &string_length, &flags, &rc); assert(rc == MEMCACHED_SUCCESS); - assert(string); + if (current_length > 0) + assert(string); assert(string_length == current_length); assert(!memcmp(string, value, string_length)); @@ -2467,6 +2550,8 @@ test_st tests[] ={ {"version_string_test", 0, version_string_test}, {"bad_key", 1, bad_key_test }, {"memcached_server_cursor", 1, memcached_server_cursor_test }, + {"read_through", 1, read_through }, + {"delete_through", 1, delete_through }, {0, 0, 0} };