Remove custom parser/use API for parsing in memslap
authorBrian Aker <brian@gaz>
Thu, 14 Jan 2010 05:58:37 +0000 (21:58 -0800)
committerBrian Aker <brian@gaz>
Thu, 14 Jan 2010 05:58:37 +0000 (21:58 -0800)
clients/ms_setting.c
tests/libmemcached_world.h
tests/mem_functions.c

index d269e33022250c4007713d6ce76516e945b58614..95af535c74c89e0212670c43c1b88acc1da8b745 100644 (file)
@@ -11,6 +11,8 @@
 
 #include "config.h"
 
+#include <libmemcached/memcached.h>
+
 #include <ctype.h>
 #include <inttypes.h>
 #include <limits.h>
@@ -155,60 +157,28 @@ static ssize_t getline (char **line, size_t *line_size, FILE *fp)
  */
 static void ms_get_serverlist(char *str)
 {
-  char *string;
-  int64_t port;
-  char *begin_ptr;
-  char *end_ptr= str + strlen(str);
   ms_mcd_server_t *srvs= NULL;
-  char buffer[512];
-  char *ptr= NULL;
 
   /**
    * Servers list format is like this. For example:
    * "localhost:11108, localhost:11109"
    */
-  for (begin_ptr= str, string= index(str, ',');
-       begin_ptr != end_ptr;
-       string= index(begin_ptr, ','))
-  {
-    port= 0;
-
-    if (string)
-    {
-      memcpy(buffer, begin_ptr, (size_t)(string - begin_ptr));
-      buffer[(unsigned int)(string - begin_ptr)]= '\0';
-      begin_ptr= string + 1;
-    }
-    else
-    {
-      size_t length= strlen(begin_ptr);
-      memcpy(buffer, begin_ptr, length);
-      buffer[length]= '\0';
-      begin_ptr= end_ptr;
-    }
-
-    ptr= index(buffer, ':');
-
-    if (ptr != NULL)
-    {
-      ptr[0]= '\0';
-      ptr++;
-      port= strtol(ptr, (char **)NULL, 10);
-    }
+  memcached_server_st *server_pool;
+  server_pool = memcached_servers_parse(str);
 
+  for (uint32_t loop= 0; loop < memcached_server_list_count(server_pool); loop++)
+  {
     assert(ms_setting.srv_cnt < ms_setting.total_srv_cnt);
-    strcpy(ms_setting.servers[ms_setting.srv_cnt].srv_host_name, buffer);
-    ms_setting.servers[ms_setting.srv_cnt].srv_port= (int)port;
+    strcpy(ms_setting.servers[ms_setting.srv_cnt].srv_host_name, server_pool[loop].hostname);
+    ms_setting.servers[ms_setting.srv_cnt].srv_port= server_pool[loop].port;
     ms_setting.servers[ms_setting.srv_cnt].disconn_cnt= 0;
     ms_setting.servers[ms_setting.srv_cnt].reconn_cnt= 0;
     ms_setting.srv_cnt++;
 
     if (ms_setting.srv_cnt >= ms_setting.total_srv_cnt)
     {
-      srvs= (ms_mcd_server_t *)realloc(
-        ms_setting.servers,
-        (size_t)ms_setting.total_srv_cnt
-        * sizeof(ms_mcd_server_t) * 2);
+      srvs= (ms_mcd_server_t *)realloc( ms_setting.servers,
+                                        (size_t)ms_setting.total_srv_cnt * sizeof(ms_mcd_server_t) * 2);
       if (srvs == NULL)
       {
         fprintf(stderr, "Can't reallocate servers structure.\n");
@@ -217,10 +187,9 @@ static void ms_get_serverlist(char *str)
       ms_setting.servers= srvs;
       ms_setting.total_srv_cnt*= 2;
     }
-
-    if (isspace(*begin_ptr))
-      begin_ptr++;
   }
+
+  memcached_server_free(server_pool);
 } /* ms_get_serverlist */
 
 
index 6916a32c2396aa4e42d44b6be1b0fe00d1738d8e..d51d3ad7bc0e6439c6e775e6994cb9f07b0b1e29 100644 (file)
@@ -96,9 +96,7 @@ test_return_t world_flush(libmemcached_test_container_st *container)
 
 test_return_t world_pre_run(libmemcached_test_container_st *container)
 {
-  uint32_t loop;
-
-  for (loop= 0; loop < memcached_server_list_count(container->construct.servers); loop++)
+  for (uint32_t loop= 0; loop < memcached_server_list_count(container->construct.servers); loop++)
   {
     memcached_server_st *instance=
       memcached_server_instance_fetch(container->memc, loop);
index 804227fc726fc077a8f67e19ed6b1cbb91ba42a6..6e8a1ce01f3e9982592cd907b04d43adedd7c683 100644 (file)
@@ -2892,7 +2892,7 @@ static test_return_t auto_eject_hosts(memcached_st *trash)
   instance->next_retry = time(NULL) + 15;
   memc->next_distribution_rebuild= time(NULL) - 1;
 
-  for (int x= 0; x < 99; x++)
+  for (size_t x= 0; x < 99; x++)
   {
     uint32_t server_idx = memcached_generate_hash(memc, ketama_test_cases[x].key, strlen(ketama_test_cases[x].key));
     test_truth(server_idx != 2);
@@ -2903,7 +2903,7 @@ static test_return_t auto_eject_hosts(memcached_st *trash)
   memc->next_distribution_rebuild= time(NULL) - 1;
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION,
                          memc->distribution);
-  for (int x= 0; x < 99; x++)
+  for (size_t x= 0; x < 99; x++)
   {
     uint32_t server_idx = memcached_generate_hash(memc, ketama_test_cases[x].key, strlen(ketama_test_cases[x].key));
     // We re-use instance from above.