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
;
13 memcached_return_t rc
;
14 REQUIRE_RC(MEMCACHED_INVALID_ARGUMENTS
, memcached_behavior_set(memc
, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS
, true));
15 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, memcached_version(memc
));
16 REQUIRE_SUCCESS(memcached_verbosity(memc
, 0));
17 REQUIRE(nullptr == memcached_get(memc
, S(__func__
), 0, 0, &rc
));
18 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, rc
);
19 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, memcached_mget_execute_by_key(memc
, S(__func__
), nullptr, nullptr, 0, nullptr, nullptr, 0));
20 REQUIRE(nullptr == memcached_stat(memc
, nullptr, &rc
));
21 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED
, rc
);
25 const auto max
= 1025; // request id rolls over at 1024
26 auto binary
= GENERATE(0,1);
28 test
.enableBinaryProto(binary
);
30 DYNAMIC_SECTION("binary=" << binary
) {
32 for (auto i
= 0; i
< max
; ++i
) {
33 auto s
= to_string(i
);
35 REQUIRE_SUCCESS(memcached_set(memc
, s
.c_str(), s
.length(), s
.c_str(), s
.length(), 0, 0));
37 // FIXME: check request id
39 REQUIRE_SUCCESS(memcached_last_error(memc
));
42 SECTION("set too big") {
43 const auto len
= 1'234'567;
44 auto blob
= make_unique
<char>(len
);
45 REQUIRE_RC(MEMCACHED_WRITE_FAILURE
, memcached_set(memc
, S(__func__
), blob
.get(), len
, 0, 0));
47 REQUIRE_SUCCESS(memcached_last_error(memc
));
51 for (auto i
= 0; i
< max
; ++i
) {
52 auto s
= to_string(i
);
54 REQUIRE_SUCCESS(memcached_delete(memc
, s
.c_str(), s
.length(), 0));
57 REQUIRE_SUCCESS(memcached_last_error(memc
));
60 SECTION("verbosity") {
61 for (auto i
= 0; i
< max
; ++i
) {
63 REQUIRE_SUCCESS(memcached_verbosity(memc
, 0));
66 REQUIRE_SUCCESS(memcached_last_error(memc
));
70 for (auto i
= 0; i
< max
; ++i
) {
72 REQUIRE_SUCCESS(memcached_flush(memc
, 0));
75 REQUIRE_SUCCESS(memcached_last_error(memc
));