revert most of d7a0084bf99d618d1dc26a54fd413db7ae8b8e63
[awesomized/libmemcached] / test / tests / memcached / noblock.cpp
1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
3
4 TEST_CASE("memcached_noblock") {
5 auto test = MemcachedCluster::network();
6 auto memc = &test.memc;
7 auto timeout = GENERATE(0, -1);
8
9 REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, 1));
10 REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, 1));
11 REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, timeout));
12
13 auto num = timeout ? 10'000 : 1'000'000;
14 auto hit = 0u;
15 auto rnd = random_ascii_string(512);
16 for (auto i = 0; i < num; ++i) {
17 auto key = to_string(i);
18 auto rc = memcached_set(memc, key.c_str(), key.length(), rnd.c_str(), rnd.length(), 1, 0);
19 switch (rc) {
20 case MEMCACHED_SUCCESS:
21 case MEMCACHED_BUFFERED:
22 case MEMCACHED_SERVER_TEMPORARILY_DISABLED:
23 break;
24 case MEMCACHED_TIMEOUT:
25 case MEMCACHED_WRITE_FAILURE:
26 ++hit;
27 REQUIRE(true);
28 break;
29 default:
30 REQUIRE(false);
31 }
32 }
33 INFO("failures triggered: " << hit);
34 if (timeout) {
35 CHECK_FALSE(hit);
36 } else {
37 CHECK(hit > 0);
38 }
39 }