Merge working tree with build tree.
[awesomized/libmemcached] / libtest / server_container.h
1 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
2 *
3 * libtest
4 *
5 * Copyright (C) 2011 Data Differential, http://datadifferential.com/
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 3 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 #pragma once
23
24 #include <cassert>
25 #include <cstdio>
26 #include <cstring>
27 #include <netdb.h>
28 #include <netinet/in.h>
29 #include <string>
30 #include <unistd.h>
31 #include <vector>
32
33 namespace libtest {
34
35 class server_startup_st
36 {
37 private:
38 uint64_t _magic;
39 std::string server_list;
40 bool _socket;
41 bool _sasl;
42 uint32_t _count;
43 std::string _username;
44 std::string _password;
45
46 public:
47
48 uint8_t udp;
49 std::vector<Server *> servers;
50
51 server_startup_st();
52 ~server_startup_st();
53
54 bool validate();
55
56 bool start_socket_server(const std::string& server_type, const in_port_t try_port, int argc, const char *argv[]);
57
58 uint32_t count() const
59 {
60 return _count;
61 }
62
63 void set_count(uint32_t arg)
64 {
65 _count= arg;
66 }
67
68 void restart();
69
70 std::string option_string() const;
71
72 const std::string& password() const
73 {
74 return _password;
75 }
76
77 const std::string& username() const
78 {
79 return _username;
80 }
81
82
83 bool is_debug() const;
84 bool is_helgrind() const;
85 bool is_valgrind() const;
86
87 bool socket()
88 {
89 return _socket;
90 }
91
92 bool sasl()
93 {
94 return _sasl;
95 }
96
97 void set_socket()
98 {
99 _socket= true;
100 }
101
102 void set_sasl(const std::string& username_arg, const std::string& password_arg)
103 {
104 _sasl= true;
105 _username= username_arg;
106 _password= password_arg;
107 }
108
109
110 void shutdown_and_remove();
111 void shutdown();
112 bool shutdown(uint32_t number_of_host);
113
114 void push_server(Server *);
115 Server *pop_server();
116 };
117
118 bool server_startup(server_startup_st&, const std::string&, in_port_t try_port, int argc, const char *argv[]);
119
120 } // namespace libtest