return TEST_SUCCESS;
}
-static test_return_t memcached_server_remove_test(memcached_st *ptr)
+static test_return_t memcached_server_remove_test(memcached_st*)
{
const char *server_string= "--server=localhost:4444 --server=localhost:4445 --server=localhost:4446 --server=localhost:4447 --server=localhost --server=memcache1.memcache.bk.sapo.pt:11211 --server=memcache1.memcache.bk.sapo.pt:11212 --server=memcache1.memcache.bk.sapo.pt:11213 --server=memcache1.memcache.bk.sapo.pt:11214 --server=memcache2.memcache.bk.sapo.pt:11211 --server=memcache2.memcache.bk.sapo.pt:11212 --server=memcache2.memcache.bk.sapo.pt:11213 --server=memcache2.memcache.bk.sapo.pt:11214";
- (void)ptr;
+ 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);
return TEST_SUCCESS;
}
-static memcached_return_t server_display_unsort_function(const memcached_st *ptr,
+static memcached_return_t server_display_unsort_function(const memcached_st*,
const memcached_server_st *server,
void *context)
{
/* Do Nothing */
uint32_t x= *((uint32_t *)(context));
- (void)ptr;
if (! (test_ports[x] == server->port))
{
return TEST_SUCCESS;
}
+static test_return_t libmemcached_string_behavior_test(memcached_st *)
+{
+ for (int x= MEMCACHED_BEHAVIOR_NO_BLOCK; x < int(MEMCACHED_BEHAVIOR_MAX); ++x)
+ {
+ test_true(libmemcached_string_behavior(memcached_behavior_t(x)));
+ }
+ test_compare(36, MEMCACHED_BEHAVIOR_MAX);
+
+ return TEST_SUCCESS;
+}
+
+static test_return_t libmemcached_string_distribution_test(memcached_st *)
+{
+ for (int x= MEMCACHED_DISTRIBUTION_MODULA; x < int(MEMCACHED_DISTRIBUTION_CONSISTENT_MAX); ++x)
+ {
+ test_true(libmemcached_string_distribution(memcached_server_distribution_t(x)));
+ }
+ test_compare(7, MEMCACHED_DISTRIBUTION_CONSISTENT_MAX);
+
+ return TEST_SUCCESS;
+}
+
static test_return_t error_test(memcached_st *memc)
{
uint32_t values[] = { 851992627U, 2337886783U, 646418395U, 4001849190U,
*keys_returned= *keys_returned +1;
}
- test_true_got(rc == MEMCACHED_END || rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc));
+ test_true_got(rc == MEMCACHED_END || memcached_success(rc), memcached_strerror(NULL, rc));
return TEST_SUCCESS;
}
memcached_return_t rc= memcached_mget(memc, global_keys, global_keys_length, global_count);
- test_true_got(rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc));
+ test_true_got(memcached_success(rc), memcached_strerror(NULL, rc));
// Go fetch the keys and test to see if all of them were returned
{
memcached_return_t rc= memcached_mget(memc, global_keys, global_keys_length, global_count);
- test_true_got(rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc));
+ test_true_got(memcached_success(rc), memcached_strerror(NULL, rc));
/* Turn this into a help function */
{
memcached_return_t rc= memcached_mget(memc, global_keys, global_keys_length, global_count);
- test_true_got(rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc));
+ test_true_got(memcached_success(rc), memcached_strerror(NULL, rc));
memcached_execute_fn callbacks[]= { &callback_counter };
size_t counter= 0;
const char *value= "milka";
memcached_reset_last_disconnected_server(memc);
+ test_false(memc->last_disconnected_server);
rc= memcached_set(memc, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
disconnected_server = memcached_server_get_last_disconnect(memc);
- test_true(disconnected_server == NULL);
+ test_false(disconnected_server);
/* With a non existing server */
memcached_st *mine;
rc= memcached_set(mine, key, strlen(key),
value, strlen(value),
(time_t)0, (uint32_t)0);
- test_true(rc != MEMCACHED_SUCCESS);
+ test_true(memcached_failed(rc));
disconnected_server= memcached_server_get_last_disconnect(mine);
- if (disconnected_server == NULL)
- {
- fprintf(stderr, "RC %s\n", memcached_strerror(mine, rc));
- abort();
- }
- test_true(disconnected_server != NULL);
- test_true(memcached_server_port(disconnected_server)== 9);
+ test_true_got(disconnected_server, memcached_strerror(mine, rc));
+ test_compare(9, memcached_server_port(disconnected_server));
test_true(strncmp(memcached_server_name(disconnected_server),"localhost",9) == 0);
memcached_quit(mine);
return TEST_SUCCESS;
}
+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;
+}
+
static test_return_t test_verbosity(memcached_st *memc)
{
memcached_verbosity(memc, 3);
};
test_st behavior_tests[] ={
+ {"libmemcached_string_behavior()", 0, (test_callback_fn)libmemcached_string_behavior_test},
+ {"libmemcached_string_distribution()", 0, (test_callback_fn)libmemcached_string_distribution_test},
{"behavior_test", 0, (test_callback_fn)behavior_test},
{"MEMCACHED_BEHAVIOR_CORK", 0, (test_callback_fn)MEMCACHED_BEHAVIOR_CORK_test},
{"MEMCACHED_BEHAVIOR_TCP_KEEPALIVE", 0, (test_callback_fn)MEMCACHED_BEHAVIOR_TCP_KEEPALIVE_test},
{0, 0, (test_callback_fn)0}
};
+test_st memcached_server_get_last_disconnect_tests[] ={
+ {"memcached_server_get_last_disconnect()", 0, (test_callback_fn)test_multiple_get_last_disconnect},
+ {0, 0, (test_callback_fn)0}
+};
+
+
test_st result_tests[] ={
{"result static", 0, (test_callback_fn)result_static},
{"result alloc", 0, (test_callback_fn)result_alloc},
{"mget", 0, (test_callback_fn)replication_mget_test },
{"delete", 0, (test_callback_fn)replication_delete_test },
{"rand_mget", 0, (test_callback_fn)replication_randomize_mget_test },
+ {"fail", 0, (test_callback_fn)replication_randomize_mget_fail_test },
{0, 0, (test_callback_fn)0}
};
{"server", 0, (test_callback_fn)server_test },
{"bad server strings", 0, (test_callback_fn)servers_bad_test },
{"server with weights", 0, (test_callback_fn)server_with_weight_test },
+ {"parsing servername, port, and weight", 0, (test_callback_fn)test_hostname_port_weight },
{0, 0, (test_callback_fn)0}
};
{"error_conditions", 0, 0, error_conditions},
{"parser", 0, 0, parser_tests},
{"virtual buckets", 0, 0, virtual_bucket_tests},
+ {"memcached_server_get_last_disconnect", 0, 0, memcached_server_get_last_disconnect_tests},
{0, 0, 0, 0}
};