Update libtest.
[m6w6/libmemcached] / tests / cycle.cc
index 3b0aa2410770cee3e76c63d2d57154765f94a828..788d7e67bf88bd7ac8eb9d09d89cbc1aa776a8c7 100644 (file)
@@ -1,6 +1,6 @@
 /*  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));
 
-  server_startup(servers);
+  return TEST_SUCCESS;
+}
+#endif
+
+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& )
+{
+  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->_create= world_create;
 }