testing: fix osx
[awesomized/libmemcached] / test / tests / memcached / util.cpp
1 #include "test/lib/common.hpp"
2 #include "test/lib/MemcachedCluster.hpp"
3
4 #include "libmemcached/instance.hpp"
5 #include "libmemcachedutil/common.h"
6
7 static memcached_return_t ping_callback(const memcached_st *, const memcached_instance_st *instance, void *) {
8 memcached_return_t rc;
9
10 REQUIRE(libmemcached_util_ping(memcached_server_name(instance), memcached_server_port(instance), &rc));
11 REQUIRE(rc == MEMCACHED_SUCCESS);
12 return MEMCACHED_SUCCESS;
13 }
14
15 TEST_CASE("memcached_util") {
16 SECTION("version_check") {
17 auto test = MemcachedCluster::mixed();
18 auto memc = &test.memc;
19
20 REQUIRE_SUCCESS(memcached_version(memc));
21 REQUIRE(libmemcached_util_version_check(memc, 0, 0, 0));
22 REQUIRE_FALSE(libmemcached_util_version_check(memc, 255, 255, 255));
23
24 auto instance = memcached_server_instance_by_position(memc, 0);
25 REQUIRE(libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, instance->micro_version));
26 if (instance->micro_version) {
27 REQUIRE(libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, instance->micro_version - 1));
28 if (instance->micro_version < 255) {
29 REQUIRE_FALSE(libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, instance->micro_version + 1));
30 }
31 }
32 if (instance->minor_version) {
33 REQUIRE(libmemcached_util_version_check(memc, instance->major_version, instance->minor_version - 1, 255));
34 if (instance->minor_version < 255) {
35 REQUIRE_FALSE(libmemcached_util_version_check(memc, instance->major_version, instance->minor_version + 1, 0));
36 }
37 }
38 if (instance->major_version) {
39 REQUIRE(libmemcached_util_version_check(memc, instance->major_version - 1, 255, 255));
40 if (instance->major_version < 255) {
41 REQUIRE_FALSE(libmemcached_util_version_check(memc, instance->major_version + 1, 0, 0));
42 }
43 }
44 }
45
46 SECTION("getpid") {
47 auto test = MemcachedCluster::network();
48 memcached_return_t rc;
49
50 for (auto &server : test.cluster.getServers()) {
51 REQUIRE(server.getPid() == libmemcached_util_getpid("localhost", get<int>(server.getSocketOrPort()), &rc));
52 REQUIRE_SUCCESS(rc);
53 }
54
55 REQUIRE(-1 == libmemcached_util_getpid("localhost", 1, &rc));
56 REQUIRE_RC(MEMCACHED_CONNECTION_FAILURE, rc);
57 }
58
59 SECTION("ping") {
60 auto test = MemcachedCluster::network();
61 auto memc = &test.memc;
62 memcached_server_fn fptr[] = {&ping_callback};
63
64 REQUIRE_SUCCESS(memcached_server_cursor(memc, fptr, nullptr, 1));
65 }
66
67 SECTION("flush") {
68 auto test = MemcachedCluster::network();
69
70 for (auto &server : test.cluster.getServers()) {
71 memcached_return_t rc;
72 REQUIRE(libmemcached_util_flush("localhost", get<int>(server.getSocketOrPort()), &rc));
73 REQUIRE_SUCCESS(rc);
74 }
75 }
76 }