Add option -P and -T to memcapable
[m6w6/libmemcached] / tests / mem_functions.c
index d5b4b2d063c369fd2dcf00b1877bf911295bc87c..ad81f9d91dae9c23b0ca0e2f02fd88090679475a 100644 (file)
   Sample test application.
 */
 
-#include "libmemcached/common.h"
+#include "config.h"
 
 #include <assert.h>
 #include <stdio.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/time.h>
 #include <signal.h>
 #include <unistd.h>
 #include <time.h>
+
+#include "libmemcached/common.h"
+
 #include "server.h"
 #include "clients/generator.h"
 #include "clients/execute.h"
 
-#ifndef INT64_MAX
-#define INT64_MAX LONG_MAX
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX INT_MAX
-#endif
-
+#define SMALL_STRING_LEN 1024
 
 #include "test.h"
 
+
 #ifdef HAVE_LIBMEMCACHEDUTIL
 #include <pthread.h>
 #include "libmemcached/memcached_util.h"
@@ -2946,6 +2945,11 @@ static void fail(int unused __attribute__((unused)))
 
 static test_return_t _user_supplied_bug21(memcached_st* memc, size_t key_count)
 {
+#ifdef WIN32
+  (void)memc;
+  (void)key_count;
+  return TEST_SKIPPED;
+#else
   memcached_return_t rc;
   unsigned int x;
   char **keys;
@@ -2994,6 +2998,7 @@ static test_return_t _user_supplied_bug21(memcached_st* memc, size_t key_count)
   memcached_free(memc_clone);
 
   return TEST_SUCCESS;
+#endif
 }
 
 static test_return_t user_supplied_bug21(memcached_st *memc)
@@ -4426,20 +4431,20 @@ static test_return_t util_version_test(memcached_st *memc)
   test_true(if_successful == true);
 
   if (instance->micro_version > 0)
-    if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, instance->micro_version -1);
+    if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, (uint8_t)(instance->micro_version -1));
   else if (instance->minor_version > 0)
-    if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->minor_version - 1, instance->micro_version);
+    if_successful= libmemcached_util_version_check(memc, instance->major_version, (uint8_t)(instance->minor_version - 1), instance->micro_version);
   else if (instance->major_version > 0)
-    if_successful= libmemcached_util_version_check(memc, instance->major_version -1, instance->minor_version, instance->micro_version);
+    if_successful= libmemcached_util_version_check(memc, (uint8_t)(instance->major_version -1), instance->minor_version, instance->micro_version);
 
   test_true(if_successful == true);
 
   if (instance->micro_version > 0)
-    if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, instance->micro_version +1);
+    if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, (uint8_t)(instance->micro_version +1));
   else if (instance->minor_version > 0)
-    if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->minor_version +1, instance->micro_version);
+    if_successful= libmemcached_util_version_check(memc, instance->major_version, (uint8_t)(instance->minor_version +1), instance->micro_version);
   else if (instance->major_version > 0)
-    if_successful= libmemcached_util_version_check(memc, instance->major_version +1, instance->minor_version, instance->micro_version);
+    if_successful= libmemcached_util_version_check(memc, (uint8_t)(instance->major_version +1), instance->minor_version, instance->micro_version);
 
   test_true(if_successful == false);
 
@@ -5029,15 +5034,12 @@ static test_return_t memcached_get_MEMCACHED_ERRNO(memcached_st *memc)
   // See if memcached is reachable.
   value= memcached_get(tl_memc_h, key, strlen(key), &len, &flags, &rc);
 
-  if (value)
-  {
-    free(value);
-    test_true(value); // Pointer won't be zero so this is fine.
-  }
-
+  test_false(value);
   test_true(len == 0);
   test_true(rc == MEMCACHED_ERRNO);
 
+  memcached_free(tl_memc_h);
+
   return TEST_SUCCESS;
 }
 
@@ -5055,12 +5057,7 @@ static test_return_t memcached_get_MEMCACHED_NOTFOUND(memcached_st *memc)
   // See if memcached is reachable.
   value= memcached_get(memc, key, strlen(key), &len, &flags, &rc);
 
-  if (value)
-  {
-    free(value);
-    test_true(value); // Pointer won't be zero so this is fine.
-  }
-
+  test_false(value);
   test_true(len == 0);
   test_true(rc == MEMCACHED_NOTFOUND);
 
@@ -5094,15 +5091,12 @@ static test_return_t memcached_get_by_key_MEMCACHED_ERRNO(memcached_st *memc)
   // See if memcached is reachable.
   value= memcached_get_by_key(tl_memc_h, key, strlen(key), key, strlen(key), &len, &flags, &rc);
 
-  if (value)
-  {
-    free(value);
-    test_true(value); // Pointer won't be zero so this is fine.
-  }
-
+  test_false(value);
   test_true(len == 0);
   test_true(rc == MEMCACHED_ERRNO);
 
+  memcached_free(tl_memc_h);
+
   return TEST_SUCCESS;
 }
 
@@ -5120,12 +5114,7 @@ static test_return_t memcached_get_by_key_MEMCACHED_NOTFOUND(memcached_st *memc)
   // See if memcached is reachable.
   value= memcached_get_by_key(memc, key, strlen(key), key, strlen(key), &len, &flags, &rc);
 
-  if (value)
-  {
-    free(value);
-    test_true(value); // Pointer won't be zero so this is fine.
-  }
-
+  test_false(value);
   test_true(len == 0);
   test_true(rc == MEMCACHED_NOTFOUND);
 
@@ -5742,6 +5731,39 @@ static test_return_t test_cull_servers(memcached_st *memc)
   return TEST_SUCCESS;
 }
 
+
+static memcached_return_t stat_printer(memcached_server_instance_st server,
+                                       const char *key, size_t key_length,
+                                       const char *value, size_t value_length,
+                                       void *context)
+{
+  (void)server;
+  (void)context;
+  (void)key;
+  (void)key_length;
+  (void)value;
+  (void)value_length;
+
+  return MEMCACHED_SUCCESS;
+}
+
+static test_return_t memcached_stat_execute_test(memcached_st *memc)
+{
+  memcached_return_t rc= memcached_stat_execute(memc, NULL, stat_printer, NULL);
+  test_true(rc == MEMCACHED_SUCCESS);
+
+  rc= memcached_stat_execute(memc, "slabs", stat_printer, NULL);
+  test_true(rc == MEMCACHED_SUCCESS);
+
+  rc= memcached_stat_execute(memc, "items", stat_printer, NULL);
+  test_true(rc == MEMCACHED_SUCCESS);
+
+  rc= memcached_stat_execute(memc, "sizes", stat_printer, NULL);
+  test_true(rc == MEMCACHED_SUCCESS);
+
+  return TEST_SUCCESS;
+}
+
 /*
  * This test ensures that the failure counter isn't incremented during
  * normal termination of the memcached instance.
@@ -6135,6 +6157,7 @@ test_st tests[] ={
   {"verbosity", 1, (test_callback_fn)test_verbosity},
   {"test_server_failure", 1, (test_callback_fn)test_server_failure},
   {"cull_servers", 1, (test_callback_fn)test_cull_servers},
+  {"memcached_stat_execute", 1, (test_callback_fn)memcached_stat_execute_test},
   {0, 0, 0}
 };