X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=test%2Ftests%2Fmemcached%2Fbehavior.cpp;h=655265e99e858b6c542a6ea4d6f308625d2c3925;hb=0d7a3e0e040ddf840d656b61f41419c252debcde;hp=1ee58370dc4cc2cd2d693df5c79826981278e19e;hpb=7e2b466107a65e22f1cc258ca8643922dbb60352;p=awesomized%2Flibmemcached diff --git a/test/tests/memcached/behavior.cpp b/test/tests/memcached/behavior.cpp index 1ee58370..655265e9 100644 --- a/test/tests/memcached/behavior.cpp +++ b/test/tests/memcached/behavior.cpp @@ -1 +1,37 @@ -#warning TODO +#include "test/lib/common.hpp" +#include "test/lib/MemcachedCluster.hpp" +#include "test/fixtures/callbacks.hpp" + +TEST_CASE("memcached_behavior") { + auto test = MemcachedCluster::network(); + auto memc = &test.memc; + + SECTION("IO_KEY_PREFETCH") { + test.enableBinaryProto(); + constexpr int NUM_KEYS = 2048; + + // use batches of 64 keys + REQUIRE_SUCCESS(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH, 64)); + + array str; + array chr; + array len; + + for (auto i = 0; i < NUM_KEYS; ++i) { + str[i] = to_string(i); + chr[i] = str[i].data(); + len[i] = str[i].length(); + REQUIRE_SUCCESS(memcached_set(memc, chr[i], len[i], chr[i], len[i], 0, 0)); + } + + memcached_quit(memc); + + size_t counter = 0; + memcached_execute_fn cb[] = {&callback_counter}; + REQUIRE_SUCCESS(memcached_mget_execute(memc, chr.data(), len.data(), NUM_KEYS, cb, &counter, 1)); + auto q_id = memcached_query_id(memc); + REQUIRE_SUCCESS(memcached_fetch_execute(memc, cb, &counter, 1)); + REQUIRE(counter == NUM_KEYS); + REQUIRE(q_id == memcached_query_id(memc)); + } +}