Update yatl.
[awesomized/libmemcached] / tests / runner.h
index deb685afd4c966d2a24b110896edd6e41bcd4b77..17bf55a62ad7214b9fd889ebc1a3e63d48a59399 100644 (file)
@@ -39,6 +39,8 @@
 #pragma once
 
 #include "tests/libmemcached-1.0/generate.h"
+#include "tests/memc.hpp"
+#include "tests/print.h"
 
 class LibmemcachedRunner : public libtest::Runner {
 public:
@@ -47,6 +49,20 @@ public:
     return _runner_default(libmemcached_test_callback_fn(func), (libmemcached_test_container_st*)object);
   }
 
+  test_return_t flush(void* arg)
+  {
+    return flush((libmemcached_test_container_st*)arg);
+  }
+
+  test_return_t flush(libmemcached_test_container_st *container)
+  {
+    test::Memc memc(container->parent());
+    memcached_flush(&memc, 0);
+    memcached_quit(&memc);
+
+    return TEST_SUCCESS;
+  }
+
   test_return_t pre(test_callback_fn* func, void *object)
   {
     return _pre_runner_default(libmemcached_test_callback_fn(func), (libmemcached_test_container_st*)object);
@@ -60,35 +76,60 @@ public:
 private:
   test_return_t _runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
   {
+    test_true(container);
+    test_true(container->parent());
+    test::Memc memc(container->parent());
+
     test_compare(true, check());
 
+    test_return_t ret= TEST_SUCCESS;
     if (func)
     {
       test_true(container);
-      test_true(container->memc);
-      test_return_t ret;
-      try {
-        ret= func(container->memc);
-      }
-      catch (std::exception& e)
-      {
-        libtest::Error << e.what();
-        return TEST_FAILURE;
-      }
-
-      return ret;
+      ret= func(&memc);
     }
 
-    return TEST_SUCCESS;
+    return ret;
   }
 
   test_return_t _pre_runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
   {
+    container->reset();
+    {
+      char buffer[BUFSIZ];
+
+      test_compare(MEMCACHED_SUCCESS,
+                   libmemcached_check_configuration(container->construct.option_string().c_str(), container->construct.option_string().size(),
+                                                    buffer, sizeof(buffer)));
+
+      test_null(container->parent());
+      container->parent(memcached(container->construct.option_string().c_str(), container->construct.option_string().size()));
+      test_true(container->parent());
+#if 0
+      test_compare(MEMCACHED_SUCCESS, memcached_version(container->parent()));
+#endif
+
+      if (container->construct.sasl())
+      {
+        if (memcached_failed(memcached_behavior_set(container->parent(), MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1)))
+        {
+          container->reset();
+          return TEST_FAILURE;
+        }
+
+        if (memcached_failed(memcached_set_sasl_auth_data(container->parent(), container->construct.username().c_str(), container->construct.password().c_str())))
+        {
+          container->reset();
+          return TEST_FAILURE;
+        }
+      }
+    }
+
     test_compare(true, check());
 
     if (func)
     {
-      return func(container->parent);
+      return func(container->parent());
     }
 
     return TEST_SUCCESS;
@@ -99,12 +140,14 @@ private:
     test_compare(true, check());
     cleanup_pairs(NULL);
 
+    test_return_t rc= TEST_SUCCESS;
     if (func)
     {
-      return func(container->parent);
+      rc= func(container->parent());
     }
+    container->reset();
 
-    return TEST_SUCCESS;
+    return rc;
   }
 };