Added tests for consistent hash.
authorBrian Aker <brian@tangent.org>
Thu, 29 Nov 2007 21:34:03 +0000 (13:34 -0800)
committerBrian Aker <brian@tangent.org>
Thu, 29 Nov 2007 21:34:03 +0000 (13:34 -0800)
Fixed memory issue in _stats.
Added interface to externally enable consistent hash.

include/memcached.h
lib/memcached_behavior.c
lib/memcached_stats.c
tests/function.c
tests/output.res

index 971b4ab43ee0d2b840eb475aba175969b5fae01f..8b883534e50d29ad919f33078ae47539c21371e8 100644 (file)
@@ -84,6 +84,7 @@ typedef enum {
   MEMCACHED_BEHAVIOR_CACHE_LOOKUPS,
   MEMCACHED_BEHAVIOR_SUPPORT_CAS,
   MEMCACHED_BEHAVIOR_POLL_TIMEOUT,
+  MEMCACHED_BEHAVIOR_DISTRIBUTION,
 } memcached_behavior;
 
 typedef enum {
index 910fb392e9e27e729d03c9359f0bf28bacfe2125..853a33b322bcd891bd36cef64b11b94353df875a 100644 (file)
@@ -35,6 +35,9 @@ memcached_return memcached_behavior_set(memcached_st *ptr,
   case MEMCACHED_BEHAVIOR_TCP_NODELAY:
     set_behavior_flag(ptr, MEM_TCP_NODELAY, data);
     break;
+  case MEMCACHED_BEHAVIOR_DISTRIBUTION:
+    ptr->distribution= *(memcached_server_distribution *)(data);
+    break;
   case MEMCACHED_BEHAVIOR_HASH:
     ptr->hash= *(memcached_hash *)(data);
     break;
@@ -89,6 +92,8 @@ unsigned long long memcached_behavior_get(memcached_st *ptr,
   case MEMCACHED_BEHAVIOR_TCP_NODELAY:
     temp_flag= MEM_TCP_NODELAY;
     break;
+  case MEMCACHED_BEHAVIOR_DISTRIBUTION:
+    return ptr->distribution;
   case MEMCACHED_BEHAVIOR_HASH:
     return ptr->hash;
   case MEMCACHED_BEHAVIOR_KETAMA:
index 04ef31ba2678f69767b2f99a07758c25dbdec499..decf22b614c8a864634c3abdaabba95d1ba1e31e 100644 (file)
@@ -265,7 +265,7 @@ memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_retur
     free(stats);
     return NULL;
   }
-  memset(stats, 0, sizeof(memcached_st)*(ptr->number_of_hosts));
+  memset(stats, 0, sizeof(memcached_stat_st)*(ptr->number_of_hosts));
 
   rc= MEMCACHED_SUCCESS;
   for (x= 0; x < ptr->number_of_hosts; x++)
index c3d764c4981653c1c529367a4ebcde7da1032b3c..3a0bd648b5c72a7f4157de61738c5ab94fab27a1 100644 (file)
@@ -1655,6 +1655,14 @@ memcached_return pre_hash_ketama(memcached_st *memc)
   return MEMCACHED_SUCCESS;
 }
 
+memcached_return enable_consistent(memcached_st *memc)
+{
+  memcached_server_distribution value= MEMCACHED_DISTRIBUTION_CONSISTENT;
+  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, &value);
+
+  return MEMCACHED_SUCCESS;
+}
+
 memcached_return enable_cas(memcached_st *memc)
 {
   unsigned int set= 1;
@@ -1836,6 +1844,7 @@ collection_st collection[] ={
   {"unix_socket_nodelay", pre_nodelay, 0, tests},
   {"poll_timeout", poll_timeout, 0, tests},
   {"gets", enable_cas, 0, tests},
+  {"consistent", enable_consistent, 0, tests},
 //  {"udp", pre_udp, 0, tests},
   {"version_1_2_3", check_for_1_2_3, 0, version_1_2_3},
   {"string", 0, 0, string_tests},
index b13a83f059a957ae33f604652a04f3f92c38b44e..8d71e6704bf3e4b1e0f9d753d4e4fae73739bd0b 100644 (file)
@@ -1027,3 +1027,76 @@ Found key bytes_read
 Found key bytes_written
 Found key limit_maxbytes
 Found key threads
+Error 0 -> SUCCESS
+Error 1 -> FAILURE
+Error 2 -> HOSTNAME LOOKUP FAILURE
+Error 3 -> CONNECTION FAILURE
+Error 4 -> CONNECTION BIND FAILURE
+Error 5 -> WRITE FAILURE
+Error 6 -> READ FAILURE
+Error 7 -> UNKNOWN READ FAILURE
+Error 8 -> PROTOCOL ERROR
+Error 9 -> CLIENT ERROR
+Error 10 -> SERVER ERROR
+Error 11 -> CONNECTION SOCKET CREATE FAILURE
+Error 12 -> CONNECTION DATA EXISTS
+Error 13 -> CONNECTION DATA DOES NOT EXIST
+Error 14 -> NOT STORED
+Error 15 -> STORED
+Error 16 -> NOT FOUND
+Error 17 -> MEMORY ALLOCATION FAILURE
+Error 18 -> PARTIAL READ
+Error 19 -> SOME ERRORS WERE REPORTED
+Error 20 -> NO SERVERS DEFINED
+Error 21 -> SERVER END
+Error 22 -> SERVER DELETE
+Error 23 -> SERVER VALUE
+Error 24 -> STAT VALUE
+Error 25 -> SYSTEM ERROR
+Error 26 -> COULD NOT OPEN UNIX SOCKET
+Error 27 -> ACTION NOT SUPPORTED
+Error 28 -> A KEY LENGTH OF ZERO WAS PROVIDED
+Found key pid
+Found key uptime
+Found key time
+Found key version
+Found key pointer_size
+Found key rusage_user
+Found key rusage_system
+Found key curr_items
+Found key total_items
+Found key bytes
+Found key curr_connections
+Found key total_connections
+Found key connection_structures
+Found key cmd_get
+Found key cmd_set
+Found key get_hits
+Found key get_misses
+Found key evictions
+Found key bytes_read
+Found key bytes_written
+Found key limit_maxbytes
+Found key threads
+Found key pid
+Found key uptime
+Found key time
+Found key version
+Found key pointer_size
+Found key rusage_user
+Found key rusage_system
+Found key curr_items
+Found key total_items
+Found key bytes
+Found key curr_connections
+Found key total_connections
+Found key connection_structures
+Found key cmd_get
+Found key cmd_set
+Found key get_hits
+Found key get_misses
+Found key evictions
+Found key bytes_read
+Found key bytes_written
+Found key limit_maxbytes
+Found key threads