4 Copyright (C) Amitay Isaacs 2015
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, see <http://www.gnu.org/licenses/>.
21 #include "system/filesys.h"
25 #include "protocol/protocol_basic.c"
26 #include "protocol/protocol_types.c"
28 #include "tests/src/protocol_common.h"
30 PROTOCOL_TYPE2_TEST(TDB_DATA, ctdb_tdb_data);
31 PROTOCOL_TYPE2_TEST(TDB_DATA, ctdb_tdb_datan);
32 PROTOCOL_TYPE1_TEST(struct ctdb_latency_counter, ctdb_latency_counter);
34 static void test_ctdb_g_lock(void)
36 TALLOC_CTX *mem_ctx = talloc_new(NULL);
37 struct ctdb_g_lock p1, p2;
41 fill_ctdb_g_lock(mem_ctx, &p1);
42 buflen = ctdb_g_lock_len(&p1);
43 ctdb_g_lock_push(&p1, BUFFER);
44 ret = ctdb_g_lock_pull(BUFFER, buflen, &p2);
46 verify_ctdb_g_lock(&p1, &p2);
50 PROTOCOL_TYPE3_TEST(struct ctdb_statistics, ctdb_statistics);
51 PROTOCOL_TYPE3_TEST(struct ctdb_vnn_map, ctdb_vnn_map);
52 PROTOCOL_TYPE3_TEST(struct ctdb_dbid, ctdb_dbid);
53 PROTOCOL_TYPE3_TEST(struct ctdb_dbid_map, ctdb_dbid_map);
54 PROTOCOL_TYPE3_TEST(struct ctdb_pulldb, ctdb_pulldb);
55 PROTOCOL_TYPE3_TEST(struct ctdb_pulldb_ext, ctdb_pulldb_ext);
56 PROTOCOL_TYPE1_TEST(struct ctdb_ltdb_header, ctdb_ltdb_header);
57 PROTOCOL_TYPE3_TEST(struct ctdb_rec_data, ctdb_rec_data);
58 PROTOCOL_TYPE3_TEST(struct ctdb_rec_buffer, ctdb_rec_buffer);
59 PROTOCOL_TYPE3_TEST(struct ctdb_traverse_start, ctdb_traverse_start);
60 PROTOCOL_TYPE3_TEST(struct ctdb_traverse_all, ctdb_traverse_all);
61 PROTOCOL_TYPE3_TEST(struct ctdb_traverse_start_ext, ctdb_traverse_start_ext);
62 PROTOCOL_TYPE3_TEST(struct ctdb_traverse_all_ext, ctdb_traverse_all_ext);
63 PROTOCOL_TYPE3_TEST(ctdb_sock_addr, ctdb_sock_addr);
64 PROTOCOL_TYPE3_TEST(struct ctdb_connection, ctdb_connection);
65 PROTOCOL_TYPE3_TEST(struct ctdb_tunable, ctdb_tunable);
66 PROTOCOL_TYPE3_TEST(struct ctdb_node_flag_change, ctdb_node_flag_change);
67 PROTOCOL_TYPE3_TEST(struct ctdb_var_list, ctdb_var_list);
68 PROTOCOL_TYPE3_TEST(struct ctdb_tunable_list, ctdb_tunable_list);
69 PROTOCOL_TYPE3_TEST(struct ctdb_tickle_list, ctdb_tickle_list);
70 PROTOCOL_TYPE3_TEST(struct ctdb_addr_info, ctdb_addr_info);
71 PROTOCOL_TYPE3_TEST(struct ctdb_transdb, ctdb_transdb);
72 PROTOCOL_TYPE3_TEST(struct ctdb_uptime, ctdb_uptime);
73 PROTOCOL_TYPE3_TEST(struct ctdb_public_ip, ctdb_public_ip);
74 PROTOCOL_TYPE3_TEST(struct ctdb_public_ip_list, ctdb_public_ip_list);
75 PROTOCOL_TYPE3_TEST(struct ctdb_node_and_flags, ctdb_node_and_flags);
76 PROTOCOL_TYPE3_TEST(struct ctdb_node_map, ctdb_node_map);
77 PROTOCOL_TYPE3_TEST(struct ctdb_script, ctdb_script);
78 PROTOCOL_TYPE3_TEST(struct ctdb_script_list, ctdb_script_list);
79 PROTOCOL_TYPE3_TEST(struct ctdb_ban_state, ctdb_ban_state);
80 PROTOCOL_TYPE3_TEST(struct ctdb_notify_data, ctdb_notify_data);
81 PROTOCOL_TYPE3_TEST(struct ctdb_iface, ctdb_iface);
82 PROTOCOL_TYPE3_TEST(struct ctdb_iface_list, ctdb_iface_list);
83 PROTOCOL_TYPE3_TEST(struct ctdb_public_ip_info, ctdb_public_ip_info);
84 PROTOCOL_TYPE3_TEST(struct ctdb_statistics_list, ctdb_statistics_list);
85 PROTOCOL_TYPE3_TEST(struct ctdb_key_data, ctdb_key_data);
86 DEFINE_TEST(struct ctdb_db_statistics, ctdb_db_statistics);
87 DEFINE_TEST(struct ctdb_election_message, ctdb_election_message);
88 DEFINE_TEST(struct ctdb_srvid_message, ctdb_srvid_message);
89 DEFINE_TEST(struct ctdb_disable_message, ctdb_disable_message);
90 DEFINE_TEST(struct ctdb_g_lock_list, ctdb_g_lock_list);
92 static void test_ctdb_rec_buffer_read_write(void)
94 TALLOC_CTX *mem_ctx = talloc_new(NULL);
95 struct ctdb_rec_buffer *p1, **p2;
96 const char *filename = "ctdb_rec_buffer_test.dat";
101 p1 = talloc_array(mem_ctx, struct ctdb_rec_buffer, count);
103 for (i=0; i<count; i++) {
104 fill_ctdb_rec_buffer(mem_ctx, &p1[i]);
107 fd = open(filename, O_RDWR|O_CREAT, 0600);
111 for (i=0; i<count; i++) {
112 ret = ctdb_rec_buffer_write(&p1[i], fd);
116 offset = lseek(fd, 0, SEEK_CUR);
117 assert(offset != -1);
118 offset = lseek(fd, -offset, SEEK_CUR);
121 p2 = talloc_array(mem_ctx, struct ctdb_rec_buffer *, count);
124 for (i=0; i<count; i++) {
125 ret = ctdb_rec_buffer_read(fd, mem_ctx, &p2[i]);
131 for (i=0; i<count; i++) {
132 verify_ctdb_rec_buffer(&p1[i], p2[i]);
135 talloc_free(mem_ctx);
138 int main(int argc, char *argv[])
141 int seed = atoi(argv[1]);
145 TEST_FUNC(ctdb_tdb_data)();
146 TEST_FUNC(ctdb_tdb_datan)();
147 TEST_FUNC(ctdb_latency_counter)();
150 TEST_FUNC(ctdb_statistics)();
151 TEST_FUNC(ctdb_vnn_map)();
152 TEST_FUNC(ctdb_dbid)();
153 TEST_FUNC(ctdb_dbid_map)();
154 TEST_FUNC(ctdb_pulldb)();
155 TEST_FUNC(ctdb_pulldb_ext)();
156 TEST_FUNC(ctdb_ltdb_header)();
157 TEST_FUNC(ctdb_rec_data)();
158 TEST_FUNC(ctdb_rec_buffer)();
159 TEST_FUNC(ctdb_traverse_start)();
160 TEST_FUNC(ctdb_traverse_all)();
161 TEST_FUNC(ctdb_traverse_start_ext)();
162 TEST_FUNC(ctdb_traverse_all_ext)();
163 TEST_FUNC(ctdb_sock_addr)();
164 TEST_FUNC(ctdb_connection)();
165 TEST_FUNC(ctdb_tunable)();
166 TEST_FUNC(ctdb_node_flag_change)();
167 TEST_FUNC(ctdb_var_list)();
168 TEST_FUNC(ctdb_tunable_list)();
169 TEST_FUNC(ctdb_tickle_list)();
170 TEST_FUNC(ctdb_addr_info)();
171 TEST_FUNC(ctdb_transdb)();
172 TEST_FUNC(ctdb_uptime)();
173 TEST_FUNC(ctdb_public_ip)();
174 TEST_FUNC(ctdb_public_ip_list)();
175 TEST_FUNC(ctdb_node_and_flags)();
176 TEST_FUNC(ctdb_node_map)();
177 TEST_FUNC(ctdb_script)();
178 TEST_FUNC(ctdb_script_list)();
179 TEST_FUNC(ctdb_ban_state)();
180 TEST_FUNC(ctdb_notify_data)();
181 TEST_FUNC(ctdb_iface)();
182 TEST_FUNC(ctdb_iface_list)();
183 TEST_FUNC(ctdb_public_ip_info)();
184 TEST_FUNC(ctdb_statistics_list)();
185 TEST_FUNC(ctdb_key_data)();
186 TEST_FUNC(ctdb_db_statistics)();
187 TEST_FUNC(ctdb_election_message)();
188 TEST_FUNC(ctdb_srvid_message)();
189 TEST_FUNC(ctdb_disable_message)();
190 TEST_FUNC(ctdb_g_lock_list)();
192 test_ctdb_rec_buffer_read_write();