testing: udp flag must be set prior adding servers
[awesomized/libmemcached] / test / tests / memcached / udp.cpp
1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
3
4 TEST_CASE("memcached_udp") {
5 #ifdef __APPLE__
6 WARN("skip: memcached crashes");
7 SUCCEED();
8 #else
9 auto test = MemcachedCluster::udp();
10 auto memc = &test.memc;
11
12 SECTION("compat") {
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);
22 }
23
24 SECTION("io") {
25 const auto max = 1025; // request id rolls over at 1024
26 auto binary = GENERATE(0,1);
27
28 test.enableBinaryProto(binary);
29
30 DYNAMIC_SECTION("binary=" << binary) {
31 SECTION("set") {
32 for (auto i = 0; i < max; ++i) {
33 auto s = to_string(i);
34 INFO("i=" << i);
35 REQUIRE_SUCCESS(memcached_set(memc, s.c_str(), s.length(), s.c_str(), s.length(), 0, 0));
36 }
37 // FIXME: check request id
38 memcached_quit(memc);
39 REQUIRE_SUCCESS(memcached_last_error(memc));
40 }
41
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));
46 memcached_quit(memc);
47 REQUIRE_SUCCESS(memcached_last_error(memc));
48 }
49
50 SECTION("delete") {
51 for (auto i = 0; i < max; ++i) {
52 auto s = to_string(i);
53 INFO("i=" << i);
54 REQUIRE_SUCCESS(memcached_delete(memc, s.c_str(), s.length(), 0));
55 }
56 memcached_quit(memc);
57 REQUIRE_SUCCESS(memcached_last_error(memc));
58 }
59
60 SECTION("verbosity") {
61 for (auto i = 0; i < max; ++i) {
62 INFO("i=" << i);
63 REQUIRE_SUCCESS(memcached_verbosity(memc, 0));
64 }
65 memcached_quit(memc);
66 REQUIRE_SUCCESS(memcached_last_error(memc));
67 }
68
69 SECTION("flush") {
70 for (auto i = 0; i < max; ++i) {
71 INFO("i=" << i);
72 REQUIRE_SUCCESS(memcached_flush(memc, 0));
73 }
74 memcached_quit(memc);
75 REQUIRE_SUCCESS(memcached_last_error(memc));
76 }
77 }
78 }
79 #endif
80 }