/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
*
- * Libmemcached library
+ * Cycle the Gearmand server
*
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
*
Test that we are cycling the servers we are creating during testing.
*/
-#include <libtest/common.h>
+#include <config.h>
+#include <libtest/test.hpp>
-#include <libmemcached/common.h>
+using namespace libtest;
+#include <libmemcached/memcached.h>
+static test_return_t server_startup_single_TEST(void *obj)
+{
+ server_startup_st *servers= (server_startup_st*)obj;
+ test_compare(true, server_startup(*servers, "memcached", libtest::get_free_port(), 0, NULL, false));
+ test_compare(true, servers->shutdown());
-#include <libtest/server.h>
-#define SERVERS_TO_CREATE 5
+ return TEST_SUCCESS;
+}
-#ifndef __INTEL_COMPILER
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif
+static test_return_t server_startup_multiple_TEST(void *obj)
+{
+ server_startup_st *servers= (server_startup_st*)obj;
+ for (size_t x= 0; x < 10; x++)
+ {
+ test_compare(true, server_startup(*servers, "memcached", libtest::get_free_port(), 0, NULL, false));
+ }
+ test_compare(true, servers->shutdown());
-test_st ping[] ={
- {0, 0, 0}
-};
+ return TEST_SUCCESS;
+}
-collection_st collection[] ={
- {0, 0, 0, 0}
+static test_return_t shutdown_and_remove_TEST(void *obj)
+{
+ server_startup_st *servers= (server_startup_st*)obj;
+ servers->clear();
+
+ return TEST_SUCCESS;
+}
+
+test_st server_startup_TESTS[] ={
+ {"server_startup(1)", false, (test_callback_fn*)server_startup_single_TEST },
+ {"server_startup(10)", false, (test_callback_fn*)server_startup_multiple_TEST },
+ {"shutdown_and_remove()", false, (test_callback_fn*)shutdown_and_remove_TEST },
+ {"server_startup(10)", false, (test_callback_fn*)server_startup_multiple_TEST },
+ {0, 0, 0}
};
-static server_startup_st *world_create(test_return_t *error)
+#if 0
+static test_return_t collection_INIT(void *object)
{
- server_startup_st *servers= new server_startup_st();
+ server_startup_st *servers= (server_startup_st*)object;
+ test_zero(servers->count());
+ test_compare(true, server_startup(*servers, "memcached", libtest::default_port(), 0, NULL));
+
+ return TEST_SUCCESS;
+}
+#endif
- server_startup(servers);
+static test_return_t validate_sanity_INIT(void *object)
+{
+ server_startup_st *servers= (server_startup_st*)object;
- *error= TEST_SUCCESS;
+ test_zero(servers->count());
- return servers;
+ return TEST_SUCCESS;
}
-static test_return_t world_destroy(server_startup_st *servers)
+static test_return_t collection_FINAL(void *object)
{
- server_shutdown(servers);
- delete servers;
+ server_startup_st *servers= (server_startup_st*)object;
+ servers->clear();
return TEST_SUCCESS;
}
+collection_st collection[] ={
+ {"server_startup()", validate_sanity_INIT, collection_FINAL, server_startup_TESTS },
+ {0, 0, 0, 0}
+};
+static void *world_create(server_startup_st& servers, test_return_t& error)
+{
+ if (libtest::has_memcached() == false)
+ {
+ error= TEST_SKIPPED;
+ return NULL;
+ }
+
+ return &servers;
+}
void get_world(Framework *world)
{
- world->collections= collection;
-
- world->_create= (test_callback_create_fn*)world_create;
- world->_destroy= (test_callback_fn*)world_destroy;
+ world->collections(collection);
+ world->create(world_create);
}