libmemcached: fix #13
[awesomized/libmemcached] / tests / libmemcached-1.0 / server_add.cc
1 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
2 *
3 * Libmemcached Client and Server
4 *
5 * Copyright (C) 2011 Data Differential, http://datadifferential.com/
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are
10 * met:
11 *
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * * Redistributions in binary form must reproduce the above
16 * copyright notice, this list of conditions and the following disclaimer
17 * in the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * * The names of its contributors may not be used to endorse or
21 * promote products derived from this software without specific prior
22 * written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 *
36 */
37
38 #include <mem_config.h>
39 #include <libtest/yatl.h>
40
41 #include <string>
42
43 using namespace libtest;
44
45 #include <libmemcached-1.0/memcached.h>
46
47 #include <tests/server_add.h>
48
49 static std::string random_hostname()
50 {
51 libtest::vchar_t hostname;
52 libtest::vchar::make(hostname, 23);
53 libtest::vchar::append(hostname, ".com");
54
55 return std::string(&hostname[0]);
56 }
57
58 test_return_t memcached_server_add_null_test(memcached_st* memc)
59 {
60 ASSERT_EQ(0, memcached_server_count(memc));
61
62 test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, NULL, 0));
63
64 return TEST_SUCCESS;
65 }
66
67 test_return_t memcached_server_add_empty_test(memcached_st* memc)
68 {
69 ASSERT_EQ(0, memcached_server_count(memc));
70
71 test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, "", 0));
72
73 return TEST_SUCCESS;
74 }
75
76 test_return_t memcached_server_many_TEST(memcached_st* memc)
77 {
78 ASSERT_EQ(0, memcached_server_count(memc));
79
80 in_port_t base_port= 5555;
81 for (in_port_t x= 0; x < 100; ++x)
82 {
83 std::string hostname(random_hostname());
84 ASSERT_TRUE(hostname.size());
85 test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, hostname.c_str(), base_port +x));
86 }
87
88 return TEST_SUCCESS;
89 }
90
91 test_return_t memcached_server_many_weighted_TEST(memcached_st* memc)
92 {
93 ASSERT_EQ(0, memcached_server_count(memc));
94
95 in_port_t base_port= 5555;
96 for (in_port_t x= 0; x < 100; ++x)
97 {
98 std::string hostname(random_hostname());
99 ASSERT_TRUE(hostname.size());
100 test_compare(MEMCACHED_SUCCESS, memcached_server_add_with_weight(memc, hostname.c_str(), base_port +x, x % 10));
101 }
102
103 return TEST_SUCCESS;
104 }
105
106 test_return_t memcached_servers_reset_test(memcached_st* memc)
107 {
108 ASSERT_EQ(0, memcached_server_count(memc));
109
110 test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, "localhost", 11511));
111
112 memcached_servers_reset(memc);
113
114 test_compare(MEMCACHED_SUCCESS, memcached_server_add(memc, "localhost", 11511));
115
116 return TEST_SUCCESS;
117 }
118