#include <mem_config.h>
#include <libtest/test.hpp>
#include <libmemcached-1.0/memcached.h>
#include "tests/libmemcached-1.0/memcached_get.h"
#include "tests/libmemcached-1.0/setup_and_teardowns.h"
test_return_t get_test(memcached_st *memc)
{
uint64_t query_id= memcached_query_id(memc);
memcached_return_t rc= memcached_delete(memc,
test_literal_param(__func__),
time_t
(0));
test_true(rc == MEMCACHED_BUFFERED or rc == MEMCACHED_NOTFOUND);
test_compare(query_id +1, memcached_query_id(memc));
size_t
string_length;
uint32_t flags;
char
*string= memcached_get(memc,
test_literal_param(__func__),
&string_length, &flags, &rc);
test_compare(MEMCACHED_NOTFOUND, rc);
test_false(string_length);
test_false(string);
return
TEST_SUCCESS;
}
test_return_t get_test2(memcached_st *memc)
{
const
char
*value=
"when we sanitize"
;
uint64_t query_id= memcached_query_id(memc);
test_compare(return_value_based_on_buffering(memc),
memcached_set(memc,
test_literal_param(__func__),
value,
strlen
(value),
time_t
(0), uint32_t(0)));
test_compare(query_id +1, memcached_query_id(memc));
query_id= memcached_query_id(memc);
test_true(query_id);
uint32_t flags;
size_t
string_length;
memcached_return_t rc;
char
*string= memcached_get(memc,
test_literal_param(__func__),
&string_length, &flags, &rc);
test_compare(query_id +1, memcached_query_id(memc));
test_compare(MEMCACHED_SUCCESS, rc);
test_compare(MEMCACHED_SUCCESS, memcached_last_error(memc));
test_true(string);
test_compare(
strlen
(value), string_length);
test_memcmp(string, value, string_length);
free
(string);
return
TEST_SUCCESS;
}
test_return_t get_test3(memcached_st *memc)
{
size_t
value_length= 8191;
libtest::vchar_t value;
value.reserve(value_length);
for
(uint32_t x= 0; x < value_length; x++)
{
value.push_back(
char
(x % 127));
}
test_compare(return_value_based_on_buffering(memc),
memcached_set(memc,
test_literal_param(__func__),
&value[0], value.size(),
time_t
(0), uint32_t(0)));
size_t
string_length;
uint32_t flags;
memcached_return_t rc;
char
*string= memcached_get(memc,
test_literal_param(__func__),
&string_length, &flags, &rc);
test_compare(MEMCACHED_SUCCESS, rc);
test_true(string);
test_compare(value.size(), string_length);
test_memcmp(string, &value[0], string_length);
free
(string);
return
TEST_SUCCESS;
}
test_return_t get_test4(memcached_st *memc)
{
size_t
value_length= 8191;
libtest::vchar_t value;
value.reserve(value_length);
for
(uint32_t x= 0; x < value_length; x++)
{
value.push_back(
char
(x % 127));
}
test_compare(return_value_based_on_buffering(memc),
memcached_set(memc,
test_literal_param(__func__),
&value[0], value.size(),
time_t
(0), uint32_t(0)));
for
(uint32_t x= 0; x < 10; x++)
{
uint32_t flags;
size_t
string_length;
memcached_return_t rc;
char
*string= memcached_get(memc,
test_literal_param(__func__),
&string_length, &flags, &rc);
test_compare(MEMCACHED_SUCCESS, rc);
test_true(string);
test_compare(value.size(), string_length);
test_memcmp(string, &value[0], string_length);
free
(string);
}
return
TEST_SUCCESS;
}
test_return_t get_test5(memcached_st *memc)
{
const
char
*keys[]= {
"key"
,
"key"
};
size_t
lengths[]= { 3, 3 };
uint32_t flags;
size_t
rlen;
test_compare(return_value_based_on_buffering(memc),
memcached_set(memc, keys[0], lengths[0],
keys[0], lengths[0],
time_t
(0), uint32_t(0)));
test_compare(MEMCACHED_SUCCESS, memcached_mget(memc, keys, lengths, test_array_length(keys)));
memcached_result_st results_obj;
memcached_result_st *results= memcached_result_create(memc, &results_obj);
test_true(results);
memcached_return_t rc;
results= memcached_fetch_result(memc, &results_obj, &rc);
test_true(results);
memcached_result_free(&results_obj);
test_compare(MEMCACHED_SUCCESS, memcached_set(memc, keys[0], lengths[0], keys[0], lengths[0], 0, 0));
char
*val= memcached_get_by_key(memc, keys[0], lengths[0],
"yek"
, 3,
&rlen, &flags, &rc);
test_false(val);
test_compare(MEMCACHED_NOTFOUND, rc);
val= memcached_get(memc, keys[0], lengths[0], &rlen, &flags, &rc);
test_true(val);
test_compare(MEMCACHED_SUCCESS, rc);
free
(val);
return
TEST_SUCCESS;
}