testing: fix osx
[m6w6/libmemcached] / test / tests / memcached / regression / lp434843.cpp
1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
3
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;
7
8 return MEMCACHED_SUCCESS;
9 }
10
11 #define NUM_KEYS 1024
12
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);
17
18 test.enableBinaryProto();
19 test.enableBuffering(buffering);
20
21 INFO("buffering: " << buffering);
22
23 size_t counter = 0;
24 memcached_execute_fn cb[] = {&callback_counter};
25
26 array<string, NUM_KEYS> str;
27 array<char *, NUM_KEYS> chr;
28 array<size_t, NUM_KEYS> len;
29
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();
34 }
35
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);
39
40 for (auto i = 0; i < NUM_KEYS; ++i) {
41 char data[1024];
42 REQUIRE_SUCCESS(memcached_add(memc, chr[i], len[i], data, sizeof(data), 0, 0));
43 }
44
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);
48 }