X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=test%2Ftests%2Fmemcached%2Fregression%2Flp_000-434-843.cpp;fp=test%2Ftests%2Fmemcached%2Fregression%2Flp_000-434-843.cpp;h=dc839d53733f079b1466af255c3d92136599588d;hb=70c662f31502f6d76a973fcb0c86a093889c6e0d;hp=0000000000000000000000000000000000000000;hpb=d71edecebf48c345537cdb6f72e3afefde0e708f;p=awesomized%2Flibmemcached diff --git a/test/tests/memcached/regression/lp_000-434-843.cpp b/test/tests/memcached/regression/lp_000-434-843.cpp new file mode 100644 index 00000000..dc839d53 --- /dev/null +++ b/test/tests/memcached/regression/lp_000-434-843.cpp @@ -0,0 +1,48 @@ +#include "test/lib/common.hpp" +#include "test/lib/MemcachedCluster.hpp" + +static memcached_return_t callback_counter(const memcached_st *, memcached_result_st *, void *context) { + auto *counter= reinterpret_cast(context); + *counter = *counter + 1; + + return MEMCACHED_SUCCESS; +} + +#define NUM_KEYS 1024 + +TEST_CASE("memcached_regression_lp434843") { + MemcachedCluster test{Cluster{Server{MEMCACHED_BINARY, {"-p", random_port_string}}, 1}}; + auto memc = &test.memc; + auto buffering = GENERATE(0, 1); + + test.enableBinaryProto(); + test.enableBuffering(buffering); + + INFO("buffering: " << buffering); + + size_t counter = 0; + memcached_execute_fn cb[] = {&callback_counter}; + + array str; + array chr; + array len; + + for (auto i = 0; i < NUM_KEYS; ++i) { + str[i] = random_ascii_string(12) + to_string(i); + chr[i] = str[i].data(); + len[i] = str[i].length(); + } + + REQUIRE_SUCCESS(memcached_mget(memc, chr.data(), len.data(), NUM_KEYS)); + REQUIRE_RC(MEMCACHED_NOTFOUND, memcached_fetch_execute(memc, cb, &counter, 1)); + REQUIRE(counter == 0); + + for (auto i = 0; i < NUM_KEYS; ++i) { + char data[1024]; + REQUIRE_SUCCESS(memcached_add(memc, chr[i], len[i], data, sizeof(data), 0, 0)); + } + + REQUIRE_SUCCESS(memcached_mget(memc, chr.data(), len.data(), NUM_KEYS)); + REQUIRE_SUCCESS( memcached_fetch_execute(memc, cb, &counter, 1)); + REQUIRE(counter == NUM_KEYS); +}