libmemcached: add MEMCACHED_BEHAVIOR_META_PROTOCOL
[awesomized/libmemcached] / test / tests / memcached / touch.cpp
1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
3
4 TEST_CASE("memcached_touch") {
5 auto test = MemcachedCluster::mixed();
6 auto memc = &test.memc;
7 memcached_return_t rc;
8 auto proto = GENERATE(as<memcached_behavior_t>{}, 0, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, MEMCACHED_BEHAVIOR_META_PROTOCOL);
9
10 if (proto) {
11 REQUIRE_SUCCESS(memcached_behavior_set(memc, proto, 1));
12 }
13
14 if (proto == MEMCACHED_BEHAVIOR_META_PROTOCOL && !test.isGEVersion(1, 6)) {
15 return;
16 }
17
18 DYNAMIC_SECTION("touch " << (proto ? libmemcached_string_behavior(proto) + sizeof("MEMCACHED_BEHAVIOR") : "ASCII_PROTOCOL")) {
19 REQUIRE_FALSE(memcached_get(memc, S(__func__), nullptr, nullptr, &rc));
20 REQUIRE_RC(MEMCACHED_NOTFOUND, rc);
21
22 REQUIRE_SUCCESS(memcached_set(memc, S(__func__), S(__func__), 2, 0));
23
24 Malloced val(memcached_get(memc, S(__func__), nullptr, nullptr, &rc));
25 REQUIRE_SUCCESS(rc);
26 REQUIRE(*val);
27
28 REQUIRE_SUCCESS(memcached_touch(memc, S(__func__), 60));
29 val = memcached_get(memc, S(__func__), nullptr, nullptr, &rc);
30 REQUIRE_SUCCESS(rc);
31 REQUIRE(*val);
32
33 REQUIRE_SUCCESS(memcached_touch(memc, S(__func__), time(nullptr) - 2));
34 val = memcached_get(memc, S(__func__), nullptr, nullptr, &rc);
35 REQUIRE_RC(MEMCACHED_NOTFOUND, rc);
36 REQUIRE_FALSE(*val);
37 }
38
39 DYNAMIC_SECTION("touch_by_key " << (proto ? libmemcached_string_behavior(proto) + sizeof("MEMCACHED_BEHAVIOR") : "ASCII_PROTOCOL")) {
40 REQUIRE_RC(MEMCACHED_NOTFOUND, memcached_touch_by_key(memc, S(__func__), S(__func__), 60));
41 REQUIRE_SUCCESS(memcached_set_by_key(memc, S(__func__), S(__func__), S(__func__), 2, 0));
42
43 Malloced val(memcached_get_by_key(memc, S(__func__), S(__func__), nullptr, nullptr, &rc));
44 REQUIRE_SUCCESS(rc);
45 REQUIRE(*val);
46
47 REQUIRE_SUCCESS(memcached_touch_by_key(memc, S(__func__), S(__func__), time(nullptr) - 2));
48 val = memcached_get_by_key(memc, S(__func__), S(__func__), nullptr, nullptr, &rc);
49 REQUIRE_RC(MEMCACHED_NOTFOUND, rc);
50 REQUIRE_FALSE(*val);
51
52 REQUIRE_RC(MEMCACHED_NOTFOUND, memcached_touch_by_key(memc, S(__func__), S(__func__), 60));
53 }
54 }