Updating test case such that we output version information and correctly set
authorBrian Aker <brian@tangent.org>
Thu, 10 Feb 2011 22:05:26 +0000 (14:05 -0800)
committerBrian Aker <brian@tangent.org>
Thu, 10 Feb 2011 22:05:26 +0000 (14:05 -0800)
it to zero in cases where we fail at retrieving it.

libmemcached/util/version.c
libmemcached/version.c
tests/mem_functions.c

index 7c936c715a6233f497843bf85106a6214ea8bcd5..bf9d0c6c201d8ac5f0f3ae63f7b5d55c4924322a 100644 (file)
@@ -47,10 +47,12 @@ bool libmemcached_util_version_check(memcached_st *memc,
                                      uint8_t micro_version)
 {
   memcached_server_fn callbacks[1];
-  memcached_version(memc);
+  memcached_return_t rc= memcached_version(memc);
+
+  if (rc != MEMCACHED_SUCCESS)
+    return false;
 
   struct local_context check= { .major_version= major_version, .minor_version= minor_version, .micro_version= micro_version, .truth= true };
-  memcached_version(memc);
 
   callbacks[0]= check_server_version;
   memcached_server_cursor(memc, callbacks, (void *)&check,  1);
index 54545cb9d46ff59112b4b30a028a4fb5877d0766..dde59066083c970d3c21105babd0d84c959873de 100644 (file)
@@ -48,6 +48,7 @@ static inline memcached_return_t memcached_version_textual(memcached_st *ptr)
     rrc= memcached_do(instance, command, send_length, true);
     if (rrc != MEMCACHED_SUCCESS)
     {
+      instance->major_version= instance->minor_version= instance->micro_version= 0;
       rc= MEMCACHED_SOME_ERRORS;
       continue;
     }
@@ -55,6 +56,7 @@ static inline memcached_return_t memcached_version_textual(memcached_st *ptr)
     rrc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
     if (rrc != MEMCACHED_SUCCESS)
     {
+      instance->major_version= instance->minor_version= instance->micro_version= 0;
       rc= MEMCACHED_SOME_ERRORS;
       continue;
     }
@@ -64,12 +66,33 @@ static inline memcached_return_t memcached_version_textual(memcached_st *ptr)
     response_ptr++;
 
     instance->major_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
+    if (errno == ERANGE)
+    {
+      instance->major_version= instance->minor_version= instance->micro_version= 0;
+      rc= MEMCACHED_SOME_ERRORS;
+      continue;
+    }
+
     response_ptr= index(response_ptr, '.');
     response_ptr++;
+
     instance->minor_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
+    if (errno == ERANGE)
+    {
+      instance->major_version= instance->minor_version= instance->micro_version= 0;
+      rc= MEMCACHED_SOME_ERRORS;
+      continue;
+    }
+
     response_ptr= index(response_ptr, '.');
     response_ptr++;
     instance->micro_version= (uint8_t)strtol(response_ptr, (char **)NULL, 10);
+    if (errno == ERANGE)
+    {
+      instance->major_version= instance->minor_version= instance->micro_version= 0;
+      rc= MEMCACHED_SOME_ERRORS;
+      continue;
+    }
   }
 
   return rc;
index 38a3b0fa093fe891399d7a272dc2b3cd9ee903c2..27cac75eeed9b1273447b62aa9d41267ba143887 100644 (file)
@@ -4439,6 +4439,8 @@ static test_return_t util_version_test(memcached_st *memc)
 
 //  if (! if_successful)
   {
+    fprintf(stderr, "\n----------------------------------------------------------------------\n");
+    fprintf(stderr, "\nDumping Server Information\n");
     memcached_server_fn callbacks[1];
     memcached_version(memc);
 
@@ -4446,6 +4448,7 @@ static test_return_t util_version_test(memcached_st *memc)
 
     callbacks[0]= dump_server_information;
     memcached_server_cursor(memc, callbacks, (void *)stderr,  1);
+    fprintf(stderr, "\n----------------------------------------------------------------------\n");
   }
   test_true(if_successful == false);