X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=test%2Flib%2FMemcachedCluster.cpp;h=a443360b52b9b3082dcfb1d102e39098098bd048;hb=9c7babba79ee747f7f549912ea01fd83c37f7e0c;hp=bb164e5d1982ea707e0375db807f3d7bcefa9724;hpb=d01f59eec297365fdbfeba38248245bf4e5d827a;p=m6w6%2Flibmemcached diff --git a/test/lib/MemcachedCluster.cpp b/test/lib/MemcachedCluster.cpp index bb164e5d..a443360b 100644 --- a/test/lib/MemcachedCluster.cpp +++ b/test/lib/MemcachedCluster.cpp @@ -6,13 +6,8 @@ const memcached_st MemcachedCluster::empty_memc{}; void MemcachedCluster::init() { REQUIRE(cluster.start()); - Retry cluster_is_listening([this]() { - return cluster.isListening(); - }); - while (!cluster_is_listening()) { - cluster.stop(); - cluster.wait(); - cluster.start(); + while (!cluster.ensureListening()) { + cluster.restart(); } if (auto br = getenv_else("MEMCACHED_BREAK", "0")) { @@ -29,6 +24,11 @@ void MemcachedCluster::init() { } REQUIRE(memcached_create(&memc)); + + for (const auto &[behavior, value] : to_set) { + REQUIRE(MEMCACHED_SUCCESS == memcached_behavior_set(&memc, behavior, value)); + } + for (const auto &server : cluster.getServers()) { auto target = server.getSocketOrPort(); if (holds_alternative(target)) { @@ -41,7 +41,7 @@ void MemcachedCluster::init() { } MemcachedCluster::~MemcachedCluster() { - if (memcmp(&memc, &empty_memc, sizeof(memc))) { + if (!!memcmp(&memc, &empty_memc, sizeof(memc))) { memcached_free(&memc); } } @@ -59,22 +59,23 @@ MemcachedCluster::MemcachedCluster() init(); } -MemcachedCluster::MemcachedCluster(Cluster &&cluster_) +MemcachedCluster::MemcachedCluster(Cluster &&cluster_, behaviors_t to_set_) : cluster{move(cluster_)} +, to_set{move(to_set_)} { init(); } -MemcachedCluster::MemcachedCluster(MemcachedCluster &&mc) +MemcachedCluster::MemcachedCluster(MemcachedCluster &&mc) noexcept : cluster{Server{}} { *this = move(mc); } -MemcachedCluster &MemcachedCluster::operator=(MemcachedCluster &&mc) { +MemcachedCluster &MemcachedCluster::operator=(MemcachedCluster &&mc) noexcept { cluster = move(mc.cluster); memcached_clone(&memc, &mc.memc); - returns = ReturnMatcher{&memc}; + returns = &memc; return *this; } @@ -103,7 +104,9 @@ MemcachedCluster MemcachedCluster::udp() { Server::arg_pair_t{"-U", random_socket_or_port_string}, Server::arg_t{"-v"} } - }}}; + }}, { + {MEMCACHED_BEHAVIOR_USE_UDP, 1} + }}; } #if LIBMEMCACHED_WITH_SASL_SUPPORT @@ -114,8 +117,9 @@ MemcachedCluster MemcachedCluster::sasl() { Server::arg_pair_t{"-p", random_socket_or_port_string}, Server::arg_t{"-S"} } - }}}; - mc.enableBinaryProto(); + }}, { + {MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1}, + }}; REQUIRE(MEMCACHED_SUCCESS == memcached_set_sasl_auth_data(&mc.memc, "memcached", "memcached")); return mc; @@ -137,12 +141,7 @@ void MemcachedCluster::enableReplication() { MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, memcached_server_count(&memc) - 1)); } -void MemcachedCluster::enableUdp(bool enable) { - REQUIRE(MEMCACHED_SUCCESS == memcached_behavior_set(&memc, - MEMCACHED_BEHAVIOR_USE_UDP, enable)); -} - -void MemcachedCluster::killOneServer() { +void MemcachedCluster::killOneServer() const { const auto &servers = cluster.getServers(); const auto &victim = servers[random_num(0UL, servers.size() - 1)]; ::kill(victim.getPid(), SIGKILL);