testing: udp flag must be set prior adding servers
authorMichael Wallner <mike@php.net>
Wed, 7 Oct 2020 13:53:00 +0000 (15:53 +0200)
committerMichael Wallner <mike@php.net>
Wed, 7 Oct 2020 13:53:00 +0000 (15:53 +0200)
test/lib/MemcachedCluster.cpp
test/lib/MemcachedCluster.hpp
test/tests/memcached/udp.cpp

index bb164e5d1982ea707e0375db807f3d7bcefa9724..06e2c7f1b97d3cfac6f49366d723b4fa12a05d6a 100644 (file)
@@ -29,6 +29,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<string>(target)) {
@@ -59,8 +64,9 @@ MemcachedCluster::MemcachedCluster()
   init();
 }
 
-MemcachedCluster::MemcachedCluster(Cluster &&cluster_)
+MemcachedCluster::MemcachedCluster(Cluster &&cluster_, behaviors_t to_set_)
 : cluster{move(cluster_)}
+, to_set{move(to_set_)}
 {
   init();
 }
@@ -103,7 +109,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 +122,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,11 +146,6 @@ 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() {
   const auto &servers = cluster.getServers();
   const auto &victim = servers[random_num(0UL, servers.size() - 1)];
index 5dbe5c2c8848b8bd3175e55e6811ff2c1758421d..0a4dcb6bc0a2b08ac3c57b71029174200599c210 100644 (file)
@@ -7,19 +7,21 @@
 
 class MemcachedCluster {
 public:
+  using behavior_t = pair<memcached_behavior_t, uint64_t>;
+  using behaviors_t = vector<behavior_t>;
+
   Cluster cluster;
   memcached_st memc{empty_memc};
   ReturnMatcher returns{&memc};
 
   MemcachedCluster();
-  explicit
-  MemcachedCluster(Cluster &&cluster);
+  explicit MemcachedCluster(Cluster &&cluster, behaviors_t to_set = {});
   ~MemcachedCluster();
 
   MemcachedCluster(const MemcachedCluster &) = delete;
   MemcachedCluster &operator=(const MemcachedCluster &) = delete;
 
-  MemcachedCluster(MemcachedCluster &&mc);;
+  MemcachedCluster(MemcachedCluster &&mc);
   MemcachedCluster &operator=(MemcachedCluster &&mc);
 
   void enableBinaryProto(bool enable = true);
@@ -40,6 +42,7 @@ public:
   void killOneServer();
 
 private:
+  behaviors_t to_set;
   static const memcached_st empty_memc;
 
   void init();
index 85e44126c7ae742becda21bddf4bc6470408960c..ad242145dcb67d51c29ba4a80faa7218a3faf554 100644 (file)
@@ -9,23 +9,6 @@ TEST_CASE("memcached_udp") {
   auto test = MemcachedCluster::udp();
   auto memc = &test.memc;
 
-  SECTION("sets reply flag") {
-    // FIXME: bad internals test
-    REQUIRE(memc->flags.reply);
-    REQUIRE_FALSE(memc->flags.use_udp);
-    REQUIRE_FALSE(memc->flags.use_udp == memc->flags.reply);
-    test.enableUdp();
-    REQUIRE_FALSE(memc->flags.reply);
-    REQUIRE(memc->flags.use_udp);
-    REQUIRE_FALSE(memc->flags.use_udp == memc->flags.reply);
-    test.enableUdp(false);
-    REQUIRE(memc->flags.reply);
-    REQUIRE_FALSE(memc->flags.use_udp);
-    REQUIRE_FALSE(memc->flags.use_udp == memc->flags.reply);
-  }
-
-  test.enableUdp();
-
   SECTION("compat") {
     memcached_return_t rc;
     REQUIRE_RC(MEMCACHED_INVALID_ARGUMENTS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, true));