#pragma once
-#include <cassert>
-
/* The structure we use for the test system */
struct libmemcached_test_container_st
{
return NULL;
}
- for (uint32_t x= 0; x < servers.count(); x++)
+ for (uint32_t x= 0; x < servers.servers_to_run(); x++)
{
- char variable_buffer[1024];
- snprintf(variable_buffer, sizeof(variable_buffer), "LIBMEMCACHED_PORT_%u", x);
-
- in_port_t port;
- char *var;
- if ((var= getenv(variable_buffer)))
- {
- port= in_port_t(atoi(var));
- }
- else
- {
- port= in_port_t(libtest::get_free_port());
- }
+ in_port_t port= libtest::get_free_port();
- const char *argv[1]= { "memcached" };
if (servers.sasl())
{
- if (not server_startup(servers, "memcached-sasl", port, 1, argv))
+ if (server_startup(servers, "memcached-sasl", port, 0, NULL) == false)
{
- error= TEST_FATAL;
- return NULL;
+ fatal_message("Could not start memcached-sasl");
}
}
else
{
- if (not server_startup(servers, "memcached", port, 1, argv))
+ if (server_startup(servers, "memcached", port, 0, NULL) == false)
{
- error= TEST_FATAL;
- return NULL;
+ fatal_message("Could not start memcached");
}
}
}
libmemcached_test_container_st *global_container= new libmemcached_test_container_st(servers);
- if (global_container == NULL)
- {
- error= TEST_MEMORY_ALLOCATION_FAILURE;
- return NULL;
- }
-
- error= TEST_SUCCESS;
return global_container;
}
typedef test_return_t (*libmemcached_test_callback_fn)(memcached_st *);
-static test_return_t _runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
-{
- if (func)
+class LibmemcachedRunner : public libtest::Runner {
+public:
+ test_return_t run(test_callback_fn* func, void *object)
{
- 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;
+ return _runner_default(libmemcached_test_callback_fn(func), (libmemcached_test_container_st*)object);
}
- return TEST_SUCCESS;
-}
-
-static test_return_t _pre_runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
-{
- if (func)
+ test_return_t pre(test_callback_fn* func, void *object)
{
- return func(container->parent);
+ return _pre_runner_default(libmemcached_test_callback_fn(func), (libmemcached_test_container_st*)object);
}
- return TEST_SUCCESS;
-}
-
-static test_return_t _post_runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
-{
- if (func)
+ test_return_t post(test_callback_fn* func, void *object)
{
- return func(container->parent);
+ return _post_runner_default(libmemcached_test_callback_fn(func), (libmemcached_test_container_st*)object);
}
- return TEST_SUCCESS;
-}
-
-class LibmemcachedRunner : public libtest::Runner {
-public:
- test_return_t run(test_callback_fn* func, void *object)
+private:
+ test_return_t _runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
{
- return _runner_default(libmemcached_test_callback_fn(func), (libmemcached_test_container_st*)object);
+ test_compare(true, check());
+
+ 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;
+ }
+
+ return TEST_SUCCESS;
}
- test_return_t pre(test_callback_fn* func, void *object)
+ test_return_t _pre_runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
{
- return _pre_runner_default(libmemcached_test_callback_fn(func), (libmemcached_test_container_st*)object);
+ if (func)
+ {
+ return func(container->parent);
+ }
+
+ return TEST_SUCCESS;
}
- test_return_t post(test_callback_fn* func, void *object)
+ test_return_t _post_runner_default(libmemcached_test_callback_fn func, libmemcached_test_container_st *container)
{
- return _post_runner_default(libmemcached_test_callback_fn(func), (libmemcached_test_container_st*)object);
+ if (func)
+ {
+ return func(container->parent);
+ }
+
+ return TEST_SUCCESS;
}
};