Merge in trond.
authorBrian Aker <brian@tangent.org>
Tue, 22 Feb 2011 21:58:11 +0000 (13:58 -0800)
committerBrian Aker <brian@tangent.org>
Tue, 22 Feb 2011 21:58:11 +0000 (13:58 -0800)
1  2 
configure.ac
tests/hashkit_functions.c
tests/mem_functions.c

diff --combined configure.ac
index 716cb6b7f2e2fd3bc91b18e8c08414f13560d230,66159d2d65825280be3edac863c8aa1f9109e265..2907607c9b6252281c467ebdf6615b1b83980e1e
@@@ -79,7 -79,6 +79,6 @@@ AH_BOTTOM(
  #define closesocket(a) close(a)
  #define get_socket_errno() errno
  #endif
  #endif
  ])
  
@@@ -101,7 -100,6 +100,7 @@@ DETECT_BYTEORDE
  ENABLE_UTILLIB
  SETSOCKOPT_SANITY
  ENABLE_HSIEH_HASH
 +ENABLE_MURMUR_HASH
  PROTOCOL_BINARY_TEST
  WITH_MEMCACHED
  ENABLE_DEPRECATED
index d1f846e74f324c2326e8380348fe582533e68d07,53c94b59c3eb3dbde9313d97da396039b16fc91e..deb5436a1570cf5961579aa48b704b7a02047801
@@@ -31,10 -31,11 +31,11 @@@ struct hash_test_s
    bool _unused;
  };
  
- static test_return_t init_test(void *not_used __attribute__((unused)))
+ static test_return_t init_test(void *not_used)
  {
    hashkit_st hashk;
    hashkit_st *hashk_ptr;
+   (void)not_used;
  
    hashk_ptr= hashkit_create(&hashk);
    test_true(hashk_ptr);
    return TEST_SUCCESS;
  }
  
- static test_return_t allocation_test(void *not_used __attribute__((unused)))
+ static test_return_t allocation_test(void *not_used)
  {
    hashkit_st *hashk_ptr;
+   (void)not_used;
  
    hashk_ptr= hashkit_create(NULL);
    test_true(hashk_ptr);
@@@ -115,10 -117,11 +117,11 @@@ static test_return_t clone_test(hashkit
    return TEST_SUCCESS;
  }
  
- static test_return_t one_at_a_time_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t one_at_a_time_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t md5_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t md5_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t crc_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t crc_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t fnv1_64_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t fnv1_64_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t fnv1a_64_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t fnv1a_64_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t fnv1_32_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t fnv1_32_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t fnv1a_32_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t fnv1a_32_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t hsieh_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t hsieh_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t murmur_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t murmur_run (hashkit_st *hashk)
  {
+   (void)hashk;
  #ifdef WORDS_BIGENDIAN
 +  (void)murmur_values;
    return TEST_SKIPPED;
  #else
    uint32_t x;
    {
      uint32_t hash_val;
  
 +#ifdef HAVE_MURMUR_HASH
      hash_val= libhashkit_murmur(*ptr, strlen(*ptr));
 +#else
 +    hash_val= 1;
 +#endif
      assert(murmur_values[x] == hash_val);
    }
  
  #endif
  }
  
- static test_return_t jenkins_run (hashkit_st *hashk __attribute__((unused)))
+ static test_return_t jenkins_run (hashkit_st *hashk)
  {
    uint32_t x;
    const char **ptr;
+   (void)hashk;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
@@@ -314,7 -320,7 +325,7 @@@ static test_return_t hashkit_digest_tes
  
  static test_return_t hashkit_set_function_test(hashkit_st *hashk)
  {
-   for (hashkit_hash_algorithm_t algo = HASHKIT_HASH_DEFAULT; algo < HASHKIT_HASH_MAX; algo++) 
+   for (hashkit_hash_algorithm_t algo = HASHKIT_HASH_DEFAULT; algo < HASHKIT_HASH_MAX; algo++)
    {
      hashkit_return_t rc;
      uint32_t x;
      rc= hashkit_set_function(hashk, algo);
  
      /* Hsieh is disabled most of the time for patent issues */
 +#ifndef HAVE_HSIEH_HASH
      if (rc == HASHKIT_FAILURE && algo == HASHKIT_HASH_HSIEH)
        continue;
 +#endif
 +
 +#ifndef HAVE_MURMUR_HASH
 +    if (rc == HASHKIT_FAILURE && algo == HASHKIT_HASH_MURMUR)
 +      continue;
 +#endif
  
      if (rc == HASHKIT_FAILURE && algo == HASHKIT_HASH_CUSTOM)
        continue;
@@@ -427,7 -426,7 +438,7 @@@ static test_return_t hashkit_set_custom
  
  static test_return_t hashkit_set_distribution_function_test(hashkit_st *hashk)
  {
-   for (hashkit_hash_algorithm_t algo = HASHKIT_HASH_DEFAULT; algo < HASHKIT_HASH_MAX; algo++) 
+   for (hashkit_hash_algorithm_t algo = HASHKIT_HASH_DEFAULT; algo < HASHKIT_HASH_MAX; algo++)
    {
      hashkit_return_t rc;
  
@@@ -459,7 -458,7 +470,7 @@@ static test_return_t hashkit_set_custom
  
  static test_return_t hashkit_get_function_test(hashkit_st *hashk)
  {
-   for (hashkit_hash_algorithm_t algo = HASHKIT_HASH_DEFAULT; algo < HASHKIT_HASH_MAX; algo++) 
+   for (hashkit_hash_algorithm_t algo = HASHKIT_HASH_DEFAULT; algo < HASHKIT_HASH_MAX; algo++)
    {
      hashkit_return_t rc;
  
diff --combined tests/mem_functions.c
index 357ea23760d4380ec95b644733e4242e6b8edeff,48b254dbfcf921de08f853e0af9cd2d303e04961..b5bd08809f4266841826424e6fe95f492de28b1f
@@@ -55,9 -55,10 +55,10 @@@ static size_t global_keys_length[GLOBAL
  static test_return_t pre_binary(memcached_st *memc);
  
  
- static test_return_t init_test(memcached_st *not_used __attribute__((unused)))
+ static test_return_t init_test(memcached_st *not_used)
  {
    memcached_st memc;
+   (void)not_used;
  
    (void)memcached_create(&memc);
    memcached_free(&memc);
    return TEST_SUCCESS;
  }
  
- static test_return_t server_list_null_test(memcached_st *ptr __attribute__((unused)))
+ static test_return_t server_list_null_test(memcached_st *ptr)
  {
    memcached_server_st *server_list;
    memcached_return_t rc;
+   (void)ptr;
  
    server_list= memcached_server_list_append_with_weight(NULL, NULL, 0, 0, NULL);
    test_true(server_list == NULL);
  #define TEST_PORT_COUNT 7
  in_port_t test_ports[TEST_PORT_COUNT];
  
- static memcached_return_t  server_display_function(const memcached_st *ptr __attribute__((unused)),
+ static memcached_return_t  server_display_function(const memcached_st *ptr,
                                                     const memcached_server_st *server,
                                                     void *context)
  {
    /* Do Nothing */
    size_t bigger= *((size_t *)(context));
+   (void)ptr;
    assert(bigger <= memcached_server_port(server));
    *((size_t *)(context))= memcached_server_port(server);
  
    return MEMCACHED_SUCCESS;
  }
  
- static memcached_return_t dump_server_information(const memcached_st *ptr __attribute__((unused)),
+ static memcached_return_t dump_server_information(const memcached_st *ptr,
                                                    const memcached_server_st *instance,
                                                    void *context)
  {
    /* Do Nothing */
    FILE *stream= (FILE *)context;
+   (void)ptr;
  
-   fprintf(stream, "Memcached Server: %s %u Version %u.%u.%u\n", 
+   fprintf(stream, "Memcached Server: %s %u Version %u.%u.%u\n",
            memcached_server_name(instance),
            memcached_server_port(instance),
            instance->major_version,
    return MEMCACHED_SUCCESS;
  }
  
- static test_return_t server_sort_test(memcached_st *ptr __attribute__((unused)))
+ static test_return_t server_sort_test(memcached_st *ptr)
  {
    size_t bigger= 0; /* Prime the value for the test_true in server_display_function */
  
    memcached_return_t rc;
    memcached_server_fn callbacks[1];
    memcached_st *local_memc;
+   (void)ptr;
  
    local_memc= memcached_create(NULL);
    test_true(local_memc);
    return TEST_SUCCESS;
  }
  
- static test_return_t server_sort2_test(memcached_st *ptr __attribute__((unused)))
+ static test_return_t server_sort2_test(memcached_st *ptr)
  {
    size_t bigger= 0; /* Prime the value for the test_true in server_display_function */
    memcached_return_t rc;
    memcached_server_fn callbacks[1];
    memcached_st *local_memc;
    memcached_server_instance_st instance;
+   (void)ptr;
  
    local_memc= memcached_create(NULL);
    test_true(local_memc);
    return TEST_SUCCESS;
  }
  
- static memcached_return_t server_print_callback(const memcached_st *ptr __attribute__((unused)),
+ static memcached_return_t server_print_callback(const memcached_st *ptr,
                                                  const memcached_server_st *server,
-                                                 void *context __attribute__((unused)))
+                                                 void *context)
  {
    (void)server; // Just in case we aren't printing.
+   (void)ptr;
+   (void)context;
  
  #if 0
    fprintf(stderr, "%s(%d)", memcached_server_name(server), memcached_server_port(server));
    return MEMCACHED_SUCCESS;
  }
  
- static test_return_t memcached_server_remove_test(memcached_st *ptr __attribute__((unused)))
+ static test_return_t memcached_server_remove_test(memcached_st *ptr)
  {
    memcached_return_t rc;
    memcached_st local_memc;
    memcached_server_fn callbacks[1];
  
    const char *server_string= "localhost:4444, localhost:4445, localhost:4446, localhost:4447, localhost, memcache1.memcache.bk.sapo.pt:11211, memcache1.memcache.bk.sapo.pt:11212, memcache1.memcache.bk.sapo.pt:11213, memcache1.memcache.bk.sapo.pt:11214, memcache2.memcache.bk.sapo.pt:11211, memcache2.memcache.bk.sapo.pt:11212, memcache2.memcache.bk.sapo.pt:11213, memcache2.memcache.bk.sapo.pt:11214";
+   (void)ptr;
  
    memc= memcached_create(&local_memc);
  
    return TEST_SUCCESS;
  }
  
- static memcached_return_t server_display_unsort_function(const memcached_st *ptr __attribute__((unused)),
+ static memcached_return_t server_display_unsort_function(const memcached_st *ptr,
                                                           const memcached_server_st *server,
                                                           void *context)
  {
    /* Do Nothing */
    uint32_t x= *((uint32_t *)(context));
+   (void)ptr;
  
    assert(test_ports[x] == server->port);
    *((uint32_t *)(context))= ++x;
    return MEMCACHED_SUCCESS;
  }
  
- static test_return_t server_unsort_test(memcached_st *ptr __attribute__((unused)))
+ static test_return_t server_unsort_test(memcached_st *ptr)
  {
    size_t counter= 0; /* Prime the value for the test_true in server_display_function */
    size_t bigger= 0; /* Prime the value for the test_true in server_display_function */
    memcached_return_t rc;
    memcached_server_fn callbacks[1];
    memcached_st *local_memc;
+   (void)ptr;
  
    local_memc= memcached_create(NULL);
    test_true(local_memc);
    return TEST_SUCCESS;
  }
  
- static test_return_t allocation_test(memcached_st *not_used __attribute__((unused)))
+ static test_return_t allocation_test(memcached_st *not_used)
  {
+   (void)not_used;
    memcached_st *memc;
    memc= memcached_create(NULL);
    test_true(memc);
@@@ -759,10 -771,11 +771,11 @@@ static test_return_t flush_test(memcach
    return TEST_SUCCESS;
  }
  
- static memcached_return_t  server_function(const memcached_st *ptr __attribute__((unused)),
-                                            const memcached_server_st *server __attribute__((unused)),
-                                            void *context __attribute__((unused)))
+ static memcached_return_t  server_function(const memcached_st *ptr,
+                                            const memcached_server_st *server,
+                                            void *context)
  {
+   (void)ptr; (void)server; (void)context;
    /* Do Nothing */
  
    return MEMCACHED_SUCCESS;
@@@ -876,12 -889,12 +889,12 @@@ static test_return_t bad_key_test(memca
  }
  
  #define READ_THROUGH_VALUE "set for me"
- static memcached_return_t read_through_trigger(memcached_st *memc __attribute__((unused)),
-                                                char *key __attribute__((unused)),
-                                                size_t key_length __attribute__((unused)),
+ static memcached_return_t read_through_trigger(memcached_st *memc,
+                                                char *key,
+                                                size_t key_length,
                                                 memcached_result_st *result)
  {
+    (void)memc;(void)key;(void)key_length;
    return memcached_result_set_value(result, READ_THROUGH_VALUE, strlen(READ_THROUGH_VALUE));
  }
  
@@@ -924,10 -937,11 +937,11 @@@ static test_return_t read_through(memca
    return TEST_SUCCESS;
  }
  
- static memcached_return_t  delete_trigger(memcached_st *ptr __attribute__((unused)),
+ static memcached_return_t  delete_trigger(memcached_st *ptr,
                                            const char *key,
-                                           size_t key_length __attribute__((unused)))
+                                           size_t key_length)
  {
+   (void)ptr;(void)key_length;
    assert(key);
  
    return MEMCACHED_SUCCESS;
@@@ -1575,10 -1589,11 +1589,11 @@@ static test_return_t mget_result_alloc_
  }
  
  /* Count the results */
- static memcached_return_t callback_counter(const memcached_st *ptr __attribute__((unused)),
-                                            memcached_result_st *result __attribute__((unused)),
+ static memcached_return_t callback_counter(const memcached_st *ptr,
+                                            memcached_result_st *result,
                                             void *context)
  {
+   (void)ptr; (void)result;
    size_t *counter= (size_t *)context;
  
    *counter= *counter + 1;
@@@ -1805,9 -1820,10 +1820,10 @@@ static test_return_t get_stats_keys(mem
   return TEST_SUCCESS;
  }
  
- static test_return_t version_string_test(memcached_st *memc __attribute__((unused)))
+ static test_return_t version_string_test(memcached_st *memc)
  {
    const char *version_string;
+   (void)memc;
  
    version_string= memcached_lib_version();
  
@@@ -1875,13 -1891,15 +1891,15 @@@ static test_return_t add_host_test(memc
    return TEST_SUCCESS;
  }
  
- static memcached_return_t  clone_test_callback(memcached_st *parent __attribute__((unused)), memcached_st *memc_clone __attribute__((unused)))
+ static memcached_return_t  clone_test_callback(memcached_st *parent, memcached_st *memc_clone)
  {
+   (void)parent;(void)memc_clone;
    return MEMCACHED_SUCCESS;
  }
  
- static memcached_return_t  cleanup_test_callback(memcached_st *ptr __attribute__((unused)))
+ static memcached_return_t  cleanup_test_callback(memcached_st *ptr)
  {
+   (void)ptr;
    return MEMCACHED_SUCCESS;
  }
  
@@@ -2407,7 -2425,7 +2425,7 @@@ static test_return_t user_supplied_bug6
    return TEST_SUCCESS;
  }
  
- static test_return_t user_supplied_bug8(memcached_st *memc __attribute__((unused)))
+ static test_return_t user_supplied_bug8(memcached_st *memc)
  {
    memcached_return_t rc;
    memcached_st *mine;
    memcached_server_st *servers;
    const char *server_list= "memcache1.memcache.bk.sapo.pt:11211, memcache1.memcache.bk.sapo.pt:11212, memcache1.memcache.bk.sapo.pt:11213, memcache1.memcache.bk.sapo.pt:11214, memcache2.memcache.bk.sapo.pt:11211, memcache2.memcache.bk.sapo.pt:11212, memcache2.memcache.bk.sapo.pt:11213, memcache2.memcache.bk.sapo.pt:11214";
  
+   (void)memc;
    servers= memcached_servers_parse(server_list);
    test_true(servers);
  
@@@ -2960,8 -2979,9 +2979,9 @@@ static test_return_t user_supplied_bug1
   */
  
  /* sighandler_t function that always asserts false */
- static void fail(int unused __attribute__((unused)))
+ static void fail(int unused)
  {
+   (void)unused;
    assert(0);
  }
  
@@@ -3329,15 -3349,17 +3349,17 @@@ static test_return_t string_alloc_appen
    return TEST_SUCCESS;
  }
  
- static test_return_t cleanup_pairs(memcached_st *memc __attribute__((unused)))
+ static test_return_t cleanup_pairs(memcached_st *memc)
  {
+   (void)memc;
    pairs_free(global_pairs);
  
    return TEST_SUCCESS;
  }
  
- static test_return_t generate_pairs(memcached_st *memc __attribute__((unused)))
+ static test_return_t generate_pairs(memcached_st *memc)
  {
+   (void)memc;
    global_pairs= pairs_generate(GLOBAL_COUNT, 400);
    global_count= GLOBAL_COUNT;
  
    return TEST_SUCCESS;
  }
  
- static test_return_t generate_large_pairs(memcached_st *memc __attribute__((unused)))
+ static test_return_t generate_large_pairs(memcached_st *memc)
  {
+   (void)memc;
    global_pairs= pairs_generate(GLOBAL2_COUNT, MEMCACHED_MAX_BUFFER+10);
    global_count= GLOBAL2_COUNT;
  
@@@ -3672,13 -3695,9 +3695,13 @@@ static test_return_t pre_nonblock_binar
  
  static test_return_t pre_murmur(memcached_st *memc)
  {
 +#ifdef HAVE_MURMUR_HASH
    memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, (uint64_t)MEMCACHED_HASH_MURMUR);
 -
    return TEST_SUCCESS;
 +#else
 +  (void) memc;
 +  return TEST_SKIPPED;
 +#endif
  }
  
  static test_return_t pre_jenkins(memcached_st *memc)
@@@ -3855,9 -3874,10 +3878,10 @@@ static test_return_t pre_replication_no
  }
  
  
- static void my_free(const memcached_st *ptr __attribute__((unused)), void *mem, void *context)
+ static void my_free(const memcached_st *ptr, void *mem, void *context)
  {
-   (void) context;
+   (void)context;
+   (void)ptr;
  #ifdef HARD_MALLOC_TESTS
    void *real_ptr= (mem == NULL) ? mem : (void*)((caddr_t)mem - 8);
    free(real_ptr);
  }
  
  
- static void *my_malloc(const memcached_st *ptr __attribute__((unused)), const size_t size, void *context)
+ static void *my_malloc(const memcached_st *ptr, const size_t size, void *context)
  {
    (void)context;
+   (void)ptr;
  #ifdef HARD_MALLOC_TESTS
    void *ret= malloc(size + 8);
    if (ret != NULL)
  }
  
  
- static void *my_realloc(const memcached_st *ptr __attribute__((unused)), void *mem, const size_t size, void *context)
+ static void *my_realloc(const memcached_st *ptr, void *mem, const size_t size, void *context)
  {
    (void)context;
  #ifdef HARD_MALLOC_TESTS
  
    return ret;
  #else
+   (void)ptr;
    return realloc(mem, size);
  #endif
  }
  
  
- static void *my_calloc(const memcached_st *ptr __attribute__((unused)), size_t nelem, const size_t size, void *context)
+ static void *my_calloc(const memcached_st *ptr, size_t nelem, const size_t size, void *context)
  {
    (void)context;
  #ifdef HARD_MALLOC_TESTS
  
    return mem;
  #else
+   (void)ptr;
    return calloc(nelem, size);
  #endif
  }
@@@ -4347,11 -4370,12 +4374,12 @@@ static test_return_t analyzer_test(memc
  }
  
  /* Count the objects */
- static memcached_return_t callback_dump_counter(const memcached_st *ptr __attribute__((unused)),
-                                                 const char *key __attribute__((unused)),
-                                                 size_t key_length __attribute__((unused)),
+ static memcached_return_t callback_dump_counter(const memcached_st *ptr,
+                                                 const char *key,
+                                                 size_t key_length,
                                                  void *context)
  {
+   (void)ptr; (void)key; (void)key_length;
    size_t *counter= (size_t *)context;
  
    *counter= *counter + 1;
@@@ -4835,23 -4859,11 +4863,24 @@@ static test_return_t hsieh_avaibility_t
    return TEST_SUCCESS;
  }
  
- static test_return_t one_at_a_time_run (memcached_st *memc __attribute__((unused)))
 +static test_return_t murmur_avaibility_test (memcached_st *memc)
 +{
 +  memcached_return_t expected_rc= MEMCACHED_FAILURE;
 +#ifdef HAVE_MURMUR_HASH
 +  expected_rc= MEMCACHED_SUCCESS;
 +#endif
 +  memcached_return_t rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH,
 +                                                (uint64_t)MEMCACHED_HASH_MURMUR);
 +  test_true(rc == expected_rc);
 +
 +  return TEST_SUCCESS;
 +}
 +
+ static test_return_t one_at_a_time_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t md5_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t md5_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t crc_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t crc_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t fnv1_64_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t fnv1_64_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t fnv1a_64_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t fnv1a_64_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t fnv1_32_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t fnv1_32_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t fnv1a_32_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t fnv1a_32_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t hsieh_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t hsieh_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
    return TEST_SUCCESS;
  }
  
- static test_return_t murmur_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t murmur_run (memcached_st *memc)
  {
  #ifdef WORDS_BIGENDIAN
 +  (void)murmur_values;
    return TEST_SKIPPED;
  #else
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
  #endif
  }
  
- static test_return_t jenkins_run (memcached_st *memc __attribute__((unused)))
+ static test_return_t jenkins_run (memcached_st *memc)
  {
    uint32_t x;
    const char **ptr;
+   (void)memc;
  
    for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
    {
@@@ -5097,9 -5115,9 +5133,9 @@@ static test_return_t memcached_get_hash
  }
  
  /*
-   Test case adapted from John Gorman <johngorman2@gmail.com> 
+   Test case adapted from John Gorman <johngorman2@gmail.com>
  
-   We are testing the error condition when we connect to a server via memcached_get() 
+   We are testing the error condition when we connect to a server via memcached_get()
    but find that the server is not available.
  */
  static test_return_t memcached_get_MEMCACHED_ERRNO(memcached_st *memc)
    return TEST_SUCCESS;
  }
  
- /* 
+ /*
    We connect to a server which exists, but search for a key that does not exist.
  */
  static test_return_t memcached_get_MEMCACHED_NOTFOUND(memcached_st *memc)
  }
  
  /*
-   Test case adapted from John Gorman <johngorman2@gmail.com> 
+   Test case adapted from John Gorman <johngorman2@gmail.com>
  
-   We are testing the error condition when we connect to a server via memcached_get_by_key() 
+   We are testing the error condition when we connect to a server via memcached_get_by_key()
    but find that the server is not available.
  */
  static test_return_t memcached_get_by_key_MEMCACHED_ERRNO(memcached_st *memc)
    return TEST_SUCCESS;
  }
  
- /* 
+ /*
    We connect to a server which exists, but search for a key that does not exist.
  */
  static test_return_t memcached_get_by_key_MEMCACHED_NOTFOUND(memcached_st *memc)
@@@ -5643,16 -5661,16 +5679,16 @@@ static test_return_t regression_bug_447
  
  static test_return_t regression_bug_463297(memcached_st *memc)
  {
-   memcached_st *memc_clone= memcached_clone(NULL, memc); 
-   test_true(memc_clone != NULL); 
-   test_true(memcached_version(memc_clone) == MEMCACHED_SUCCESS); 
+   memcached_st *memc_clone= memcached_clone(NULL, memc);
+   test_true(memc_clone != NULL);
+   test_true(memcached_version(memc_clone) == MEMCACHED_SUCCESS);
  
-   memcached_server_instance_st instance= 
-     memcached_server_instance_by_position(memc_clone, 0); 
+   memcached_server_instance_st instance=
+     memcached_server_instance_by_position(memc_clone, 0);
  
-   if (instance->major_version > 1 || 
-       (instance->major_version == 1 && 
-        instance->minor_version > 2)) 
+   if (instance->major_version > 1 ||
+       (instance->major_version == 1 &&
+        instance->minor_version > 2))
    {
      /* Binary protocol doesn't support deferred delete */
      memcached_st *bin_clone= memcached_clone(NULL, memc);
      memcached_return_t rc= memcached_delete(memc, "foo", 3, 1);
  
      /* but there is a bug in some of the memcached servers (1.4) that treats
-      * the counter as noreply so it doesn't send the proper error message 
+      * the counter as noreply so it doesn't send the proper error message
       */
      test_true_got(rc == MEMCACHED_PROTOCOL_ERROR || rc == MEMCACHED_NOTFOUND || rc == MEMCACHED_CLIENT_ERROR || rc == MEMCACHED_INVALID_ARGUMENTS, memcached_strerror(NULL, rc));
  
@@@ -5902,53 -5920,6 +5938,53 @@@ static test_return_t wrong_failure_coun
    return TEST_SUCCESS;
  }
  
 +/*
 + * This tests ensures expected disconnections (for some behavior changes
 + * for instance) do not wrongly increase failure counter
 + */
 +static test_return_t wrong_failure_counter_two_test(memcached_st *memc)
 +{
 +  memcached_return rc;
 +
 +  memcached_st *memc_clone;
 +  memc_clone= memcached_clone(NULL, memc);
 +  test_true(memc_clone);
 +
 +  /* Set value to force connection to the server */
 +  const char *key= "marmotte";
 +  const char *value= "milka";
 +  char *string = NULL;
 +  size_t string_length;
 +  uint32_t flags;
 +
 +  rc= memcached_set(memc_clone, key, strlen(key),
 +                    value, strlen(value),
 +                    (time_t)0, (uint32_t)0);
 +  test_true_got(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED, memcached_strerror(NULL, rc));
 +
 +
 +  /* put failure limit to 1 */
 +  rc= memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT, 1);
 +  assert(rc == MEMCACHED_SUCCESS);
 +  /* Put a retry timeout to effectively activate failure_limit effect */
 +  rc= memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_RETRY_TIMEOUT, 1);
 +  assert(rc == MEMCACHED_SUCCESS);
 +  /* change behavior that triggers memcached_quit()*/
 +  rc= memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_TCP_NODELAY, 1);
 +  assert(rc == MEMCACHED_SUCCESS);
 +
 +
 +  /* Check if we still are connected */
 +  string= memcached_get(memc_clone, key, strlen(key),
 +                        &string_length, &flags, &rc);
 +
 +  test_true_got(rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc));
 +  test_true(string);
 +  free(string);
 +
 +  return TEST_SUCCESS;
 +}
 +
  
  
  
@@@ -6114,7 -6085,7 +6150,7 @@@ static test_return_t regression_bug_(me
      return TEST_SKIPPED;
    }
  
-   for (uint32_t x= 0; x < TEST_CONSTANT_CREATION; x++) 
+   for (uint32_t x= 0; x < TEST_CONSTANT_CREATION; x++)
    {
      memcached_st* mc= memcached_create(NULL);
      memcached_return rc;
  
      if (rc == MEMCACHED_SUCCESS)
      {
-       if (x > 0) 
+       if (x > 0)
        {
          size_t get_value_len;
          char *get_value;
@@@ -6373,7 -6344,6 +6409,7 @@@ test_st user_tests[] =
    {"user_supplied_bug20", 1, (test_callback_fn)user_supplied_bug20 },
    {"user_supplied_bug21", 1, (test_callback_fn)user_supplied_bug21 },
    {"wrong_failure_counter_test", 1, (test_callback_fn)wrong_failure_counter_test},
 +  {"wrong_failure_counter_two_test", 1, (test_callback_fn)wrong_failure_counter_two_test},
    {0, 0, (test_callback_fn)0}
  };
  
@@@ -6457,11 -6427,6 +6493,11 @@@ test_st hsieh_availability[] =
    {0, 0, (test_callback_fn)0}
  };
  
 +test_st murmur_availability[] ={
 +  {"murmur_avaibility_test", 0, (test_callback_fn)murmur_avaibility_test},
 +  {0, 0, (test_callback_fn)0}
 +};
 +
  #if 0
  test_st hash_sanity[] ={
    {"hash sanity", 0, (test_callback_fn)hash_sanity_test},
@@@ -6503,7 -6468,6 +6539,7 @@@ collection_st collection[] =
    {"hash_sanity", 0, 0, hash_sanity},
  #endif
    {"hsieh_availability", 0, 0, hsieh_availability},
 +  {"murmur_availability", 0, 0, murmur_availability},
    {"block", 0, 0, tests},
    {"binary", (test_callback_fn)pre_binary, 0, tests},
    {"nonblock", (test_callback_fn)pre_nonblock, 0, tests},