testing: parser
[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 auto test = MemcachedCluster::udp();
6 auto memc = &test.memc;
7
8 SECTION("compat") {
9 memcached_return_t rc;
10 REQUIRE_RC(MEMCACHED_INVALID_ARGUMENTS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, true));
11 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED, memcached_version(memc));
12 REQUIRE_SUCCESS(memcached_verbosity(memc, 0));
13 REQUIRE(nullptr == memcached_get(memc, S(__func__), 0, 0, &rc));
14 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED, rc);
15 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED, memcached_mget_execute_by_key(memc, S(__func__), nullptr, nullptr, 0, nullptr, nullptr, 0));
16 REQUIRE(nullptr == memcached_stat(memc, nullptr, &rc));
17 REQUIRE_RC(MEMCACHED_NOT_SUPPORTED, rc);
18 }
19
20 SECTION("io") {
21 const auto max = 1025; // request id rolls over at 1024
22 auto binary = GENERATE(0,1);
23
24 test.enableBinaryProto(binary);
25
26 DYNAMIC_SECTION("binary=" << binary) {
27 SECTION("set") {
28 for (auto i = 0; i < max; ++i) {
29 auto s = to_string(i);
30 INFO("i=" << i);
31 REQUIRE_SUCCESS(memcached_set(memc, s.c_str(), s.length(), s.c_str(), s.length(), 0, 0));
32 }
33 // FIXME: check request id
34 memcached_quit(memc);
35 REQUIRE_SUCCESS(memcached_last_error(memc));
36 }
37
38 SECTION("set too big") {
39 const auto len = 1'234'567;
40 auto blob = make_unique<char>(len);
41 REQUIRE_RC(MEMCACHED_WRITE_FAILURE, memcached_set(memc, S(__func__), blob.get(), len, 0, 0));
42 memcached_quit(memc);
43 REQUIRE_SUCCESS(memcached_last_error(memc));
44 }
45
46 SECTION("delete") {
47 for (auto i = 0; i < max; ++i) {
48 auto s = to_string(i);
49 INFO("i=" << i);
50 REQUIRE_SUCCESS(memcached_delete(memc, s.c_str(), s.length(), 0));
51 }
52 memcached_quit(memc);
53 REQUIRE_SUCCESS(memcached_last_error(memc));
54 }
55
56 SECTION("verbosity") {
57 for (auto i = 0; i < max; ++i) {
58 INFO("i=" << i);
59 REQUIRE_SUCCESS(memcached_verbosity(memc, 0));
60 }
61 memcached_quit(memc);
62 REQUIRE_SUCCESS(memcached_last_error(memc));
63 }
64
65 SECTION("flush") {
66 for (auto i = 0; i < max; ++i) {
67 INFO("i=" << i);
68 REQUIRE_SUCCESS(memcached_flush(memc, 0));
69 }
70 memcached_quit(memc);
71 REQUIRE_SUCCESS(memcached_last_error(memc));
72 }
73 }
74 }
75 }