Added libmemcached_ping() to memcached utility library.
authorBrian Aker <brian@gaz>
Fri, 11 Jun 2010 01:43:08 +0000 (18:43 -0700)
committerBrian Aker <brian@gaz>
Fri, 11 Jun 2010 01:43:08 +0000 (18:43 -0700)
ChangeLog
libmemcached/include.am
libmemcached/memcached_util.h
libmemcached/util/pool.c
tests/mem_functions.c
tests/test.h

index 74281df85f6a90c440220af9e9949454866f0dc7..85cc97287c55b9fa32dd684ce38e9323661e7efd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 0.41
   * Added --file for memcat.
+  * Added limemcached_ping() to libmemcached_util
 
 0.40 Thu Apr 22 19:01:25 PDT 2010
   * Placed retry logic in for busted resolvers
index dc125bd70680aa35f06b3321e292f1d24bcee5d9..30095b14405b0dd12c80fd8f67417bad5eb25742 100644 (file)
@@ -121,11 +121,14 @@ libmemcached_libmemcached_la_LDFLAGS= ${AM_LDFLAGS} -version-info ${MEMCACHED_LI
 if BUILD_LIBMEMCACHEDUTIL
 nobase_include_HEADERS+= \
                         libmemcached/memcached_util.h \
+                        libmemcached/util/ping.h \
                         libmemcached/util/pool.h
 lib_LTLIBRARIES+= libmemcached/libmemcachedutil.la
 endif
 
-libmemcached_libmemcachedutil_la_SOURCES= libmemcached/util/pool.c
+libmemcached_libmemcachedutil_la_SOURCES= \
+                                         libmemcached/util/ping.c \
+                                         libmemcached/util/pool.c
 libmemcached_libmemcachedutil_la_LIBADD= libmemcached/libmemcached.la
 libmemcached_libmemcachedutil_la_LDFLAGS= ${AM_LDFLAGS} -version-info 0:0:0
 libmemcached_libmemcachedutil_la_DEPENDENCIES= libmemcached/libmemcached.la
index a20b665b4bdd8df9c383db2eeb4f683e7043c0d5..925745e7bde3426168bfd90a4d6291f6b928ff8a 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Summary: Connection pool library.
  *
- * Author: Trond Norbye
+ * Author: Trond Norbye, Brian Aker
  *
  */
 
@@ -15,6 +15,7 @@
 #ifndef __LIBMEMCACHED__MEMCACHED_UTIL_H__
 #define __LIBMEMCACHED__MEMCACHED_UTIL_H__
 
+#include <libmemcached/util/ping.h>
 #include <libmemcached/util/pool.h>
 
 #endif /* __LIBMEMCACHED__MEMCACHED_UTIL_H__ */
index 012d550f245f67f69112d4b4d42a6afd27684940..bd4fdf9868847bc0b8d0de0b6b7110778b6c3ce3 100644 (file)
@@ -1,3 +1,14 @@
+/* LibMemcached
+ * Copyright (C) 2010 Brian Aker
+ * All rights reserved.
+ *
+ * Use and distribution licensed under the BSD license.  See
+ * the COPYING file in the parent directory for full text.
+ *
+ * Summary: connects to a host, and makes sure it is alive.
+ *
+ */
+
 /* -*- Mode: C; tab-width: 2; c-basic-offset: 2; indent-tabs-mode: nil -*- */
 #include "libmemcached/common.h"
 #include "libmemcached/memcached_util.h"
index ba99c0be58fbeec912fa714d7b2842bb80bc1c6e..9bd9334e6cb297a1caf3772ea853c164c9d88af3 100644 (file)
@@ -3145,6 +3145,8 @@ static test_return_t output_ketama_weighted_keys(memcached_st *trash)
     char *hostname = memc->hosts[server_idx].hostname;
     in_port_t port = memc->hosts[server_idx].port;
     fprintf(fp, "key %s is on host /%s:%u\n", key, hostname, port);
+    memcached_server_instance_st instance=
+      memcached_server_instance_by_position(memc, host_index);
   }
   fclose(fp);
 #endif
@@ -4423,6 +4425,24 @@ static test_return_t connection_pool_test(memcached_st *memc)
   test_true(memcached_pool_destroy(pool) == memc);
   return TEST_SUCCESS;
 }
+
+static test_return_t ping_test(memcached_st *memc)
+{
+  memcached_return_t rc;
+  memcached_server_instance_st instance=
+    memcached_server_instance_by_position(memc, 0);
+
+  // Test both the version that returns a code, and the one that does not.
+  test_true(libmemcached_ping(memcached_server_name(instance),
+                              memcached_server_port(instance), NULL));
+
+  test_true(libmemcached_ping(memcached_server_name(instance),
+                              memcached_server_port(instance), &rc));
+
+  test_true(rc == MEMCACHED_SUCCESS);
+
+  return TEST_SUCCESS;
+}
 #endif
 
 static test_return_t replication_set_test(memcached_st *memc)
@@ -6088,6 +6108,7 @@ test_st tests[] ={
   {"analyzer", 1, (test_callback_fn)analyzer_test},
 #ifdef HAVE_LIBMEMCACHEDUTIL
   {"connectionpool", 1, (test_callback_fn)connection_pool_test },
+  {"ping", 1, (test_callback_fn)ping_test },
 #endif
   {"test_get_last_disconnect", 1, (test_callback_fn)test_get_last_disconnect},
   {"verbosity", 1, (test_callback_fn)test_verbosity},
index cd58a80d0e82b3383289fc34be2c1de6ebf56634..77aa5303bbe2bd580e7c1c1d8670463c8e565d00 100644 (file)
@@ -152,9 +152,11 @@ const char *test_strerror(test_return_t code);
 #define test_fail(A) \
 do \
 { \
-  fprintf(stderr, "\nFailed in %s:%d: %s\n", __FILE__, __LINE__, #A);\
-  create_core(); \
-  return TEST_FAILURE; \
+  if (1) { \
+    fprintf(stderr, "\nFailed in %s:%d: %s\n", __FILE__, __LINE__, #A);\
+    create_core(); \
+    return TEST_FAILURE; \
+  } \
 } while (0)
 
 #define test_true(A) \