Browse Source

Update how the command line tool testing works.

Brian Aker 13 years ago
parent
commit
4ec55795bb
10 changed files with 71 additions and 76 deletions
  1. 3 1
      bin/arguments.cc
  2. 4 2
      bin/gearadmin.cc
  3. 7 29
      libtest/cmdline.cc
  4. 1 1
      libtest/cmdline.h
  5. 0 5
      libtest/skiptest.cc
  6. 1 1
      libtest/test.cc
  7. 3 3
      libtest/unittest.cc
  8. 6 3
      tests/blobslap_client.cc
  9. 45 30
      tests/cli.cc
  10. 1 1
      tests/drizzle_test.cc

+ 3 - 1
bin/arguments.cc

@@ -6,7 +6,7 @@
  * the COPYING file in the parent directory for full text.
  */
 
-#include "config.h"
+#include <config.h>
 
 #include <cstdlib>
 #include <cstring>
@@ -55,6 +55,8 @@ void Args::init(int argc)
 {
   int c;
 
+  opterr= 0;
+
   while ((c = getopt(argc, argv, "bc:f:h:HILnNp:Pst:u:wi:d")) != -1)
   {
     switch(c)

+ 4 - 2
bin/gearadmin.cc

@@ -114,7 +114,9 @@ public:
     }
     else
     {
+#if 0
       std::cerr << "Error" << std::endl;
+#endif
     }
 
     return true;
@@ -150,8 +152,8 @@ int main(int args, char *argv[])
   }
   catch(std::exception &e)
   { 
-    std::cerr <<  argv[0] << " : " << e.what() << std::endl;
-    std::cerr <<  std::endl << desc << std::endl;
+    std::cout <<  argv[0] << " : " << e.what() << std::endl;
+    std::cout <<  std::endl << desc << std::endl;
     return EXIT_FAILURE;
   }
 

+ 7 - 29
libtest/cmdline.cc

@@ -29,43 +29,29 @@ using namespace libtest;
 #include <sstream>
 
 extern "C" {
-  static bool exited_successfully(int status)
+  static int exited_successfully(int status)
   {
     if (status == 0)
     {
-      return true;
+      return EXIT_SUCCESS;
     }
 
     if (WIFEXITED(status) == true)
     {
-      int ret= WEXITSTATUS(status);
-
-      if (ret == 0)
-      {
-        return true;
-      }
-      else if (ret == EXIT_FAILURE)
-      {
-        Error << "Command executed, but returned EXIT_FAILURE";
-      }
-      else
-      {
-        Error << "Command executed, but returned " << ret;
-      }
+      return WEXITSTATUS(status);
     }
     else if (WIFSIGNALED(status) == true)
     {
-      int ret_signal= WTERMSIG(status);
-      Error << "Died from signal " << strsignal(ret_signal);
+      return WTERMSIG(status);
     }
 
-    return false;
+    return -1;
   }
 }
 
 namespace libtest {
 
-bool exec_cmdline(const std::string& executable, const char *args[])
+int exec_cmdline(const std::string& executable, const char *args[])
 {
   std::stringstream arg_buffer;
 
@@ -83,17 +69,9 @@ bool exec_cmdline(const std::string& executable, const char *args[])
     arg_buffer << " " << *ptr;
   }
 
-#if 0
-    arg_buffer << " > /dev/null 2>&1";
-#endif
-
   int ret= system(arg_buffer.str().c_str());
-  if (exited_successfully(ret) == false)
-  {
-    return false;
-  }
 
-  return true;
+  return exited_successfully(ret);
 }
 
 const char *gearmand_binary() 

+ 1 - 1
libtest/cmdline.h

@@ -23,7 +23,7 @@
 
 namespace libtest {
 
-bool exec_cmdline(const std::string& executable, const char *args[]);
+int exec_cmdline(const std::string& executable, const char *args[]);
 
 const char *gearmand_binary(); 
 

+ 0 - 5
libtest/skiptest.cc

@@ -30,10 +30,6 @@
 using namespace libtest;
 
 
-collection_st collection[] ={
-  {0, 0, 0, 0}
-};
-
 static void *world_create(server_startup_st&, test_return_t& rc)
 {
   rc= TEST_SKIPPED;
@@ -43,6 +39,5 @@ static void *world_create(server_startup_st&, test_return_t& rc)
 
 void get_world(Framework *world)
 {
-  world->collections= collection;
   world->_create= world_create;
 }

+ 1 - 1
libtest/test.cc

@@ -169,7 +169,7 @@ int main(int argc, char *argv[])
     wildcard= argv[2];
   }
 
-  for (collection_st *next= world->collections; next->name and (not signal.is_shutdown()); next++)
+  for (collection_st *next= world->collections; next and next->name and (not signal.is_shutdown()); next++)
   {
     test_return_t collection_rc= TEST_SUCCESS;
     bool failed= false;

+ 3 - 3
libtest/unittest.cc

@@ -302,7 +302,7 @@ static test_return_t wait_BINARY(void *)
 {
   const char *args[]= { "--quiet", 0 };
 
-  test_false(exec_cmdline("libtest/wait", args));
+  test_compare(EXIT_FAILURE, exec_cmdline("libtest/wait", args));
 
   return TEST_SUCCESS;
 }
@@ -311,7 +311,7 @@ static test_return_t wait_help_BINARY(void *)
 {
   const char *args[]= { "--quiet", "--help", 0 };
 
-  test_true(exec_cmdline("libtest/wait", args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("libtest/wait", args));
 
   return TEST_SUCCESS;
 }
@@ -320,7 +320,7 @@ static test_return_t wait_version_BINARY(void *)
 {
   const char *args[]= { "--quiet", "--version", 0 };
 
-  test_true(exec_cmdline("libtest/wait", args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("libtest/wait", args));
 
   return TEST_SUCCESS;
 }

+ 6 - 3
tests/blobslap_client.cc

@@ -57,7 +57,8 @@ static test_return_t help_test(void *)
   snprintf(buffer, sizeof(buffer), "-p %d", int(default_port()));
   const char *args[]= { buffer, "-?", 0 };
 
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline(executable, args));
+
   return TEST_SUCCESS;
 }
 
@@ -68,7 +69,8 @@ static test_return_t unknown_test(void *)
   const char *args[]= { buffer, "--unknown", 0 };
 
   // The argument doesn't exist, so we should see an error
-  test_false(exec_cmdline(executable, args));
+  test_compare(EXIT_FAILURE, exec_cmdline(executable, args));
+
   return TEST_SUCCESS;
 }
 
@@ -79,7 +81,8 @@ static test_return_t basic_benchmark_test(void *)
   const char *args[]= { buffer, "-c 100", "-n 10", "-e", 0 };
 
   // The argument doesn't exist, so we should see an error
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline(executable, args));
+
   return TEST_SUCCESS;
 }
 

+ 45 - 30
tests/cli.cc

@@ -55,15 +55,34 @@ using namespace libtest;
 #include <tests/workers.h>
 #include <tests/start_worker.h>
 
-static std::string executable;
-
 #define WORKER_FUNCTION_NAME "echo_function"
 
+namespace cli {
+
+struct Context
+{
+  server_startup_st& servers;
+  worker_handle_st *worker;
+
+  Context(server_startup_st& servers_arg,
+          worker_handle_st *worker_arg) :
+    servers(servers_arg),
+    worker(worker_arg)
+  { }
+
+  ~Context()
+  {
+    delete worker;
+  }
+};
+
+}
+
 static test_return_t gearman_help_test(void *)
 {
   const char *args[]= { "-H", 0 };
 
-  test_compare(true, exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearman", args));
   return TEST_SUCCESS;
 }
 
@@ -74,7 +93,7 @@ static test_return_t gearman_unknown_test(void *)
   const char *args[]= { buffer, "--unknown", 0 };
 
   // The argument doesn't exist, so we should see an error
-  test_false(exec_cmdline(executable, args));
+  test_compare(EXIT_FAILURE, exec_cmdline("bin/gearman", args));
 
   return TEST_SUCCESS;
 }
@@ -86,7 +105,7 @@ static test_return_t gearman_client_background_test(void *)
   const char *args[]= { buffer, "-f", WORKER_FUNCTION_NAME, "-b", "payload", 0 };
 
   // The argument doesn't exist, so we should see an error
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearman", args));
 
   return TEST_SUCCESS;
 }
@@ -100,10 +119,10 @@ static test_return_t regression_833394_test(void *)
   const char *args[]= { buffer, "-f", REGRESSION_FUNCTION_833394, "-b", "payload", 0 };
 
   gearman_function_t echo_react_fn_v2= gearman_function_create(echo_or_react_worker_v2);
-  worker_handle_st *worker= test_worker_start(CLIENT_TEST_PORT, NULL, REGRESSION_FUNCTION_833394, echo_react_fn_v2, NULL, gearman_worker_options_t());
+  worker_handle_st *worker= test_worker_start(default_port(), NULL, REGRESSION_FUNCTION_833394, echo_react_fn_v2, NULL, gearman_worker_options_t());
 
   // The argument doesn't exist, so we should see an error
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearman", args));
 
   delete worker;
 
@@ -116,21 +135,21 @@ static test_return_t gearadmin_help_test(void *)
   snprintf(buffer, sizeof(buffer), "--port=%d", int(default_port()));
   const char *args[]= { buffer, "--help", 0 };
 
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", args));
   return TEST_SUCCESS;
 }
 
 static test_return_t gearadmin_shutdown_test(void *object)
 {
-  server_startup_st *servers= (server_startup_st *)object;
+  cli::Context *context= (cli::Context*)object;
 
   char buffer[1024];
   snprintf(buffer, sizeof(buffer), "--port=%d", int(default_port()));
   const char *args[]= { buffer, "--shutdown", 0 };
 
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", args));
 
-  Server *server= servers->pop_server();
+  Server *server= context->servers.pop_server();
   test_true(server);
   while (server->ping()) 
   {
@@ -150,7 +169,7 @@ static test_return_t gearadmin_version_test(void *)
   snprintf(buffer, sizeof(buffer), "--port=%d", int(default_port()));
   const char *args[]= { buffer, "--server-version", 0 };
 
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", args));
   return TEST_SUCCESS;
 }
 
@@ -160,7 +179,7 @@ static test_return_t gearadmin_verbose_test(void *)
   snprintf(buffer, sizeof(buffer), "--port=%d", int(default_port()));
   const char *args[]= { buffer, "--server-verbose", 0 };
 
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", args));
   return TEST_SUCCESS;
 }
 
@@ -170,7 +189,7 @@ static test_return_t gearadmin_status_test(void *)
   snprintf(buffer, sizeof(buffer), "--port=%d", int(default_port()));
   const char *args[]= { buffer, "--status", 0 };
 
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", args));
   return TEST_SUCCESS;
 }
 
@@ -180,7 +199,7 @@ static test_return_t gearadmin_workers_test(void *)
   snprintf(buffer, sizeof(buffer), "--port=%d", int(default_port()));
   const char *args[]= { buffer, "--workers", 0 };
 
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", args));
   return TEST_SUCCESS;
 }
 
@@ -190,10 +209,10 @@ static test_return_t gearadmin_create_drop_test(void *)
   snprintf(buffer, sizeof(buffer), "--port=%d", int(default_port()));
 
   const char *create_args[]= { buffer, "--create-function=test_function", 0 };
-  test_true(exec_cmdline(executable, create_args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", create_args));
 
   const char *drop_args[]= { buffer, "--drop-function=test_function", 0 };
-  test_true(exec_cmdline(executable, drop_args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", drop_args));
 
 
   return TEST_SUCCESS;
@@ -205,7 +224,7 @@ static test_return_t gearadmin_getpid_test(void *)
   snprintf(buffer, sizeof(buffer), "--port=%d", int(default_port()));
   const char *args[]= { buffer, "--getpid", 0 };
 
-  test_true(exec_cmdline(executable, args));
+  test_compare(EXIT_SUCCESS, exec_cmdline("bin/gearadmin", args));
   return TEST_SUCCESS;
 }
 
@@ -216,7 +235,7 @@ static test_return_t gearadmin_unknown_test(void *)
   const char *args[]= { buffer, "--unknown", 0 };
 
   // The argument doesn't exist, so we should see an error
-  test_false(exec_cmdline(executable, args));
+  test_compare(EXIT_FAILURE, exec_cmdline("bin/gearadmin", args));
 
   return TEST_SUCCESS;
 }
@@ -245,14 +264,9 @@ test_st gearadmin_tests[] ={
   {0, 0, 0}
 };
 
-static test_return_t pre_skip(void*)
-{
-  return TEST_SKIPPED;
-}
-
 collection_st collection[] ={
   {"gearman", 0, 0, gearman_tests},
-  {"gearadmin", pre_skip, 0, gearadmin_tests},
+  {"gearadmin", 0, 0, gearadmin_tests},
   {0, 0, 0, 0}
 };
 
@@ -266,15 +280,17 @@ static void *world_create(server_startup_st& servers, test_return_t& error)
   
   // Echo function
   gearman_function_t echo_react_fn_v2= gearman_function_create(echo_or_react_worker_v2);
-  worker_handle_st *worker= test_worker_start(CLIENT_TEST_PORT, NULL, WORKER_FUNCTION_NAME, echo_react_fn_v2, NULL, gearman_worker_options_t());
+  worker_handle_st *worker= test_worker_start(default_port(), NULL, WORKER_FUNCTION_NAME, echo_react_fn_v2, NULL, gearman_worker_options_t());
 
-  return worker;
+  cli::Context *context= new cli::Context(servers, worker);
+
+  return context;
 }
 
 static bool world_destroy(void *object)
 {
-  worker_handle_st *worker= (worker_handle_st *)object;
-  delete worker;
+  cli::Context *context= (cli::Context*)object;
+  delete context;
 
   return TEST_SUCCESS;
 }
@@ -282,7 +298,6 @@ static bool world_destroy(void *object)
 
 void get_world(Framework *world)
 {
-  executable= "./bin/gearman";
   world->collections= collection;
   world->_create= world_create;
   world->_destroy= world_destroy;

+ 1 - 1
tests/drizzle_test.cc

@@ -52,7 +52,7 @@ static test_return_t gearmand_basic_option_test(void *)
     "--libdrizzle-mysql",
     0 };
 
-  test_true(exec_cmdline(gearmand_binary(), args));
+  test_compare(EXIT_SUCCESS, exec_cmdline(gearmand_binary(), args));
   return TEST_SUCCESS;
 }
 

Some files were not shown because too many files changed in this diff