14 #include "../lib/catch.hpp"
16 #include "libmemcached/memcached.h"
18 #define LITERAL(s) (s),strlen(s)
19 #define LOOPED_SECTION(tests) \
21 for (auto &&test : tests) DYNAMIC_SECTION("test" << i_++)
25 using socket_or_port_t = variant<string, int>;
27 const char *getenv_else(const char *var, const char *defval);
28 unsigned random_num(unsigned min, unsigned max);
29 unsigned random_port();
30 string random_socket();
31 string random_socket_or_port_string(const string &what);
32 string random_socket_or_port_flag(const string &binary);
34 inline auto random_socket_or_port_arg() {
35 return make_pair(&random_socket_or_port_flag, &random_socket_or_port_string);
43 MemcachedPtr(memcached_st *memc_) {
44 memset(&memc, 0, sizeof(memc));
45 REQUIRE(memcached_clone(&memc, memc_));
48 : MemcachedPtr(nullptr)
51 memcached_free(&memc);
53 memcached_st *operator * () {