1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
4 #define NUM_KEYS 20480U
6 static memcached_return_t
callback_counter(const memcached_st
*, memcached_result_st
*, void *context
) {
7 auto *counter
= reinterpret_cast<size_t *>(context
);
8 *counter
= *counter
+ 1;
10 return MEMCACHED_SUCCESS
;
13 TEST_CASE("memcached_regression_lp490486") {
14 MemcachedCluster test
{Cluster
{Server
{MEMCACHED_BINARY
, {"-p", random_port_string
}}, 1}};
15 auto memc
= &test
.memc
;
17 test
.enableBinaryProto();
19 REQUIRE_SUCCESS(memcached_behavior_set(memc
, MEMCACHED_BEHAVIOR_POLL_TIMEOUT
, 1000));
20 REQUIRE_SUCCESS(memcached_behavior_set(memc
, MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS
, 1));
21 REQUIRE_SUCCESS(memcached_behavior_set(memc
, MEMCACHED_BEHAVIOR_RETRY_TIMEOUT
, 3600));
23 array
<string
, NUM_KEYS
> str
;
24 array
<char *, NUM_KEYS
> chr
;
25 array
<size_t, NUM_KEYS
> len
;
27 for (auto i
= 0U; i
< NUM_KEYS
; ++i
) {
30 str
[i
] = random_ascii_string(12) + to_string(i
);
31 chr
[i
] = str
[i
].data();
32 len
[i
] = str
[i
].length();
34 REQUIRE_SUCCESS(memcached_set(memc
, chr
[i
], len
[i
], blob
, sizeof(blob
), 0, 0));
38 memcached_return_t rc
;
39 memcached_execute_fn cb
[] = {&callback_counter
};
40 REQUIRE_SUCCESS(memcached_mget_execute(memc
, chr
.data(), len
.data(), NUM_KEYS
, cb
, &counter
, 1));
43 char key_buf
[MEMCACHED_MAX_KEY
];
46 Malloced
value(memcached_fetch(memc
, key_buf
, &key_len
, nullptr, nullptr, &rc
));
48 } while(rc
== MEMCACHED_SUCCESS
);
50 REQUIRE_RC(MEMCACHED_END
, rc
);
51 REQUIRE(counter
== NUM_KEYS
);