{
libmemcached_free(self, self->ketama.continuum);
self->ketama.continuum= NULL;
+ self->ketama.continuum_count= 0;
+ self->ketama.continuum_points_counter= 0;
memcached_instance_list_free(memcached_instance_list(self), self->number_of_hosts);
memcached_instance_set(self, NULL, 0);
{"memcached_server_add(NULL)", false, (test_callback_fn*)memcached_server_add_null_test },
{"memcached_server_add(many)", false, (test_callback_fn*)memcached_server_many_TEST },
{"memcached_server_add(many weighted)", false, (test_callback_fn*)memcached_server_many_weighted_TEST },
+ {"memcached_servers_reset(\"\")", false, (test_callback_fn*)memcached_servers_reset_test},
{0, 0, (test_callback_fn*)0}
};
{"hsieh_availability", 0, 0, hsieh_availability},
{"murmur_availability", 0, 0, murmur_availability},
{"memcached_server_add", (test_callback_fn*)memcached_servers_reset_SETUP, 0, memcached_server_add_TESTS},
+ {"memcached_server_add(continuum)", (test_callback_fn*)memcached_servers_reset_CONTINUUM, 0, memcached_server_add_TESTS},
{"memcached_server_add(MEMCACHED_DISTRIBUTION_CONSISTENT)", (test_callback_fn*)memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP, 0, memcached_server_add_TESTS},
{"memcached_server_add(MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED)", (test_callback_fn*)memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED_SETUP, 0, memcached_server_add_TESTS},
{"block", 0, 0, tests},
return TEST_SUCCESS;
}
+
+test_return_t memcached_servers_reset_test(memcached_st* memc)
+{
+ ASSERT_EQ(0, memcached_server_count(memc));
+
+ test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, "localhost", 11511));
+
+ memcached_servers_reset(memc);
+
+ test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, "localhost", 11511));
+
+ return TEST_SUCCESS;
+}
+
return TEST_SUCCESS;
}
+test_return_t memcached_servers_reset_CONTINUUM(memcached_st *memc)
+{
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, MEMCACHED_DISTRIBUTION_CONSISTENT);
+ memcached_servers_reset(memc);
+ test_zero(memc->ketama.continuum_count);
+ // If memc->ketama.continuum_count is non-zero at this point, any call to
+ // memcached_server_add will cause a segfault.
+ return TEST_SUCCESS;
+}
+
test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP(memcached_st *memc)
{
test_compare(TEST_SUCCESS, memcached_servers_reset_SETUP(memc));
test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP(memcached_st *memc);
test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED_SETUP(memcached_st *memc);
test_return_t memcached_servers_reset_SETUP(memcached_st *memc);
+test_return_t memcached_servers_reset_CONTINUUM(memcached_st *memc);
test_return_t memcached_server_add_empty_test(memcached_st*);
test_return_t memcached_server_many_TEST(memcached_st*);
test_return_t memcached_server_many_weighted_TEST(memcached_st*);
+test_return_t memcached_servers_reset_test(memcached_st*);