tests: add test for php-memcached-dev/php-memcached#531
[awesomized/libmemcached] / test / tests / memcached / regression / lp_000-434-843.cpp
1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
3 #include "test/fixtures/callbacks.hpp"
4
5 #define NUM_KEYS 1024
6
7 TEST_CASE("memcached_regression_lp434843") {
8 MemcachedCluster test{Cluster{Server{MEMCACHED_BINARY, {"-p", random_port_string}}, 1}};
9 auto memc = &test.memc;
10 auto buffering = GENERATE(0, 1);
11
12 test.enableBinaryProto();
13 test.enableBuffering(buffering);
14
15 INFO("buffering: " << buffering);
16
17 size_t counter = 0;
18 memcached_execute_fn cb[] = {&callback_counter};
19
20 array<string, NUM_KEYS> str;
21 array<char *, NUM_KEYS> chr;
22 array<size_t, NUM_KEYS> len;
23
24 for (auto i = 0; i < NUM_KEYS; ++i) {
25 str[i] = random_ascii_string(12) + to_string(i);
26 chr[i] = str[i].data();
27 len[i] = str[i].length();
28 }
29
30 REQUIRE_SUCCESS(memcached_mget(memc, chr.data(), len.data(), NUM_KEYS));
31 REQUIRE_RC(MEMCACHED_NOTFOUND, memcached_fetch_execute(memc, cb, &counter, 1));
32 REQUIRE(counter == 0);
33
34 for (auto i = 0; i < NUM_KEYS; ++i) {
35 char data[1024];
36 REQUIRE_SUCCESS(memcached_add(memc, chr[i], len[i], data, sizeof(data), 0, 0));
37 }
38
39 REQUIRE_SUCCESS(memcached_mget(memc, chr.data(), len.data(), NUM_KEYS));
40 REQUIRE_SUCCESS( memcached_fetch_execute(memc, cb, &counter, 1));
41 REQUIRE(counter == NUM_KEYS);
42 }