1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
4 TEST_CASE("memcached_udp") {
6 WARN("skip: memcached crashes");
9 auto test
= MemcachedCluster::udp();
10 auto memc
= &test
.memc
;
12 SECTION("sets reply flag") {
13 // FIXME: bad internals test
14 REQUIRE(memc
->flags
.reply
);
15 REQUIRE_FALSE(memc
->flags
.use_udp
);
16 REQUIRE_FALSE(memc
->flags
.use_udp
== memc
->flags
.reply
);
18 REQUIRE_FALSE(memc
->flags
.reply
);
19 REQUIRE(memc
->flags
.use_udp
);
20 REQUIRE_FALSE(memc
->flags
.use_udp
== memc
->flags
.reply
);
21 test
.enableUdp(false);
22 REQUIRE(memc
->flags
.reply
);
23 REQUIRE_FALSE(memc
->flags
.use_udp
);
24 REQUIRE_FALSE(memc
->flags
.use_udp
== memc
->flags
.reply
);
30 memcached_return_t rc
;
31 REQUIRE_RC(MEMCACHED_INVALID_ARGUMENTS
, memcached_behavior_set(memc
, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS
, true));
32 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, memcached_version(memc
));
33 REQUIRE_SUCCESS(memcached_verbosity(memc
, 0));
34 REQUIRE(nullptr == memcached_get(memc
, S(__func__
), 0, 0, &rc
));
35 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, rc
);
36 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, memcached_mget_execute_by_key(memc
, S(__func__
), nullptr, nullptr, 0, nullptr, nullptr, 0));
37 REQUIRE(nullptr == memcached_stat(memc
, nullptr, &rc
));
38 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, rc
);
42 const auto max
= 1025; // request id rolls over at 1024
43 auto binary
= GENERATE(0,1);
45 test
.enableBinaryProto(binary
);
47 DYNAMIC_SECTION("binary=" << binary
) {
49 for (auto i
= 0; i
< max
; ++i
) {
50 auto s
= to_string(i
);
52 REQUIRE_SUCCESS(memcached_set(memc
, s
.c_str(), s
.length(), s
.c_str(), s
.length(), 0, 0));
54 // FIXME: check request id
56 REQUIRE_SUCCESS(memcached_last_error(memc
));
59 SECTION("set too big") {
60 const auto len
= 1'234'567;
61 auto blob
= make_unique
<char>(len
);
62 REQUIRE_RC(MEMCACHED_WRITE_FAILURE
, memcached_set(memc
, S(__func__
), blob
.get(), len
, 0, 0));
64 REQUIRE_SUCCESS(memcached_last_error(memc
));
68 for (auto i
= 0; i
< max
; ++i
) {
69 auto s
= to_string(i
);
71 REQUIRE_SUCCESS(memcached_delete(memc
, s
.c_str(), s
.length(), 0));
74 REQUIRE_SUCCESS(memcached_last_error(memc
));
77 SECTION("verbosity") {
78 for (auto i
= 0; i
< max
; ++i
) {
80 REQUIRE_SUCCESS(memcached_verbosity(memc
, 0));
83 REQUIRE_SUCCESS(memcached_last_error(memc
));
87 for (auto i
= 0; i
< max
; ++i
) {
89 REQUIRE_SUCCESS(memcached_flush(memc
, 0));
92 REQUIRE_SUCCESS(memcached_last_error(memc
));