1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
3 #include "test/fixtures/callbacks.hpp"
5 #define NUM_KEYS 20480U
7 TEST_CASE("memcached_regression_lp490486") {
8 MemcachedCluster test
{Cluster
{Server
{MEMCACHED_BINARY
, {"-p", random_port_string
}}, 1}};
9 auto memc
= &test
.memc
;
11 test
.enableBinaryProto();
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));
17 array
<string
, NUM_KEYS
> str
;
18 array
<char *, NUM_KEYS
> chr
;
19 array
<size_t, NUM_KEYS
> len
;
21 for (auto i
= 0U; i
< NUM_KEYS
; ++i
) {
24 str
[i
] = random_ascii_string(12) + to_string(i
);
25 chr
[i
] = str
[i
].data();
26 len
[i
] = str
[i
].length();
28 REQUIRE_SUCCESS(memcached_set(memc
, chr
[i
], len
[i
], blob
, sizeof(blob
), 0, 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));
37 char key_buf
[MEMCACHED_MAX_KEY
];
40 Malloced
value(memcached_fetch(memc
, key_buf
, &key_len
, nullptr, nullptr, &rc
));
42 } while(rc
== MEMCACHED_SUCCESS
);
44 REQUIRE_RC(MEMCACHED_END
, rc
);
45 REQUIRE(counter
== NUM_KEYS
);