X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Fmem_functions.c;h=e12ad3f7d9a70a6ef4977b040370300f2f50332d;hb=573d3bb262f51461d7ed4ba06a723a8555637bba;hp=11d7219b68f2b2e6bf0be1bf18351883ebfe2b06;hpb=0f46c72f570994b6f9edc01925f25c3857d41b59;p=m6w6%2Flibmemcached diff --git a/tests/mem_functions.c b/tests/mem_functions.c index 11d7219b..e12ad3f7 100644 --- a/tests/mem_functions.c +++ b/tests/mem_functions.c @@ -3145,6 +3145,8 @@ static test_return_t output_ketama_weighted_keys(memcached_st *trash) char *hostname = memc->hosts[server_idx].hostname; in_port_t port = memc->hosts[server_idx].port; fprintf(fp, "key %s is on host /%s:%u\n", key, hostname, port); + memcached_server_instance_st instance= + memcached_server_instance_by_position(memc, host_index); } fclose(fp); #endif @@ -3590,7 +3592,6 @@ static test_return_t pre_nonblock_binary(memcached_st *memc) { memcached_return_t rc= MEMCACHED_FAILURE; memcached_st *memc_clone; - memcached_server_instance_st instance; memc_clone= memcached_clone(NULL, memc); test_true(memc_clone); @@ -3598,9 +3599,7 @@ static test_return_t pre_nonblock_binary(memcached_st *memc) // will not toggle protocol on an connection. memcached_version(memc_clone); - instance= memcached_server_instance_by_position(memc_clone, 0); - - if (instance->major_version >= 1 && instance->minor_version > 2) + if (libmemcached_util_version_check(memc_clone, 1, 2, 0)) { memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, 0); rc = memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1); @@ -3726,7 +3725,6 @@ static test_return_t pre_binary(memcached_st *memc) { memcached_return_t rc= MEMCACHED_FAILURE; memcached_st *memc_clone; - memcached_server_instance_st instance; memc_clone= memcached_clone(NULL, memc); test_true(memc_clone); @@ -3734,9 +3732,7 @@ static test_return_t pre_binary(memcached_st *memc) // will not toggle protocol on an connection. memcached_version(memc_clone); - instance= memcached_server_instance_by_position(memc_clone, 0); - - if (instance->major_version >= 1 && instance->minor_version > 2) + if (libmemcached_util_version_check(memc_clone, 1, 2, 0)) { rc = memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1); test_true(rc == MEMCACHED_SUCCESS); @@ -4070,13 +4066,7 @@ static test_return_t enable_cas(memcached_st *memc) { unsigned int set= 1; - memcached_server_instance_st instance= - memcached_server_instance_by_position(memc, 0); - - memcached_version(memc); - - if ((instance->major_version >= 1 && (instance->minor_version == 2 && instance->micro_version >= 4)) - || instance->minor_version > 2) + if (libmemcached_util_version_check(memc, 1, 2, 4)) { memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, set); @@ -4095,7 +4085,9 @@ static test_return_t check_for_1_2_3(memcached_st *memc) if ((instance->major_version >= 1 && (instance->minor_version == 2 && instance->micro_version >= 4)) || instance->minor_version > 2) + { return TEST_SUCCESS; + } return TEST_SKIPPED; } @@ -4423,6 +4415,64 @@ static test_return_t connection_pool_test(memcached_st *memc) test_true(memcached_pool_destroy(pool) == memc); return TEST_SUCCESS; } + +static test_return_t util_version_test(memcached_st *memc) +{ + bool if_successful; + + if_successful= libmemcached_util_version_check(memc, 0, 0, 0); + test_true(if_successful == true); + + if_successful= libmemcached_util_version_check(memc, 9, 9, 9); + test_true(if_successful == false); + + memcached_server_instance_st instance= + memcached_server_instance_by_position(memc, 0); + + memcached_version(memc); + + // We only use one binary when we test, so this should be just fine. + if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->micro_version, instance->minor_version); + test_true(if_successful == true); + + if (instance->minor_version > 0) + if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->micro_version, instance->minor_version -1); + else if (instance->micro_version > 0) + if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->micro_version - 1, instance->minor_version); + else if (instance->major_version > 0) + if_successful= libmemcached_util_version_check(memc, instance->major_version -1, instance->micro_version, instance->minor_version); + + test_true(if_successful == true); + + if (instance->minor_version > 0) + if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->micro_version, instance->minor_version +1); + else if (instance->micro_version > 0) + if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->micro_version +1, instance->minor_version); + else if (instance->major_version > 0) + if_successful= libmemcached_util_version_check(memc, instance->major_version +1, instance->micro_version, instance->minor_version); + + test_true(if_successful == false); + + return TEST_SUCCESS; +} + +static test_return_t ping_test(memcached_st *memc) +{ + memcached_return_t rc; + memcached_server_instance_st instance= + memcached_server_instance_by_position(memc, 0); + + // Test both the version that returns a code, and the one that does not. + test_true(libmemcached_util_ping(memcached_server_name(instance), + memcached_server_port(instance), NULL)); + + test_true(libmemcached_util_ping(memcached_server_name(instance), + memcached_server_port(instance), &rc)); + + test_true(rc == MEMCACHED_SUCCESS); + + return TEST_SUCCESS; +} #endif static test_return_t replication_set_test(memcached_st *memc) @@ -5529,12 +5579,8 @@ static test_return_t regression_bug_463297(memcached_st *memc) test_true(memc_clone != NULL); test_true(memcached_version(memc_clone) == MEMCACHED_SUCCESS); - memcached_server_instance_st instance= - memcached_server_instance_by_position(memc_clone, 0); - if (instance->major_version > 1 || - (instance->major_version == 1 && - instance->minor_version > 2)) + if (libmemcached_util_version_check(memc_clone, 1, 1, 2)) { /* Binary protocol doesn't support deferred delete */ memcached_st *bin_clone= memcached_clone(NULL, memc); @@ -5860,6 +5906,34 @@ static test_return_t regression_bug_490486(memcached_st *memc) return TEST_SUCCESS; } +static test_return_t regression_bug_583031(memcached_st *unused) +{ + (void)unused; + + memcached_st *memc= memcached_create(NULL); + assert(memc); + memcached_server_add(memc, "10.2.3.4", 11211); + + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT, 1000); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_RETRY_TIMEOUT, 1000); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SND_TIMEOUT, 1000); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_RCV_TIMEOUT, 1000); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, 1000); + memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT, 3); + + memcached_return_t rc; + size_t length; + uint32_t flags; + + (void)memcached_get(memc, "dsf", 3, &length, &flags, &rc); + + test_true(rc == MEMCACHED_TIMEOUT); + + memcached_free(memc); + + return TEST_SUCCESS; +} + static void memcached_die(memcached_st* mc, memcached_return error, const char* what, uint32_t it) { fprintf(stderr, "Iteration #%u: ", it); @@ -6060,6 +6134,8 @@ test_st tests[] ={ {"analyzer", 1, (test_callback_fn)analyzer_test}, #ifdef HAVE_LIBMEMCACHEDUTIL {"connectionpool", 1, (test_callback_fn)connection_pool_test }, + {"ping", 1, (test_callback_fn)ping_test }, + {"util_version", 1, (test_callback_fn)util_version_test }, #endif {"test_get_last_disconnect", 1, (test_callback_fn)test_get_last_disconnect}, {"verbosity", 1, (test_callback_fn)test_verbosity}, @@ -6171,6 +6247,7 @@ test_st regression_tests[]= { {"lp:447342", 1, (test_callback_fn)regression_bug_447342 }, {"lp:463297", 1, (test_callback_fn)regression_bug_463297 }, {"lp:490486", 1, (test_callback_fn)regression_bug_490486 }, + {"lp:583031", 1, (test_callback_fn)regression_bug_583031 }, {"lp:?", 1, (test_callback_fn)regression_bug_ }, {0, 0, (test_callback_fn)0} };