+static test_return_t test_multiple_get_last_disconnect(memcached_st *)
+{
+ const char *server_string= "--server=localhost:8888 --server=localhost:8889 --server=localhost:8890 --server=localhost:8891 --server=localhost:8892";
+ char buffer[BUFSIZ];
+
+ memcached_return_t rc;
+ test_compare_got(MEMCACHED_SUCCESS,
+ rc= libmemcached_check_configuration(server_string, strlen(server_string), buffer, sizeof(buffer)),
+ memcached_strerror(NULL, rc));
+
+ memcached_st *memc= memcached(server_string, strlen(server_string));
+ test_true(memc);
+
+ // We will just use the error strings as our keys
+ uint32_t counter= 100;
+ while (--counter)
+ {
+ for (int x= int(MEMCACHED_SUCCESS); x < int(MEMCACHED_MAXIMUM_RETURN); ++x)
+ {
+ const char *msg= memcached_strerror(memc, memcached_return_t(x));
+ memcached_return_t ret= memcached_set(memc, msg, strlen(msg), NULL, 0, (time_t)0, (uint32_t)0);
+ test_compare_got(MEMCACHED_WRITE_FAILURE, ret, memcached_strerror(NULL, ret));
+
+ memcached_server_instance_st disconnected_server= memcached_server_get_last_disconnect(memc);
+ test_true(disconnected_server);
+ test_strcmp("localhost", memcached_server_name(disconnected_server));
+ test_true(memcached_server_port(disconnected_server) >= 8888 and memcached_server_port(disconnected_server) <= 8892);
+
+ if (random() % 2)
+ {
+ memcached_reset_last_disconnected_server(memc);
+ }
+ }
+ }
+
+ memcached_free(memc);
+
+ return TEST_SUCCESS;
+}
+