Import/Merge of libtest latest.
[m6w6/libmemcached] / tests / runner.h
index deb685afd4c966d2a24b110896edd6e41bcd4b77..0d1a767dcfde56d44be320b67b4d4e024ccd7af7 100644 (file)
@@ -39,6 +39,8 @@
 #pragma once
 
 #include "tests/libmemcached-1.0/generate.h"
+#include "tests/memc.h"
+#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)
+  {
+    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,67 @@ public:
 private:
   test_return_t _runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
   {
+    test_true(container);
+    test_true(container->parent());
+    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);
+        ret= func(&memc);
       }
       catch (std::exception& e)
       {
         libtest::Error << e.what();
-        return TEST_FAILURE;
+        ret= TEST_FAILURE;
       }
-
-      return ret;
     }
 
-    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 +147,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;
   }
 };