X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Fmem_functions.cc;h=dfa1584f69cab4d8defcb65a52ac9f3dccc6c626;hb=7551ea615b5f6cfaa390f7d24dca2fa388943ddb;hp=3b417b296ae2fb8d3bb9b17f8bdbc4544f21b8fb;hpb=4924131d4d62d724d7e590cb2c5668ac5c8a3006;p=awesomized%2Flibmemcached diff --git a/tests/mem_functions.cc b/tests/mem_functions.cc index 3b417b29..dfa1584f 100644 --- a/tests/mem_functions.cc +++ b/tests/mem_functions.cc @@ -5419,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); @@ -6013,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}, @@ -6070,6 +6116,7 @@ test_st replication_tests[]= { {"mget", 0, (test_callback_fn)replication_mget_test }, {"delete", 0, (test_callback_fn)replication_delete_test }, {"rand_mget", 0, (test_callback_fn)replication_randomize_mget_test }, + {"fail", 0, (test_callback_fn)replication_randomize_mget_fail_test }, {0, 0, (test_callback_fn)0} }; @@ -6204,6 +6251,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} }; @@ -6277,6 +6325,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} };