pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
pcmk_xe_mask_probe_failure_test.c
Go to the documentation of this file.
1/*
2 * Copyright 2021-2024 the Pacemaker project contributors
3 *
4 * The version control history for this file may have further details.
5 *
6 * This source code is licensed under the GNU General Public License version 2
7 * or later (GPLv2+) WITHOUT ANY WARRANTY.
8 */
9
10#include <crm_internal.h>
11
12#include <crm/common/probes.h>
14
15static void
16op_is_not_probe_test(void **state) {
17 xmlNode *node = NULL;
18
19 /* Not worth testing this thoroughly since it's just a duplicate of whether
20 * pcmk_op_is_probe works or not.
21 */
22
25 "=\"" PCMK_ACTION_START "\" "
26 PCMK_META_INTERVAL "=\"0\"/>");
27 assert_false(pcmk_xe_mask_probe_failure(node));
28 pcmk__xml_free(node);
29}
30
31static void
32op_does_not_have_right_values_test(void **state) {
33 xmlNode *node = NULL;
34 char *s = NULL;
35
38 "=\"" PCMK_ACTION_MONITOR "\" "
39 PCMK_META_INTERVAL "=\"0\"/>");
40 assert_false(pcmk_xe_mask_probe_failure(node));
41 pcmk__xml_free(node);
42
45 PCMK_META_INTERVAL "=\"0\" "
46 PCMK__XA_RC_CODE "=\"%d\" "
47 PCMK__XA_OP_STATUS "=\"\"/>",
49 node = pcmk__xml_parse(s);
50 assert_false(pcmk_xe_mask_probe_failure(node));
51 free(s);
52 pcmk__xml_free(node);
53}
54
55static void
56check_values_test(void **state) {
57 xmlNode *node = NULL;
58 char *s = NULL;
59
60 /* PCMK_EXEC_NOT_SUPPORTED */
63 PCMK_META_INTERVAL "=\"0\" "
64 PCMK__XA_RC_CODE "=\"%d\" "
65 PCMK__XA_OP_STATUS "=\"%d\"/>",
67 node = pcmk__xml_parse(s);
68 assert_false(pcmk_xe_mask_probe_failure(node));
69 free(s);
70 pcmk__xml_free(node);
71
74 PCMK_META_INTERVAL "=\"0\" "
75 PCMK__XA_RC_CODE "=\"%d\" "
76 PCMK__XA_OP_STATUS "=\"%d\"/>",
78 node = pcmk__xml_parse(s);
79 assert_true(pcmk_xe_mask_probe_failure(node));
80 free(s);
81 pcmk__xml_free(node);
82
83 /* PCMK_EXEC_DONE */
86 PCMK_META_INTERVAL "=\"0\" "
87 PCMK__XA_RC_CODE "=\"%d\" "
88 PCMK__XA_OP_STATUS "=\"%d\"/>",
90 node = pcmk__xml_parse(s);
91 assert_false(pcmk_xe_mask_probe_failure(node));
92 free(s);
93 pcmk__xml_free(node);
94
97 PCMK_META_INTERVAL "=\"0\" "
98 PCMK__XA_RC_CODE "=\"%d\" "
99 PCMK__XA_OP_STATUS "=\"%d\"/>",
101 node = pcmk__xml_parse(s);
102 assert_true(pcmk_xe_mask_probe_failure(node));
103 free(s);
104 pcmk__xml_free(node);
105
108 PCMK_META_INTERVAL "=\"0\" "
109 PCMK__XA_RC_CODE "=\"%d\" "
110 PCMK__XA_OP_STATUS "=\"%d\"/>",
112 node = pcmk__xml_parse(s);
113 assert_true(pcmk_xe_mask_probe_failure(node));
114 free(s);
115 pcmk__xml_free(node);
116
119 PCMK_META_INTERVAL "=\"0\" "
120 PCMK__XA_RC_CODE "=\"%d\" "
121 PCMK__XA_OP_STATUS "=\"%d\"/>",
123 node = pcmk__xml_parse(s);
124 assert_false(pcmk_xe_mask_probe_failure(node));
125 free(s);
126 pcmk__xml_free(node);
127
130 PCMK_META_INTERVAL "=\"0\" "
131 PCMK__XA_RC_CODE "=\"%d\" "
132 PCMK__XA_OP_STATUS "=\"%d\"/>",
134 node = pcmk__xml_parse(s);
135 assert_false(pcmk_xe_mask_probe_failure(node));
136 free(s);
137 pcmk__xml_free(node);
138
139 /* PCMK_EXEC_NOT_INSTALLED */
142 PCMK_META_INTERVAL "=\"0\" "
143 PCMK__XA_RC_CODE "=\"%d\" "
144 PCMK__XA_OP_STATUS "=\"%d\"/>",
146 node = pcmk__xml_parse(s);
147 assert_true(pcmk_xe_mask_probe_failure(node));
148 free(s);
149 pcmk__xml_free(node);
150
153 PCMK_META_INTERVAL "=\"0\" "
154 PCMK__XA_RC_CODE "=\"%d\" "
155 PCMK__XA_OP_STATUS "=\"%d\"/>",
157 node = pcmk__xml_parse(s);
158 assert_true(pcmk_xe_mask_probe_failure(node));
159 free(s);
160 pcmk__xml_free(node);
161
162 /* PCMK_EXEC_ERROR */
165 PCMK_META_INTERVAL "=\"0\" "
166 PCMK__XA_RC_CODE "=\"%d\" "
167 PCMK__XA_OP_STATUS "=\"%d\"/>",
169 node = pcmk__xml_parse(s);
170 assert_false(pcmk_xe_mask_probe_failure(node));
171 free(s);
172 pcmk__xml_free(node);
173
176 PCMK_META_INTERVAL "=\"0\" "
177 PCMK__XA_RC_CODE "=\"%d\" "
178 PCMK__XA_OP_STATUS "=\"%d\"/>",
180 node = pcmk__xml_parse(s);
181 assert_true(pcmk_xe_mask_probe_failure(node));
182 free(s);
183 pcmk__xml_free(node);
184
187 PCMK_META_INTERVAL "=\"0\" "
188 PCMK__XA_RC_CODE "=\"%d\" "
189 PCMK__XA_OP_STATUS "=\"%d\"/>",
191 node = pcmk__xml_parse(s);
192 assert_true(pcmk_xe_mask_probe_failure(node));
193 free(s);
194 pcmk__xml_free(node);
195
198 PCMK_META_INTERVAL "=\"0\" "
199 PCMK__XA_RC_CODE "=\"%d\" "
200 PCMK__XA_OP_STATUS "=\"%d\"/>",
202 node = pcmk__xml_parse(s);
203 assert_false(pcmk_xe_mask_probe_failure(node));
204 free(s);
205 pcmk__xml_free(node);
206
209 PCMK_META_INTERVAL "=\"0\" "
210 PCMK__XA_RC_CODE "=\"%d\" "
211 PCMK__XA_OP_STATUS "=\"%d\"/>",
213 node = pcmk__xml_parse(s);
214 assert_false(pcmk_xe_mask_probe_failure(node));
215 free(s);
216 pcmk__xml_free(node);
217
218 /* PCMK_EXEC_ERROR_HARD */
221 PCMK_META_INTERVAL "=\"0\" "
222 PCMK__XA_RC_CODE "=\"%d\" "
223 PCMK__XA_OP_STATUS "=\"%d\"/>",
225 node = pcmk__xml_parse(s);
226 assert_false(pcmk_xe_mask_probe_failure(node));
227 free(s);
228 pcmk__xml_free(node);
229
232 PCMK_META_INTERVAL "=\"0\" "
233 PCMK__XA_RC_CODE "=\"%d\" "
234 PCMK__XA_OP_STATUS "=\"%d\"/>",
236 node = pcmk__xml_parse(s);
237 assert_true(pcmk_xe_mask_probe_failure(node));
238 free(s);
239 pcmk__xml_free(node);
240
243 PCMK_META_INTERVAL "=\"0\" "
244 PCMK__XA_RC_CODE "=\"%d\" "
245 PCMK__XA_OP_STATUS "=\"%d\"/>",
247 node = pcmk__xml_parse(s);
248 assert_true(pcmk_xe_mask_probe_failure(node));
249 free(s);
250 pcmk__xml_free(node);
251
254 PCMK_META_INTERVAL "=\"0\" "
255 PCMK__XA_RC_CODE "=\"%d\" "
256 PCMK__XA_OP_STATUS "=\"%d\"/>",
258 node = pcmk__xml_parse(s);
259 assert_false(pcmk_xe_mask_probe_failure(node));
260 free(s);
261 pcmk__xml_free(node);
262
265 PCMK_META_INTERVAL "=\"0\" "
266 PCMK__XA_RC_CODE "=\"%d\" "
267 PCMK__XA_OP_STATUS "=\"%d\"/>",
269 node = pcmk__xml_parse(s);
270 assert_false(pcmk_xe_mask_probe_failure(node));
271 free(s);
272 pcmk__xml_free(node);
273
274 /* PCMK_EXEC_ERROR_FATAL */
277 PCMK_META_INTERVAL "=\"0\" "
278 PCMK__XA_RC_CODE "=\"%d\" "
279 PCMK__XA_OP_STATUS "=\"%d\"/>",
281 node = pcmk__xml_parse(s);
282 assert_false(pcmk_xe_mask_probe_failure(node));
283 free(s);
284 pcmk__xml_free(node);
285
288 PCMK_META_INTERVAL "=\"0\" "
289 PCMK__XA_RC_CODE "=\"%d\" "
290 PCMK__XA_OP_STATUS "=\"%d\"/>",
292 node = pcmk__xml_parse(s);
293 assert_true(pcmk_xe_mask_probe_failure(node));
294 free(s);
295 pcmk__xml_free(node);
296
299 PCMK_META_INTERVAL "=\"0\" "
300 PCMK__XA_RC_CODE "=\"%d\" "
301 PCMK__XA_OP_STATUS "=\"%d\"/>",
303 node = pcmk__xml_parse(s);
304 assert_true(pcmk_xe_mask_probe_failure(node));
305 free(s);
306 pcmk__xml_free(node);
307
310 PCMK_META_INTERVAL "=\"0\" "
311 PCMK__XA_RC_CODE "=\"%d\" "
312 PCMK__XA_OP_STATUS "=\"%d\"/>",
314 node = pcmk__xml_parse(s);
315 assert_false(pcmk_xe_mask_probe_failure(node));
316 free(s);
317 pcmk__xml_free(node);
318
321 PCMK_META_INTERVAL "=\"0\" "
322 PCMK__XA_RC_CODE "=\"%d\" "
323 PCMK__XA_OP_STATUS "=\"%d\"/>",
325 node = pcmk__xml_parse(s);
326 assert_false(pcmk_xe_mask_probe_failure(node));
327 free(s);
328 pcmk__xml_free(node);
329}
330
332 cmocka_unit_test(op_is_not_probe_test),
333 cmocka_unit_test(op_does_not_have_right_values_test),
334 cmocka_unit_test(check_values_test))
#define PCMK_ACTION_START
Definition actions.h:63
#define PCMK_ACTION_MONITOR
Definition actions.h:51
#define PCMK_META_INTERVAL
Definition options.h:92
Scheduler API for probes.
bool pcmk_xe_mask_probe_failure(const xmlNode *xml_op)
Check whether an action history entry represents a maskable probe.
Definition probes.c:70
@ PCMK_OCF_NOT_CONFIGURED
Parameter invalid (inherently)
Definition results.h:183
@ PCMK_OCF_NOT_INSTALLED
Dependencies not available locally.
Definition results.h:182
@ PCMK_OCF_INVALID_PARAM
Parameter invalid (in local context)
Definition results.h:179
@ PCMK_OCF_NOT_RUNNING
Service safely stopped.
Definition results.h:186
@ PCMK_OCF_OK
Success.
Definition results.h:174
@ PCMK_EXEC_ERROR_FATAL
Execution failed, do not retry anywhere.
Definition results.h:317
@ PCMK_EXEC_NOT_INSTALLED
Agent or dependency not available locally.
Definition results.h:318
@ PCMK_EXEC_DONE
Action completed, result is known.
Definition results.h:311
@ PCMK_EXEC_ERROR
Execution failed, may be retried.
Definition results.h:315
@ PCMK_EXEC_NOT_SUPPORTED
Agent does not implement requested action.
Definition results.h:314
@ PCMK_EXEC_ERROR_HARD
Execution failed, do not retry on node.
Definition results.h:316
char * crm_strdup_printf(char const *format,...) G_GNUC_PRINTF(1
int pcmk__xml_test_teardown_group(void **state)
Definition unittest.c:105
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
int pcmk__xml_test_setup_group(void **state)
Definition unittest.c:87
void pcmk__xml_free(xmlNode *xml)
Definition xml.c:816
xmlNode * pcmk__xml_parse(const char *input)
Definition xml_io.c:167
#define PCMK_XA_OPERATION
Definition xml_names.h:349
#define PCMK__XE_LRM_RSC_OP
#define PCMK__XA_OP_STATUS
#define PCMK__XA_RC_CODE