X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Fmem_functions.cc;h=14141a0b4e95ac0da50eed997541ef972139838b;hb=6dab5e4d5dfb6145966a3efa48a41cf7e609c9ad;hp=3bc38fcd893b5e5873644b0914d77c0f0b5fc627;hpb=b16fffff43d822239ce79a366ec36873b0803df9;p=awesomized%2Flibmemcached diff --git a/tests/mem_functions.cc b/tests/mem_functions.cc index 3bc38fcd..14141a0b 100644 --- a/tests/mem_functions.cc +++ b/tests/mem_functions.cc @@ -208,11 +208,15 @@ static test_return_t server_sort2_test(memcached_st *ptr) return TEST_SUCCESS; } -static test_return_t memcached_server_remove_test(memcached_st *ptr) +static test_return_t memcached_server_remove_test(memcached_st*) { const char *server_string= "--server=localhost:4444 --server=localhost:4445 --server=localhost:4446 --server=localhost:4447 --server=localhost --server=memcache1.memcache.bk.sapo.pt:11211 --server=memcache1.memcache.bk.sapo.pt:11212 --server=memcache1.memcache.bk.sapo.pt:11213 --server=memcache1.memcache.bk.sapo.pt:11214 --server=memcache2.memcache.bk.sapo.pt:11211 --server=memcache2.memcache.bk.sapo.pt:11212 --server=memcache2.memcache.bk.sapo.pt:11213 --server=memcache2.memcache.bk.sapo.pt:11214"; - (void)ptr; + char buffer[BUFSIZ]; + memcached_return_t rc; + test_compare_got(MEMCACHED_SUCCESS, + rc= libmemcached_check_configuration(server_string, strlen(server_string), buffer, sizeof(buffer)), + memcached_strerror(NULL, rc)); memcached_st *memc= memcached(server_string, strlen(server_string)); test_true(memc); @@ -225,13 +229,12 @@ static test_return_t memcached_server_remove_test(memcached_st *ptr) return TEST_SUCCESS; } -static memcached_return_t server_display_unsort_function(const memcached_st *ptr, +static memcached_return_t server_display_unsort_function(const memcached_st*, const memcached_server_st *server, void *context) { /* Do Nothing */ uint32_t x= *((uint32_t *)(context)); - (void)ptr; if (! (test_ports[x] == server->port)) { @@ -395,6 +398,28 @@ static test_return_t connection_test(memcached_st *memc) return TEST_SUCCESS; } +static test_return_t libmemcached_string_behavior_test(memcached_st *) +{ + for (int x= MEMCACHED_BEHAVIOR_NO_BLOCK; x < int(MEMCACHED_BEHAVIOR_MAX); ++x) + { + test_true(libmemcached_string_behavior(memcached_behavior_t(x))); + } + test_compare(36, MEMCACHED_BEHAVIOR_MAX); + + return TEST_SUCCESS; +} + +static test_return_t libmemcached_string_distribution_test(memcached_st *) +{ + for (int x= MEMCACHED_DISTRIBUTION_MODULA; x < int(MEMCACHED_DISTRIBUTION_CONSISTENT_MAX); ++x) + { + test_true(libmemcached_string_distribution(memcached_server_distribution_t(x))); + } + test_compare(7, MEMCACHED_DISTRIBUTION_CONSISTENT_MAX); + + return TEST_SUCCESS; +} + static test_return_t error_test(memcached_st *memc) { uint32_t values[] = { 851992627U, 2337886783U, 646418395U, 4001849190U, @@ -2110,7 +2135,7 @@ static test_return_t fetch_all_results(memcached_st *memc, size_t *keys_returned *keys_returned= *keys_returned +1; } - test_true_got(rc == MEMCACHED_END || rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc)); + test_true_got(rc == MEMCACHED_END || memcached_success(rc), memcached_strerror(NULL, rc)); return TEST_SUCCESS; } @@ -3394,7 +3419,7 @@ static test_return_t mget_read(memcached_st *memc) memcached_return_t rc= memcached_mget(memc, global_keys, global_keys_length, global_count); - test_true_got(rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc)); + test_true_got(memcached_success(rc), memcached_strerror(NULL, rc)); // Go fetch the keys and test to see if all of them were returned { @@ -3417,7 +3442,7 @@ static test_return_t mget_read_result(memcached_st *memc) memcached_return_t rc= memcached_mget(memc, global_keys, global_keys_length, global_count); - test_true_got(rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc)); + test_true_got(memcached_success(rc), memcached_strerror(NULL, rc)); /* Turn this into a help function */ { @@ -3444,7 +3469,7 @@ static test_return_t mget_read_function(memcached_st *memc) memcached_return_t rc= memcached_mget(memc, global_keys, global_keys_length, global_count); - test_true_got(rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc)); + test_true_got(memcached_success(rc), memcached_strerror(NULL, rc)); memcached_execute_fn callbacks[]= { &callback_counter }; size_t counter= 0; @@ -5355,13 +5380,14 @@ static test_return_t test_get_last_disconnect(memcached_st *memc) const char *value= "milka"; memcached_reset_last_disconnected_server(memc); + test_false(memc->last_disconnected_server); rc= memcached_set(memc, key, strlen(key), value, strlen(value), (time_t)0, (uint32_t)0); test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED); disconnected_server = memcached_server_get_last_disconnect(memc); - test_true(disconnected_server == NULL); + test_false(disconnected_server); /* With a non existing server */ memcached_st *mine; @@ -5380,16 +5406,11 @@ static test_return_t test_get_last_disconnect(memcached_st *memc) rc= memcached_set(mine, key, strlen(key), value, strlen(value), (time_t)0, (uint32_t)0); - test_true(rc != MEMCACHED_SUCCESS); + test_true(memcached_failed(rc)); disconnected_server= memcached_server_get_last_disconnect(mine); - if (disconnected_server == NULL) - { - fprintf(stderr, "RC %s\n", memcached_strerror(mine, rc)); - abort(); - } - test_true(disconnected_server != NULL); - test_true(memcached_server_port(disconnected_server)== 9); + test_true_got(disconnected_server, memcached_strerror(mine, rc)); + test_compare(9, memcached_server_port(disconnected_server)); test_true(strncmp(memcached_server_name(disconnected_server),"localhost",9) == 0); memcached_quit(mine); @@ -5398,6 +5419,46 @@ static test_return_t test_get_last_disconnect(memcached_st *memc) return TEST_SUCCESS; } +static test_return_t test_multiple_get_last_disconnect(memcached_st *) +{ + const char *server_string= "--server=localhost:8888 --server=localhost:8889 --server=localhost:8890 --server=localhost:8891 --server=localhost:8892"; + char buffer[BUFSIZ]; + + memcached_return_t rc; + test_compare_got(MEMCACHED_SUCCESS, + rc= libmemcached_check_configuration(server_string, strlen(server_string), buffer, sizeof(buffer)), + memcached_strerror(NULL, rc)); + + memcached_st *memc= memcached(server_string, strlen(server_string)); + test_true(memc); + + // We will just use the error strings as our keys + uint32_t counter= 100; + while (--counter) + { + for (int x= int(MEMCACHED_SUCCESS); x < int(MEMCACHED_MAXIMUM_RETURN); ++x) + { + const char *msg= memcached_strerror(memc, memcached_return_t(x)); + memcached_return_t ret= memcached_set(memc, msg, strlen(msg), NULL, 0, (time_t)0, (uint32_t)0); + test_compare_got(MEMCACHED_WRITE_FAILURE, ret, memcached_strerror(NULL, ret)); + + memcached_server_instance_st disconnected_server= memcached_server_get_last_disconnect(memc); + test_true(disconnected_server); + test_strcmp("localhost", memcached_server_name(disconnected_server)); + test_true(memcached_server_port(disconnected_server) >= 8888 and memcached_server_port(disconnected_server) <= 8892); + + if (random() % 2) + { + memcached_reset_last_disconnected_server(memc); + } + } + } + + memcached_free(memc); + + return TEST_SUCCESS; +} + static test_return_t test_verbosity(memcached_st *memc) { memcached_verbosity(memc, 3); @@ -5951,6 +6012,8 @@ test_st tests[] ={ }; test_st behavior_tests[] ={ + {"libmemcached_string_behavior()", 0, (test_callback_fn)libmemcached_string_behavior_test}, + {"libmemcached_string_distribution()", 0, (test_callback_fn)libmemcached_string_distribution_test}, {"behavior_test", 0, (test_callback_fn)behavior_test}, {"MEMCACHED_BEHAVIOR_CORK", 0, (test_callback_fn)MEMCACHED_BEHAVIOR_CORK_test}, {"MEMCACHED_BEHAVIOR_TCP_KEEPALIVE", 0, (test_callback_fn)MEMCACHED_BEHAVIOR_TCP_KEEPALIVE_test}, @@ -5990,6 +6053,12 @@ test_st string_tests[] ={ {0, 0, (test_callback_fn)0} }; +test_st memcached_server_get_last_disconnect_tests[] ={ + {"memcached_server_get_last_disconnect()", 0, (test_callback_fn)test_multiple_get_last_disconnect}, + {0, 0, (test_callback_fn)0} +}; + + test_st result_tests[] ={ {"result static", 0, (test_callback_fn)result_static}, {"result alloc", 0, (test_callback_fn)result_alloc}, @@ -6181,6 +6250,7 @@ test_st parser_tests[] ={ {"server", 0, (test_callback_fn)server_test }, {"bad server strings", 0, (test_callback_fn)servers_bad_test }, {"server with weights", 0, (test_callback_fn)server_with_weight_test }, + {"parsing servername, port, and weight", 0, (test_callback_fn)test_hostname_port_weight }, {0, 0, (test_callback_fn)0} }; @@ -6254,6 +6324,7 @@ collection_st collection[] ={ {"error_conditions", 0, 0, error_conditions}, {"parser", 0, 0, parser_tests}, {"virtual buckets", 0, 0, virtual_bucket_tests}, + {"memcached_server_get_last_disconnect", 0, 0, memcached_server_get_last_disconnect_tests}, {0, 0, 0, 0} };