Browse Source

Add parameter test for execute_map_reduce()

Brian Aker 14 years ago
parent
commit
6308fc5454
3 changed files with 45 additions and 0 deletions
  1. 1 0
      tests/client_test.cc
  2. 43 0
      tests/gearman_execute_map_reduce.cc
  3. 1 0
      tests/gearman_execute_map_reduce.h

+ 1 - 0
tests/client_test.cc

@@ -980,6 +980,7 @@ test_st gearman_client_do_job_handle_tests[] ={
 
 test_st gearman_execute_map_reduce_tests[] ={
   {"gearman_execute_map_reduce()", 0, gearman_execute_map_reduce_basic },
+  {"gearman_execute_map_reduce(GEARMAN_ARGUMENT_TOO_LARGE)", 0, gearman_execute_map_reduce_check_parameters },
   {"gearman_execute_map_reduce(GEARMAN_WORK_FAIL)", 0, gearman_execute_map_reduce_workfail },
   {"gearman_execute_map_reduce() fail in reduction", 0, gearman_execute_map_reduce_fail_in_reduction },
   {0, 0, 0}

+ 43 - 0
tests/gearman_execute_map_reduce.cc

@@ -45,6 +45,49 @@
 #pragma GCC diagnostic ignored "-Wold-style-cast"
 #endif
 
+test_return_t gearman_execute_map_reduce_check_parameters(void *object)
+{
+  gearman_client_st *client= (gearman_client_st *)object;
+
+  test_true_got(gearman_success(gearman_client_echo(client, gearman_literal_param("this is mine"))), gearman_client_error(client));
+
+  // This just hear to make it easier to trace when
+  // gearman_execute_map_reduce() is called (look in the log to see the
+  // failed option setting.
+  gearman_client_set_server_option(client, gearman_literal_param("should fail"));
+  gearman_argument_t work_args= gearman_argument_make(gearman_literal_param("this dog does not hunt"));
+
+  gearman_string_t mapper= { gearman_literal_param("split_worker") };
+  gearman_string_t reducer= { gearman_literal_param("client_test") };
+  gearman_task_st *task;
+
+  // Test client as NULL
+  test_false(task= gearman_execute_map_reduce(NULL,
+                                              gearman_string_param(mapper),
+                                              gearman_string_param(reducer),
+                                              NULL, 0,  // unique
+                                              NULL,
+                                              &work_args));
+
+  // Test no mapper
+  test_false(task= gearman_execute_map_reduce(client,
+                                              NULL, 0,
+                                              gearman_string_param(reducer),
+                                              NULL, 0,  // unique
+                                              NULL,
+                                              &work_args));
+  
+  // Test no aggregator
+  test_false(task= gearman_execute_map_reduce(client,
+                                              gearman_string_param(mapper),
+                                              NULL, 0,
+                                              NULL, 0,  // unique
+                                              NULL,
+                                              &work_args));
+
+  return TEST_SUCCESS;
+}
+
 test_return_t gearman_execute_map_reduce_basic(void *object)
 {
   gearman_client_st *client= (gearman_client_st *)object;

+ 1 - 0
tests/gearman_execute_map_reduce.h

@@ -37,6 +37,7 @@
 
 #pragma once
 
+test_return_t gearman_execute_map_reduce_check_parameters(void *object);
 test_return_t gearman_execute_map_reduce_basic(void *object);
 test_return_t gearman_execute_map_reduce_fail_in_reduction(void *object);
 test_return_t gearman_execute_map_reduce_workfail(void *object);