#include <libhashkit-1.0/hashkit.h>
+#include <libtest/memcached.hpp>
+
#include <cerrno>
#include <memory>
#include <pthread.h>
#include "tests/keys.hpp"
+#include "libmemcached/instance.h"
+
static memcached_st * create_single_instance_memcached(const memcached_st *original_memc, const char *options)
{
/*
in_port_t test_ports[TEST_PORT_COUNT];
static memcached_return_t server_display_function(const memcached_st *ptr,
- const memcached_server_st *server,
+ memcached_server_instance_st server,
void *context)
{
/* Do Nothing */
}
static memcached_return_t dump_server_information(const memcached_st *ptr,
- const memcached_server_st *instance,
+ memcached_server_instance_st instance,
void *context)
{
/* Do Nothing */
}
static memcached_return_t server_display_unsort_function(const memcached_st*,
- const memcached_server_st *server,
+ memcached_server_instance_st server,
void *context)
{
/* Do Nothing */
{ } // It is possible that the value has been purged.
else
{
- test_compare_hint(MEMCACHED_SUCCESS, rc, memcached_last_error_message(memc));
+ test_compare(MEMCACHED_SUCCESS, rc);
}
test_null(out_value);
test_zero(value_length);
}
static memcached_return_t server_function(const memcached_st *,
- const memcached_server_st *,
+ memcached_server_instance_st,
void *)
{
/* Do Nothing */
keys.key_at(x), keys.length_at(x),
blob, sizeof(blob),
0, 0);
- test_true_got(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED,
- memcached_last_error_message(memc));
+ test_true(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED);
test_compare(query_id +1, memcached_query_id(memc));
}
global_pairs[x].key, global_pairs[x].key_length,
&blob[0], blob.size(),
time_t(0), uint32_t(0));
- test_true_got(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_SERVER_MEMORY_ALLOCATION_FAILURE, memcached_strerror(NULL, rc));
+ test_compare(*memc, MEMCACHED_SUCCESS);
+ test_compare(rc, MEMCACHED_SUCCESS);
}
return TEST_SUCCESS;
test_return_t binary_add_regression(memcached_st *memc)
{
test_skip(MEMCACHED_SUCCESS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, true));
- test_return_t rc= block_add_regression(memc);
-
- return rc;
+ return block_add_regression(memc);
}
test_return_t get_stats_keys(memcached_st *memc)
memcached_st *memc= memcached(test_literal_param("--server=localhost:11311/?100 --server=localhost:11312/?100"));
- const memcached_server_st *server= memcached_server_by_key(memc, "a", 1, &res);
+ memcached_server_instance_st server= memcached_server_by_key(memc, "a", 1, &res);
test_true(server);
memcached_free(memc);
test_return_t enable_consistent_crc(memcached_st *memc)
{
+ test_compare(MEMCACHED_SUCCESS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, MEMCACHED_DISTRIBUTION_CONSISTENT));
+ test_compare(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION), uint64_t(MEMCACHED_DISTRIBUTION_CONSISTENT));
+
test_return_t rc;
- memcached_server_distribution_t value= MEMCACHED_DISTRIBUTION_CONSISTENT;
- memcached_hash_t hash;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, value);
if ((rc= pre_crc(memc)) != TEST_SUCCESS)
+ {
return rc;
+ }
- value= (memcached_server_distribution_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION);
- test_true(value == MEMCACHED_DISTRIBUTION_CONSISTENT);
-
- hash= (memcached_hash_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH);
+ test_compare(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION), uint64_t(MEMCACHED_DISTRIBUTION_CONSISTENT));
- if (hash != MEMCACHED_HASH_CRC)
+ if (memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH) != MEMCACHED_HASH_CRC)
+ {
return TEST_SKIPPED;
+ }
return TEST_SUCCESS;
}
test_return_t enable_consistent_hsieh(memcached_st *memc)
{
test_return_t rc;
- memcached_server_distribution_t value= MEMCACHED_DISTRIBUTION_CONSISTENT;
- memcached_hash_t hash;
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, value);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, MEMCACHED_DISTRIBUTION_CONSISTENT);
if ((rc= pre_hsieh(memc)) != TEST_SUCCESS)
{
return rc;
}
- value= (memcached_server_distribution_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION);
- test_true(value == MEMCACHED_DISTRIBUTION_CONSISTENT);
+ test_compare(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION), uint64_t(MEMCACHED_DISTRIBUTION_CONSISTENT));
- hash= (memcached_hash_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH);
-
- if (hash != MEMCACHED_HASH_HSIEH)
+ if (memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_HASH) != MEMCACHED_HASH_HSIEH)
+ {
return TEST_SKIPPED;
-
+ }
return TEST_SUCCESS;
}
{
continue;
}
- test_true_hint(ret == MEMCACHED_SUCCESS and value != NULL, memcached_last_error_message(memc));
+ test_true(ret == MEMCACHED_SUCCESS and value != NULL);
switch (count)
{
case 0: /* FALLTHROUGH */
}
static memcached_return_t ping_each_server(const memcached_st*,
- const memcached_server_st *instance,
+ memcached_server_instance_st instance,
void*)
{
// Test both the version that returns a code, and the one that does not.
{
test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, "10.2.3.4", base_port +x));
}
- test_compare(16U, memcached_generate_hash(memc, test_literal_param("SZ6hu0SHweFmpwpc0w2R")));
+ test_compare(6U, memcached_generate_hash(memc, test_literal_param("SZ6hu0SHweFmpwpc0w2R")));
test_compare(1U, memcached_generate_hash(memc, test_literal_param("SQCK9eiCf53YxHWnYA.o")));
- test_compare(10U, memcached_generate_hash(memc, test_literal_param("SUSDkGXuuZC9t9VhMwa.")));
- test_compare(8U, memcached_generate_hash(memc, test_literal_param("SnnqnJARfaCNT679iAF_")));
+ test_compare(9U, memcached_generate_hash(memc, test_literal_param("SUSDkGXuuZC9t9VhMwa.")));
+ test_compare(0U, memcached_generate_hash(memc, test_literal_param("SnnqnJARfaCNT679iAF_")));
memcached_free(memc);
return TEST_SUCCESS;
}
+test_return_t regression_1009493_TEST(memcached_st*)
+{
+ memcached_st* memc= memcached_create(NULL);
+ test_true(memc);
+ test_compare(MEMCACHED_SUCCESS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA, true));
+
+ memcached_st* clone= memcached_clone(NULL, memc);
+ test_true(clone);
+
+ test_compare(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED),
+ memcached_behavior_get(clone, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED));
+
+ memcached_free(memc);
+ memcached_free(clone);
+
+ return TEST_SUCCESS;
+}
test_return_t regression_994772_TEST(memcached_st* memc)
{