Merge of build trunk
authorBrian Aker <brian@tangent.org>
Wed, 11 Jan 2012 07:32:50 +0000 (23:32 -0800)
committerBrian Aker <brian@tangent.org>
Wed, 11 Jan 2012 07:32:50 +0000 (23:32 -0800)
15 files changed:
configure.ac
libmemcached/auto.cc
libmemcached/delete.cc
libmemcached/dump.cc
libmemcached/get.cc
libmemcached/server.cc
libmemcached/storage.cc
libmemcached/touch.cc
m4/ax_compiler_vendor.m4 [new file with mode: 0644]
m4/ax_tls.m4 [new file with mode: 0644]
support/libmemcached.spec.in
tests/libmemcached-1.0/dump.cc [new file with mode: 0644]
tests/libmemcached-1.0/dump.h [new file with mode: 0644]
tests/libmemcached-1.0/include.am
tests/libmemcached-1.0/mem_functions.cc

index aa91153c1a8a8366b66e5137b29119b10b311b63..d2183085878513513158ef37923c59dcc803c3dd 100644 (file)
@@ -129,9 +129,12 @@ AC_CHECK_HEADERS([sys/time.h])
 AC_CHECK_HEADERS([sasl/sasl.h])
 AC_CHECK_HEADERS([execinfo.h])
 AC_CHECK_HEADERS([cxxabi.h], 
-       AC_DEFINE([HAVE_CXXABI_H], [1], [Have cxxabi.h]),
-       AC_DEFINE([HAVE_CXXABI_H], [0], [Have cxxabi.h]))
+                 AC_DEFINE([HAVE_CXXABI_H], [1], [Have cxxabi.h]),
+                 AC_DEFINE([HAVE_CXXABI_H], [0], [Have cxxabi.h]))
+
+AX_COMPILER_VENDOR
 AC_CXX_HEADER_STDCXX_98
+AX_TLS
 
 AC_FUNC_ALLOCA
 AC_FUNC_ERROR_AT_LINE
@@ -162,7 +165,8 @@ AX_CXX_GCC_ABI_DEMANGLE
 
 AC_CHECK_LIB([rt], [clock_gettime], 
              [
-              rt_lib="-lrt"
+              RT_LIB="-lrt"
+              AC_SUBST(RT_LIB)
               AC_DEFINE([HAVE_LIBRT], [ 1 ], [Have clock_gettime])
               ], 
              [
index 28550a18c1e73940a36523122fde7d416d002770..e5054a0a6513cd6cbe1518c34828b38281d79adc 100644 (file)
@@ -177,11 +177,6 @@ memcached_return_t memcached_increment_by_key(memcached_st *ptr,
     return rc;
   }
 
-  if (memcached_failed(rc= memcached_validate_key_length(key_length, ptr->flags.binary_protocol)))
-  {
-    return rc;
-  }
-
   if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))
   {
     return memcached_set_error(*ptr, rc, MEMCACHED_AT);
index 121ec91bf0e550bdf8c871c8cdc8452ff2ab6739..660a903cd05d6ae6cba6b3468bca7c43ecb0bc30 100644 (file)
@@ -144,10 +144,9 @@ memcached_return_t memcached_delete_by_key(memcached_st *ptr,
     return rc;
   }
 
-  rc= memcached_validate_key_length(key_length, ptr->flags.binary_protocol);
-  if (memcached_failed(rc))
+  if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))
   {
-    return rc;
+    return memcached_set_error(*ptr, rc, MEMCACHED_AT);
   }
 
   if (expiration)
index 830c3ff405c02d66d67e3a6600bfe87d99813081..b46ca1795d9f07a2df13b924a236488b7aa7d201 100644 (file)
@@ -53,8 +53,8 @@ static memcached_return_t ascii_dump(memcached_st *ptr, memcached_dump_fn *callb
     memcached_server_write_instance_st instance;
     instance= memcached_server_instance_fetch(ptr, server_key);
 
-    /* 256 I BELIEVE is the upper limit of slabs */
-    for (uint32_t x= 0; x < 256; x++)
+    /* MAX_NUMBER_OF_SLAB_CLASSESdefined to 200 in Memcached 1.4.10 */
+    for (uint32_t x= 0; x < 200; x++)
     {
       char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
       int buffer_length= snprintf(buffer, sizeof(buffer), "%u", x);
@@ -151,9 +151,9 @@ memcached_return_t memcached_dump(memcached_st *ptr, memcached_dump_fn *callback
     No support for Binary protocol yet
     @todo Fix this so that we just flush, switch to ascii, and then go back to binary.
   */
-  if (ptr->flags.binary_protocol)
+  if (memcached_is_binary(ptr))
   {
-    return MEMCACHED_FAILURE;
+    return memcached_set_error(*ptr, MEMCACHED_NOT_SUPPORTED, MEMCACHED_AT, memcached_literal_param("Binary protocol is not supported for memcached_dump()"));
   }
 
   return ascii_dump(ptr, callback, context, number_of_callbacks);
index b24283869a668eb001fc58f8c101213592ebd538..fa76adae7b3de6e9cc071cf6a2f26da06ab71b0d 100644 (file)
@@ -439,7 +439,8 @@ memcached_return_t memcached_mget_execute_by_key(memcached_st *ptr,
 
   if (memcached_is_binary(ptr) == false)
   {
-    return MEMCACHED_NOT_SUPPORTED;
+    return memcached_set_error(*ptr, MEMCACHED_NOT_SUPPORTED, MEMCACHED_AT,
+                               memcached_literal_param("ASCII protocol is not supported for memcached_mget_execute_by_key()"));
   }
 
   memcached_callback_st *original_callbacks= ptr->callbacks;
@@ -498,14 +499,18 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr,
     protocol_binary_request_getk request= { }; //= {.bytes= {0}};
     request.message.header.request.magic= PROTOCOL_BINARY_REQ;
     if (mget_mode)
+    {
       request.message.header.request.opcode= PROTOCOL_BINARY_CMD_GETKQ;
+    }
     else
+    {
       request.message.header.request.opcode= PROTOCOL_BINARY_CMD_GETK;
+    }
 
     memcached_return_t vk;
     vk= memcached_validate_key_length(key_length[x],
                                       ptr->flags.binary_protocol);
-    unlikely (vk != MEMCACHED_SUCCESS)
+    if (vk != MEMCACHED_SUCCESS)
     {
       if (x > 0)
       {
index f08f8bf077cdcc150ee98721dbcf3054e0beeac3..85ce83810299babdc1c21ab44eb00c59f2230feb 100644 (file)
@@ -275,18 +275,12 @@ memcached_server_instance_st memcached_server_by_key(memcached_st *ptr,
     return NULL;
   }
 
-  if (memcached_failed(rc= memcached_validate_key_length(key_length, ptr->flags.binary_protocol)))
+  if (memcached_failed(rc= (memcached_key_test(*ptr, (const char **)&key, &key_length, 1))))
   {
     *error= rc;
     return NULL;
   }
 
-  if (memcached_failed((memcached_key_test(*ptr, (const char **)&key, &key_length, 1))))
-  {
-    *error= MEMCACHED_BAD_KEY_PROVIDED;
-    return NULL;
-  }
-
   uint32_t server_key= memcached_generate_hash(ptr, key, key_length);
   return memcached_server_instance_by_position(ptr, server_key);
 
@@ -295,7 +289,7 @@ memcached_server_instance_st memcached_server_by_key(memcached_st *ptr,
 void memcached_server_error_reset(memcached_server_st *self)
 {
   WATCHPOINT_ASSERT(self);
-  if (not self)
+  if (self == NULL)
   {
     return;
   }
index 2d0ae8fc5b4ce7e2693fd61fe84a30c0113a8509..e5f67dbcd2e50b7f07118aaa4db10dad3f877bec 100644 (file)
@@ -342,16 +342,11 @@ static inline memcached_return_t memcached_send(memcached_st *ptr,
     return rc;
   }
 
-  if (memcached_failed(rc= memcached_validate_key_length(key_length, memcached_is_binary(ptr))))
+  if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))
   {
     return rc;
   }
 
-  if (memcached_failed(memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))
-  {
-    return MEMCACHED_BAD_KEY_PROVIDED;
-  }
-
   uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length);
   memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, server_key);
 
index 8505d7e679528f8e3181306c627f79170e3ab621..b7fa247532e41f32d46e4fe210c23a69688f4f49 100644 (file)
@@ -123,7 +123,7 @@ memcached_return_t memcached_touch_by_key(memcached_st *ptr,
 
   if (memcached_failed(rc= memcached_validate_key_length(key_length, ptr->flags.binary_protocol)))
   {
-    return memcached_set_error(*ptr, rc, MEMCACHED_AT);
+    return rc;
   }
 
   uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length);
diff --git a/m4/ax_compiler_vendor.m4 b/m4/ax_compiler_vendor.m4
new file mode 100644 (file)
index 0000000..73e32ea
--- /dev/null
@@ -0,0 +1,84 @@
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_COMPILER_VENDOR
+#
+# DESCRIPTION
+#
+#   Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
+#   hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
+#   watcom, etc. The vendor is returned in the cache variable
+#   $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+#   Copyright (c) 2008 Matteo Frigo
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 11
+
+AC_DEFUN([AX_COMPILER_VENDOR],
+[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
+  [# note: don't check for gcc first since some other compilers define __GNUC__
+  vendors="intel:     __ICC,__ECC,__INTEL_COMPILER
+           ibm:       __xlc__,__xlC__,__IBMC__,__IBMCPP__
+           pathscale: __PATHCC__,__PATHSCALE__
+           clang:     __clang__
+           gnu:       __GNUC__
+           sun:       __SUNPRO_C,__SUNPRO_CC
+           hp:        __HP_cc,__HP_aCC
+           dec:       __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
+           borland:   __BORLANDC__,__TURBOC__
+           comeau:    __COMO__
+           cray:      _CRAYC
+           kai:       __KCC
+           lcc:       __LCC__
+           sgi:       __sgi,sgi
+           microsoft: _MSC_VER
+           metrowerks: __MWERKS__
+           watcom:    __WATCOMC__
+           portland:  __PGI
+           unknown:   UNKNOWN"
+  for ventest in $vendors; do
+    case $ventest in
+      *:) vendor=$ventest; continue ;;
+      *)  vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
+    esac
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
+      #if !($vencpp)
+        thisisanerror;
+      #endif
+    ])], [break])
+  done
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
+ ])
+])
diff --git a/m4/ax_tls.m4 b/m4/ax_tls.m4
new file mode 100644 (file)
index 0000000..033e3b1
--- /dev/null
@@ -0,0 +1,76 @@
+# ===========================================================================
+#          http://www.gnu.org/software/autoconf-archive/ax_tls.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_TLS([action-if-found], [action-if-not-found])
+#
+# DESCRIPTION
+#
+#   Provides a test for the compiler support of thread local storage (TLS)
+#   extensions. Defines TLS if it is found. Currently knows about GCC/ICC
+#   and MSVC. I think SunPro uses the same as GCC, and Borland apparently
+#   supports either.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Alan Woodland <ajw05@aber.ac.uk>
+#   Copyright (c) 2010 Diego Elio Petteno` <flameeyes@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 10
+
+AC_DEFUN([AX_TLS], [
+  AC_MSG_CHECKING(for thread local storage (TLS) class)
+  AC_CACHE_VAL(ac_cv_tls, [
+    ax_tls_keywords="__thread __declspec(thread) none"
+    for ax_tls_keyword in $ax_tls_keywords; do
+       AS_CASE([$ax_tls_keyword],
+          [none], [ac_cv_tls=none ; break],
+          [AC_TRY_COMPILE(
+              [#include <stdlib.h>
+               static void
+               foo(void) {
+               static ] $ax_tls_keyword [ int bar;
+               exit(1);
+               }],
+               [],
+               [ac_cv_tls=$ax_tls_keyword ; break],
+               ac_cv_tls=none
+           )])
+    done
+  ])
+  AC_MSG_RESULT($ac_cv_tls)
+
+  AS_IF([test "$ac_cv_tls" != "none"],
+    AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [If the compiler supports a TLS storage class define it to that here])
+      m4_ifnblank([$1], [$1]),
+    m4_ifnblank([$2], [$2])
+  )
+])
index e610adaa1d1a4e7c901ba78ffef5c4a7a04b9e4b..afca3049088c55d62beb006ec7703114108bc66b 100644 (file)
@@ -47,7 +47,7 @@ you will need to install %{name}-devel.
 %setup -q
 
 %{__mkdir} examples
-%{__cp} tests/*.{cc,cpp,h} examples/
+#%{__cp} tests/*.{cc,h} examples/
 
 
 %build
@@ -89,11 +89,11 @@ you will need to install %{name}-devel.
 %exclude %{_libdir}/libmemcachedutil.a
 %exclude %{_libdir}/libmemcachedprotocol.a
 %{_libdir}/libhashkit.so.1.0.0
-%{_libdir}/libmemcached.so.8.0.0
+%{_libdir}/libmemcached.so.9.0.0
 %{_libdir}/libmemcachedutil.so.2.0.0
 %{_libdir}/libmemcachedprotocol.so.0.0.0
 %{_libdir}/libhashkit.so.1
-%{_libdir}/libmemcached.so.8
+%{_libdir}/libmemcached.so.9
 %{_libdir}/libmemcachedprotocol.so.0
 %{_libdir}/libmemcachedutil.so.2
 %{_mandir}/man1/memcapable.1.gz
@@ -142,25 +142,28 @@ you will need to install %{name}-devel.
 %{_includedir}/libmemcached/memcached.hpp
 %{_includedir}/libmemcached/util.h
 
+%{_includedir}/libmemcached-1.0/alloc.h
 %{_includedir}/libmemcached-1.0/allocators.h
 %{_includedir}/libmemcached-1.0/analyze.h
 %{_includedir}/libmemcached-1.0/auto.h
 %{_includedir}/libmemcached-1.0/basic_string.h
 %{_includedir}/libmemcached-1.0/behavior.h
 %{_includedir}/libmemcached-1.0/callback.h
+%{_includedir}/libmemcached-1.0/callbacks.h
 %{_includedir}/libmemcached-1.0/configure.h
-%{_includedir}/libmemcached-1.0/constants.h
+%{_includedir}/libmemcached-1.0/defaults.h
 %{_includedir}/libmemcached-1.0/delete.h
+%{_includedir}/libmemcached-1.0/deprecated_types.h
 %{_includedir}/libmemcached-1.0/dump.h
 %{_includedir}/libmemcached-1.0/error.h
-%{_includedir}/libmemcached-1.0/exist.h
-%{_includedir}/libmemcached-1.0/touch.h
 %{_includedir}/libmemcached-1.0/exception.hpp
+%{_includedir}/libmemcached-1.0/exist.h
 %{_includedir}/libmemcached-1.0/fetch.h
 %{_includedir}/libmemcached-1.0/flush.h
 %{_includedir}/libmemcached-1.0/flush_buffers.h
 %{_includedir}/libmemcached-1.0/get.h
 %{_includedir}/libmemcached-1.0/hash.h
+%{_includedir}/libmemcached-1.0/limits.h
 %{_includedir}/libmemcached-1.0/memcached.h
 %{_includedir}/libmemcached-1.0/memcached.hpp
 %{_includedir}/libmemcached-1.0/options.h
@@ -175,8 +178,24 @@ you will need to install %{name}-devel.
 %{_includedir}/libmemcached-1.0/stats.h
 %{_includedir}/libmemcached-1.0/storage.h
 %{_includedir}/libmemcached-1.0/strerror.h
-%{_includedir}/libmemcached-1.0/string.h
+%{_includedir}/libmemcached-1.0/struct/allocator.h
+%{_includedir}/libmemcached-1.0/struct/analysis.h
+%{_includedir}/libmemcached-1.0/struct/callback.h
+%{_includedir}/libmemcached-1.0/struct/memcached.h
+%{_includedir}/libmemcached-1.0/struct/result.h
+%{_includedir}/libmemcached-1.0/struct/sasl.h
+%{_includedir}/libmemcached-1.0/struct/server.h
+%{_includedir}/libmemcached-1.0/struct/stat.h
+%{_includedir}/libmemcached-1.0/struct/string.h
+%{_includedir}/libmemcached-1.0/touch.h
+%{_includedir}/libmemcached-1.0/triggers.h
 %{_includedir}/libmemcached-1.0/types.h
+%{_includedir}/libmemcached-1.0/types/behavior.h
+%{_includedir}/libmemcached-1.0/types/callback.h
+%{_includedir}/libmemcached-1.0/types/connection.h
+%{_includedir}/libmemcached-1.0/types/hash.h
+%{_includedir}/libmemcached-1.0/types/return.h
+%{_includedir}/libmemcached-1.0/types/server_distribution.h
 %{_includedir}/libmemcached-1.0/verbosity.h
 %{_includedir}/libmemcached-1.0/version.h
 %{_includedir}/libmemcached-1.0/visibility.h
diff --git a/tests/libmemcached-1.0/dump.cc b/tests/libmemcached-1.0/dump.cc
new file mode 100644 (file)
index 0000000..44391ef
--- /dev/null
@@ -0,0 +1,70 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ * 
+ *  Libmemcached library
+ *
+ *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <config.h>
+#include <libtest/test.hpp>
+
+#include <libmemcached-1.0/memcached.h>
+#include <libmemcached/util.h>
+
+using namespace libtest;
+
+#include "tests/libmemcached-1.0/dump.h"
+
+static memcached_return_t callback_dump_counter(const memcached_st *,
+                                                const char *,
+                                                size_t ,
+                                                void *context)
+{
+  size_t *counter= (size_t *)context;
+
+  *counter= *counter +1;
+
+  return MEMCACHED_SUCCESS;
+}
+
+test_return_t memcached_dump_TEST(memcached_st *memc)
+{
+  test_skip(false, memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL));
+
+  size_t count= 0;
+  memcached_dump_fn callbacks[1];
+  callbacks[0]= &callback_dump_counter;
+
+  test_compare_hint(MEMCACHED_SUCCESS, memcached_dump(memc, callbacks, &count, 1), memcached_last_error_message(memc));
+
+  return TEST_SUCCESS;
+}
diff --git a/tests/libmemcached-1.0/dump.h b/tests/libmemcached-1.0/dump.h
new file mode 100644 (file)
index 0000000..37c4d5a
--- /dev/null
@@ -0,0 +1,39 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ * 
+ *  Libmemcached library
+ *
+ *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#pragma once
+
+test_return_t memcached_dump_TEST(memcached_st *);
index 81653a1c8e68987bd2dedc4f90523d6a53724be2..88bdeb1d8224f126d678bcb653265b74d2841564 100644 (file)
@@ -17,6 +17,7 @@ noinst_HEADERS+= \
                 tests/ketama.h \
                 tests/ketama_test_cases.h \
                 tests/ketama_test_cases_spy.h \
+                tests/libmemcached-1.0/dump.h \
                 tests/namespace.h \
                 tests/parser.h \
                 tests/touch.h \
@@ -48,6 +49,7 @@ tests_libmemcached_1_0_testapp_SOURCES= \
                                         tests/libmemcached-1.0/callbacks.cc \
                                         tests/libmemcached-1.0/debug.cc \
                                         tests/libmemcached-1.0/deprecated.cc \
+                                        tests/libmemcached-1.0/dump.cc \
                                         tests/libmemcached-1.0/error_conditions.cc \
                                         tests/libmemcached-1.0/exist.cc \
                                         tests/libmemcached-1.0/ketama.cc \
index 62b32473c77cd5448373bcebda78150cfb4904ae..ac88ee50fbde9a10d3e7adc89439af93d59b67d3 100644 (file)
@@ -78,6 +78,7 @@
 #include "tests/ketama.h"
 #include "tests/namespace.h"
 #include "tests/parser.h"
+#include "tests/libmemcached-1.0/dump.h"
 #include "tests/touch.h"
 #include "tests/callbacks.h"
 #include "tests/pool.h"
@@ -5664,6 +5665,7 @@ test_st tests[] ={
   {"memcached_exist_by_key(MEMCACHED_SUCCESS)", true, (test_callback_fn*)memcached_exist_by_key_SUCCESS },
   {"memcached_touch", 0, (test_callback_fn*)test_memcached_touch},
   {"memcached_touch_with_prefix", 0, (test_callback_fn*)test_memcached_touch_by_key},
+  {"memcached_dump()", 0, (test_callback_fn*)memcached_dump_TEST },
   {0, 0, 0}
 };