testing: sasl
[m6w6/libmemcached] / testing / lib / MemcachedCluster.cpp
index 910aca3ce2ea3dab2a547ca5bd14d33ab7c89ab1..c03bacce1f4124382b7f4886bb856d79f80f8b95 100644 (file)
@@ -6,6 +6,11 @@ const memcached_st MemcachedCluster::empty_memc{};
 void MemcachedCluster::init() {
   REQUIRE(cluster.start());
 
+  Retry cluster_is_listening([this]() {
+    return cluster.isListening();
+  });
+  REQUIRE(cluster_is_listening());
+
   REQUIRE(memcached_create(&memc));
   for (const auto &server : cluster.getServers()) {
     auto target = server.getSocketOrPort();
@@ -16,10 +21,6 @@ void MemcachedCluster::init() {
     }
   }
 
-  Retry cluster_is_listening([this]() {
-    return cluster.isListening();
-  });
-  REQUIRE(cluster_is_listening());
 }
 
 MemcachedCluster::~MemcachedCluster() {
@@ -78,6 +79,22 @@ MemcachedCluster MemcachedCluster::socket() {
   }}};
 }
 
+#if LIBMEMCACHED_WITH_SASL_SUPPORT
+MemcachedCluster MemcachedCluster::sasl() {
+  auto mc = MemcachedCluster{Cluster{Server{
+      MEMCACHED_BINARY,
+      {
+        Server::arg_pair_t{"-p", random_socket_or_port_string},
+        Server::arg_t{"-S"}
+      }
+  }}};
+  mc.enableBinaryProto();
+  REQUIRE(MEMCACHED_SUCCESS == memcached_set_sasl_auth_data(&mc.memc,
+      "memcached", "memcached"));
+  return mc;
+}
+#endif
+
 void MemcachedCluster::enableBinaryProto(bool enable) {
   REQUIRE(MEMCACHED_SUCCESS == memcached_behavior_set(&memc,
       MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, enable));