2 protocol tests - eventd protocol
4 Copyright (C) Amitay Isaacs 2017
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/network.h"
25 #include "tests/src/protocol_common.h"
26 #include "tests/src/protocol_common_event.h"
29 * Functions to fill and verify eventd protocol structures
32 void fill_ctdb_event_request_run(TALLOC_CTX
*mem_ctx
,
33 struct ctdb_event_request_run
*p
)
35 p
->event
= rand_int(CTDB_EVENT_MAX
);
37 fill_ctdb_string(mem_ctx
, &p
->arg_str
);
40 void verify_ctdb_event_request_run(struct ctdb_event_request_run
*p1
,
41 struct ctdb_event_request_run
*p2
)
43 assert(p1
->event
== p2
->event
);
44 assert(p1
->timeout
== p2
->timeout
);
45 verify_ctdb_string(&p1
->arg_str
, &p2
->arg_str
);
48 void fill_ctdb_event_request_status(TALLOC_CTX
*mem_ctx
,
49 struct ctdb_event_request_status
*p
)
51 p
->event
= rand_int(CTDB_EVENT_MAX
);
52 p
->state
= rand_int(3) + 1;
55 void verify_ctdb_event_request_status(struct ctdb_event_request_status
*p1
,
56 struct ctdb_event_request_status
*p2
)
58 assert(p1
->event
== p2
->event
);
59 assert(p1
->state
== p2
->state
);
62 void fill_ctdb_event_request_script_enable(TALLOC_CTX
*mem_ctx
,
63 struct ctdb_event_request_script_enable
*p
)
65 fill_ctdb_string(mem_ctx
, &p
->script_name
);
68 void verify_ctdb_event_request_script_enable(
69 struct ctdb_event_request_script_enable
*p1
,
70 struct ctdb_event_request_script_enable
*p2
)
72 verify_ctdb_string(&p1
->script_name
, &p2
->script_name
);
75 void fill_ctdb_event_request_script_disable(TALLOC_CTX
*mem_ctx
,
76 struct ctdb_event_request_script_disable
*p
)
78 fill_ctdb_string(mem_ctx
, &p
->script_name
);
81 void verify_ctdb_event_request_script_disable(
82 struct ctdb_event_request_script_disable
*p1
,
83 struct ctdb_event_request_script_disable
*p2
)
85 verify_ctdb_string(&p1
->script_name
, &p2
->script_name
);
88 void fill_ctdb_event_reply_status(TALLOC_CTX
*mem_ctx
,
89 struct ctdb_event_reply_status
*p
)
91 if (rand_int(2) == 0) {
93 p
->script_list
= talloc(mem_ctx
, struct ctdb_script_list
);
94 assert(p
->script_list
!= NULL
);
95 fill_ctdb_script_list(mem_ctx
, p
->script_list
);
97 p
->status
= rand32i();
98 p
->script_list
= NULL
;
102 void verify_ctdb_event_reply_status(struct ctdb_event_reply_status
*p1
,
103 struct ctdb_event_reply_status
*p2
)
105 assert(p1
->status
== p2
->status
);
106 if (p1
->script_list
== NULL
) {
107 assert(p1
->script_list
== p2
->script_list
);
109 verify_ctdb_script_list(p1
->script_list
, p2
->script_list
);
113 void fill_ctdb_event_reply_script_list(TALLOC_CTX
*mem_ctx
,
114 struct ctdb_event_reply_script_list
*p
)
116 p
->script_list
= talloc(mem_ctx
, struct ctdb_script_list
);
117 assert(p
->script_list
!= NULL
);
119 fill_ctdb_script_list(mem_ctx
, p
->script_list
);
122 void verify_ctdb_event_reply_script_list(
123 struct ctdb_event_reply_script_list
*p1
,
124 struct ctdb_event_reply_script_list
*p2
)
126 verify_ctdb_script_list(p1
->script_list
, p2
->script_list
);
129 void fill_ctdb_event_request_data(TALLOC_CTX
*mem_ctx
,
130 struct ctdb_event_request_data
*r
,
133 r
->command
= command
;
136 case CTDB_EVENT_COMMAND_RUN
:
137 r
->data
.run
= talloc(mem_ctx
, struct ctdb_event_request_run
);
138 assert(r
->data
.run
!= NULL
);
140 fill_ctdb_event_request_run(mem_ctx
, r
->data
.run
);
143 case CTDB_EVENT_COMMAND_STATUS
:
144 r
->data
.status
= talloc(mem_ctx
,
145 struct ctdb_event_request_status
);
146 assert(r
->data
.status
!= NULL
);
148 fill_ctdb_event_request_status(mem_ctx
, r
->data
.status
);
151 case CTDB_EVENT_COMMAND_SCRIPT_LIST
:
154 case CTDB_EVENT_COMMAND_SCRIPT_ENABLE
:
155 r
->data
.script_enable
= talloc(mem_ctx
,
156 struct ctdb_event_request_script_enable
);
157 assert(r
->data
.script_enable
!= NULL
);
159 fill_ctdb_event_request_script_enable(mem_ctx
,
160 r
->data
.script_enable
);
163 case CTDB_EVENT_COMMAND_SCRIPT_DISABLE
:
164 r
->data
.script_disable
= talloc(mem_ctx
,
165 struct ctdb_event_request_script_disable
);
166 assert(r
->data
.script_disable
!= NULL
);
168 fill_ctdb_event_request_script_disable(mem_ctx
,
169 r
->data
.script_disable
);
174 void verify_ctdb_event_request_data(struct ctdb_event_request_data
*r
,
175 struct ctdb_event_request_data
*r2
)
177 assert(r
->command
== r2
->command
);
179 switch (r
->command
) {
180 case CTDB_EVENT_COMMAND_RUN
:
181 verify_ctdb_event_request_run(r
->data
.run
, r2
->data
.run
);
184 case CTDB_EVENT_COMMAND_STATUS
:
185 verify_ctdb_event_request_status(r
->data
.status
,
189 case CTDB_EVENT_COMMAND_SCRIPT_LIST
:
192 case CTDB_EVENT_COMMAND_SCRIPT_ENABLE
:
193 verify_ctdb_event_request_script_enable(r
->data
.script_enable
,
194 r2
->data
.script_enable
);
197 case CTDB_EVENT_COMMAND_SCRIPT_DISABLE
:
198 verify_ctdb_event_request_script_disable(r
->data
.script_disable
,
199 r2
->data
.script_disable
);
204 void fill_ctdb_event_reply_data(TALLOC_CTX
*mem_ctx
,
205 struct ctdb_event_reply_data
*r
,
208 r
->command
= command
;
209 r
->result
= rand32i();
212 case CTDB_EVENT_COMMAND_STATUS
:
213 r
->data
.status
= talloc(mem_ctx
,
214 struct ctdb_event_reply_status
);
215 assert(r
->data
.status
!= NULL
);
217 fill_ctdb_event_reply_status(mem_ctx
, r
->data
.status
);
220 case CTDB_EVENT_COMMAND_SCRIPT_LIST
:
221 r
->data
.script_list
= talloc(mem_ctx
,
222 struct ctdb_event_reply_script_list
);
223 assert(r
->data
.script_list
!= NULL
);
225 fill_ctdb_event_reply_script_list(mem_ctx
,
226 r
->data
.script_list
);
231 void verify_ctdb_event_reply_data(struct ctdb_event_reply_data
*r
,
232 struct ctdb_event_reply_data
*r2
)
234 assert(r
->command
== r2
->command
);
235 assert(r
->result
== r2
->result
);
237 switch (r
->command
) {
238 case CTDB_EVENT_COMMAND_RUN
:
241 case CTDB_EVENT_COMMAND_STATUS
:
242 verify_ctdb_event_reply_status(r
->data
.status
,
246 case CTDB_EVENT_COMMAND_SCRIPT_LIST
:
247 verify_ctdb_event_reply_script_list(r
->data
.script_list
,
248 r2
->data
.script_list
);
251 case CTDB_EVENT_COMMAND_SCRIPT_ENABLE
:
254 case CTDB_EVENT_COMMAND_SCRIPT_DISABLE
:
259 void fill_ctdb_event_request(TALLOC_CTX
*mem_ctx
,
260 struct ctdb_event_request
*r
, uint32_t command
)
262 fill_sock_packet_header(&r
->header
);
263 fill_ctdb_event_request_data(mem_ctx
, &r
->rdata
, command
);
266 void verify_ctdb_event_request(struct ctdb_event_request
*r
,
267 struct ctdb_event_request
*r2
)
269 verify_sock_packet_header(&r
->header
, &r2
->header
);
270 verify_ctdb_event_request_data(&r
->rdata
, &r2
->rdata
);
273 void fill_ctdb_event_reply(TALLOC_CTX
*mem_ctx
, struct ctdb_event_reply
*r
,
276 fill_sock_packet_header(&r
->header
);
277 fill_ctdb_event_reply_data(mem_ctx
, &r
->rdata
, command
);
280 void verify_ctdb_event_reply(struct ctdb_event_reply
*r
,
281 struct ctdb_event_reply
*r2
)
283 verify_sock_packet_header(&r
->header
, &r2
->header
);
284 verify_ctdb_event_reply_data(&r
->rdata
, &r2
->rdata
);