testing: let retry's sleeping duration grow faster
[awesomized/libmemcached] / test / tests / memcached / regression / lp_000-490-486.cpp
1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
3 #include "test/fixtures/callbacks.hpp"
4
5 #define NUM_KEYS 20480U
6
7 TEST_CASE("memcached_regression_lp490486") {
8 MemcachedCluster test{Cluster{Server{MEMCACHED_BINARY, {"-p", random_port_string}}, 1}};
9 auto memc = &test.memc;
10
11 test.enableBinaryProto();
12
13 REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, 1000));
14 REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS, 1));
15 REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_RETRY_TIMEOUT, 3600));
16
17 array<string, NUM_KEYS> str;
18 array<char *, NUM_KEYS> chr;
19 array<size_t, NUM_KEYS> len;
20
21 for (auto i = 0U; i < NUM_KEYS; ++i) {
22 char blob[1024];
23
24 str[i] = random_ascii_string(12) + to_string(i);
25 chr[i] = str[i].data();
26 len[i] = str[i].length();
27
28 REQUIRE_SUCCESS(memcached_set(memc, chr[i], len[i], blob, sizeof(blob), 0, 0));
29 }
30
31 size_t counter = 0;
32 memcached_return_t rc;
33 memcached_execute_fn cb[] = {&callback_counter};
34 REQUIRE_SUCCESS(memcached_mget_execute(memc, chr.data(), len.data(), NUM_KEYS, cb, &counter, 1));
35
36 do {
37 char key_buf[MEMCACHED_MAX_KEY];
38 size_t key_len;
39
40 Malloced value(memcached_fetch(memc, key_buf, &key_len, nullptr, nullptr, &rc));
41 counter += !!*value;
42 } while(rc == MEMCACHED_SUCCESS);
43
44 REQUIRE_RC(MEMCACHED_END, rc);
45 REQUIRE(counter == NUM_KEYS);
46 }