Update for --socket option
[m6w6/libmemcached] / tests / parser.cc
index 31bcf9b0174073a36afb58f8a614136788ad9514..bfe458df1cd3b4737f93cff9a4be6c2bfe9cb2d8 100644 (file)
@@ -235,24 +235,20 @@ scanner_variable_t hash_strings[]= {
 };
 
 
-static test_return_t _test_option(scanner_variable_t *scanner, bool test_true= true)
+static test_return_t _test_option(scanner_variable_t *scanner, bool test_true_opt= true)
 {
-  (void)test_true;
-
   for (scanner_variable_t *ptr= scanner; ptr->type != NIL; ptr++)
   {
-    memcached_st *memc;
-    memc= memcached(ptr->option.c_str, ptr->option.size);
-    if (test_true)
+    memcached_st *memc= memcached(ptr->option.c_str, ptr->option.size);
+    if (test_true_opt)
     {
+      char buffer[2048];
       if (not memc)
       {
-        char buffer[2048];
-        memcached_return_t rc= libmemcached_check_configuration(ptr->option.c_str, ptr->option.size, buffer, sizeof(buffer));
-        std::cerr << "About error for " << memcached_strerror(NULL, rc) << " : " << buffer << std::endl;
+        libmemcached_check_configuration(ptr->option.c_str, ptr->option.size, buffer, sizeof(buffer));
       }
 
-      test_true(memc);
+      test_true_got(memc, buffer);
 
       if (ptr->check_func)
       {
@@ -547,6 +543,38 @@ test_return_t test_hostname_port_weight(memcached_st *)
   return TEST_SUCCESS;
 }
 
+static memcached_return_t dump_socket_information(const memcached_st *,
+                                                  const memcached_server_st *instance,
+                                                  void *context)
+{
+  if (not strcmp(memcached_server_name(instance), static_cast<char *>(context))) 
+  {
+    std::cerr << std::endl << __FILE__ << ":" << __LINE__ << " " << memcached_server_name(instance) << " != " << static_cast<char *>(context) << std::endl;
+    return MEMCACHED_FAILURE;
+  }
+
+  return MEMCACHED_SUCCESS;
+}
+
+test_return_t test_parse_socket(memcached_st *)
+{
+  char buffer[BUFSIZ];
+
+  test_compare_got(MEMCACHED_SUCCESS,
+                   libmemcached_check_configuration(test_literal_param("--socket=\"/tmp/foo\""), buffer, sizeof(buffer)),
+                   buffer);
+
+  memcached_st *memc= memcached(test_literal_param("--socket=\"/tmp/foo\""));
+  test_true(memc);
+
+  memcached_server_fn callbacks[]= { dump_socket_information };
+  test_true(memcached_success(memcached_server_cursor(memc, callbacks, (void*)("/tmp/foo"), 1)));
+
+  memcached_free(memc);
+
+  return TEST_SUCCESS;
+}
+
 /*
   By setting the timeout value to zero, we force poll() to return immediatly.
 */