1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
4 static memcached_return_t
callback_counter(const memcached_st
*, memcached_result_st
*, void *context
) {
5 auto *counter
= reinterpret_cast<size_t *>(context
);
6 *counter
= *counter
+ 1;
8 return MEMCACHED_SUCCESS
;
13 TEST_CASE("memcached_regression_lp434843") {
14 MemcachedCluster test
{Cluster
{Server
{MEMCACHED_BINARY
, {"-p", random_port_string
}}, 1}};
15 auto memc
= &test
.memc
;
16 auto buffering
= GENERATE(0, 1);
18 test
.enableBinaryProto();
19 test
.enableBuffering(buffering
);
21 INFO("buffering: " << buffering
);
24 memcached_execute_fn cb
[] = {&callback_counter
};
26 array
<string
, NUM_KEYS
> str
;
27 array
<char *, NUM_KEYS
> chr
;
28 array
<size_t, NUM_KEYS
> len
;
30 for (auto i
= 0; i
< NUM_KEYS
; ++i
) {
31 str
[i
] = random_ascii_string(12) + to_string(i
);
32 chr
[i
] = str
[i
].data();
33 len
[i
] = str
[i
].length();
36 REQUIRE_SUCCESS(memcached_mget(memc
, chr
.data(), len
.data(), NUM_KEYS
));
37 REQUIRE_RC(MEMCACHED_NOTFOUND
, memcached_fetch_execute(memc
, cb
, &counter
, 1));
38 REQUIRE(counter
== 0);
40 for (auto i
= 0; i
< NUM_KEYS
; ++i
) {
42 REQUIRE_SUCCESS(memcached_add(memc
, chr
[i
], len
[i
], data
, sizeof(data
), 0, 0));
45 REQUIRE_SUCCESS(memcached_mget(memc
, chr
.data(), len
.data(), NUM_KEYS
));
46 REQUIRE_SUCCESS( memcached_fetch_execute(memc
, cb
, &counter
, 1));
47 REQUIRE(counter
== NUM_KEYS
);