+ printf("Network Latency Test:\n\n");
+ struct timeval start_time, end_time;
+ long elapsed_time, slowest_time= 0, slowest_server= 0;
+
+ for (x= 0; x < server_count; x++)
+ {
+ gettimeofday(&start_time, NULL);
+ for (y= 0; y < num_of_tests; y++)
+ {
+ size_t vlen;
+ char *val= memcached_get(servers[x], test_key, strlen(test_key),
+ &vlen, &flags, &rc);
+ if (rc != MEMCACHED_NOTFOUND && rc != MEMCACHED_SUCCESS)
+ break;
+ free(val);
+ }
+ gettimeofday(&end_time, NULL);
+
+ elapsed_time= timedif(end_time, start_time);
+ elapsed_time /= (long)num_of_tests;
+
+ if (elapsed_time > slowest_time)
+ {
+ slowest_server= (long)x;
+ slowest_time= elapsed_time;
+ }
+
+ if (rc != MEMCACHED_NOTFOUND && rc != MEMCACHED_SUCCESS)
+ {
+ printf("\t %s (%d) => failed to reach the server\n",
+ memcached_server_name(memc, server_list[x]),
+ memcached_server_port(memc, server_list[x]));
+ }
+ else
+ {
+ printf("\t %s (%d) => %ld.%ld seconds\n",
+ memcached_server_name(memc, server_list[x]),
+ memcached_server_port(memc, server_list[x]),
+ elapsed_time / 1000, elapsed_time % 1000);
+ }
+ }
+
+ if (server_count > 1 && slowest_time > 0)
+ {
+ printf("---\n");
+ printf("Slowest Server: %s (%d) => %ld.%ld seconds\n",
+ memcached_server_name(memc, server_list[slowest_server]),
+ memcached_server_port(memc, server_list[slowest_server]),
+ slowest_time / 1000, slowest_time % 1000);
+ }
+ printf("\n");
+
+ for (x= 0; x < server_count; x++)
+ memcached_free(servers[x]);
+
+ free(servers);
+ free(analyze_mode);
+ }
+ else
+ {
+ fprintf(stderr, "Invalid Analyzer Option provided\n");
+ free(analyze_mode);
+ }