#include <mem_config.h>
#include <libtest/test.hpp>
#include <libmemcached-1.0/memcached.h>
using
namespace
libtest;
#ifndef __INTEL_COMPILER
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif
static
std::string executable(
"clients/memcat"
);
static
test_return_t help_test(
void
*)
{
const
char
*args[]= {
"--help"
, 0 };
test_compare(EXIT_SUCCESS, exec_cmdline(executable, args,
true
));
return
TEST_SUCCESS;
}
static
test_return_t cat_test(
void
*)
{
char
buffer[1024];
snprintf(buffer,
sizeof
(buffer),
"--server=localhost:%d"
,
int
(default_port()));
const
char
*args[]= { buffer,
"foo"
, 0 };
memcached_st *memc= memcached(buffer,
strlen
(buffer));
test_true(memc);
test_compare(MEMCACHED_SUCCESS,
memcached_set(memc, test_literal_param(
"foo"
), 0, 0, 0, 0));
memcached_return_t rc;
test_null(memcached_get(memc, test_literal_param(
"foo"
), 0, 0, &rc));
test_compare(MEMCACHED_SUCCESS, rc);
test_compare(EXIT_SUCCESS, exec_cmdline(executable, args,
true
));
test_null(memcached_get(memc, test_literal_param(
"foo"
), 0, 0, &rc));
test_compare(MEMCACHED_SUCCESS, rc);
memcached_free(memc);
return
TEST_SUCCESS;
}
static
test_return_t NOT_FOUND_test(
void
*)
{
char
buffer[1024];
snprintf(buffer,
sizeof
(buffer),
"--server=localhost:%d"
,
int
(default_port()));
const
char
*args[]= { buffer,
"foo"
, 0 };
memcached_st *memc= memcached(buffer,
strlen
(buffer));
test_true(memc);
test_compare(MEMCACHED_SUCCESS, memcached_flush(memc, 0));
memcached_return_t rc;
test_null(memcached_get(memc, test_literal_param(
"foo"
), 0, 0, &rc));
test_compare(MEMCACHED_NOTFOUND, rc);
test_compare(EXIT_FAILURE, exec_cmdline(executable, args,
true
));
test_null(memcached_get(memc, test_literal_param(
"foo"
), 0, 0, &rc));
test_compare(MEMCACHED_NOTFOUND, rc);
memcached_free(memc);
return
TEST_SUCCESS;
}
test_st memcat_tests[] ={
{
"--help"
,
true
, help_test },
{
"cat(FOUND)"
,
true
, cat_test },
{
"cat(NOT_FOUND)"
,
true
, NOT_FOUND_test },
{0, 0, 0}
};
collection_st collection[] ={
{
"memcat"
, 0, 0, memcat_tests },
{0, 0, 0, 0}
};
static
void
*world_create(server_startup_st& servers, test_return_t& error)
{
if
(libtest::has_memcached() ==
false
)
{
error= TEST_SKIPPED;
return
NULL;
}
if
(not server_startup(servers,
"memcached"
, libtest::default_port(), NULL))
{
error= TEST_FAILURE;
}
return
&servers;
}
void
get_world(libtest::Framework* world)
{
world->collections(collection);
world->create(world_create);
}