1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
4 TEST_CASE("memcached_udp") {
5 auto test
= MemcachedCluster::udp();
6 auto memc
= &test
.memc
;
8 SECTION("sets reply flag") {
9 // FIXME: bad internals test
10 REQUIRE(memc
->flags
.reply
);
11 REQUIRE_FALSE(memc
->flags
.use_udp
);
12 REQUIRE_FALSE(memc
->flags
.use_udp
== memc
->flags
.reply
);
14 REQUIRE_FALSE(memc
->flags
.reply
);
15 REQUIRE(memc
->flags
.use_udp
);
16 REQUIRE_FALSE(memc
->flags
.use_udp
== memc
->flags
.reply
);
17 test
.enableUdp(false);
18 REQUIRE(memc
->flags
.reply
);
19 REQUIRE_FALSE(memc
->flags
.use_udp
);
20 REQUIRE_FALSE(memc
->flags
.use_udp
== memc
->flags
.reply
);
26 memcached_return_t rc
;
27 REQUIRE_RC(MEMCACHED_INVALID_ARGUMENTS
, memcached_behavior_set(memc
, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS
, true));
28 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, memcached_version(memc
));
29 REQUIRE_SUCCESS(memcached_verbosity(memc
, 0));
30 REQUIRE(nullptr == memcached_get(memc
, S(__func__
), 0, 0, &rc
));
31 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, rc
);
32 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, memcached_mget_execute_by_key(memc
, S(__func__
), nullptr, nullptr, 0, nullptr, nullptr, 0));
33 REQUIRE(nullptr == memcached_stat(memc
, nullptr, &rc
));
34 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, rc
);
38 const auto max
= 1025; // request id rolls over at 1024
39 auto binary
= GENERATE(0,1);
41 test
.enableBinaryProto(binary
);
43 DYNAMIC_SECTION("binary=" << binary
) {
45 for (auto i
= 0; i
< max
; ++i
) {
46 auto s
= to_string(i
);
48 REQUIRE_SUCCESS(memcached_set(memc
, s
.c_str(), s
.length(), s
.c_str(), s
.length(), 0, 0));
50 // FIXME: check request id
52 REQUIRE_SUCCESS(memcached_last_error(memc
));
55 SECTION("set too big") {
56 const auto len
= 1'234'567;
57 auto blob
= make_unique
<char>(len
);
58 REQUIRE_RC(MEMCACHED_WRITE_FAILURE
, memcached_set(memc
, S(__func__
), blob
.get(), len
, 0, 0));
60 REQUIRE_SUCCESS(memcached_last_error(memc
));
64 for (auto i
= 0; i
< max
; ++i
) {
65 auto s
= to_string(i
);
67 REQUIRE_SUCCESS(memcached_delete(memc
, s
.c_str(), s
.length(), 0));
70 REQUIRE_SUCCESS(memcached_last_error(memc
));
73 SECTION("verbosity") {
74 for (auto i
= 0; i
< max
; ++i
) {
76 REQUIRE_SUCCESS(memcached_verbosity(memc
, 0));
79 REQUIRE_SUCCESS(memcached_last_error(memc
));
83 for (auto i
= 0; i
< max
; ++i
) {
85 REQUIRE_SUCCESS(memcached_flush(memc
, 0));
88 REQUIRE_SUCCESS(memcached_last_error(memc
));