pacemaker 2.1.5-a3f44794f94
Scalable High-Availability cluster resource manager
pcmk_xe_mask_probe_failure_test.c
Go to the documentation of this file.
1/*
2 * Copyright 2021 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 Lesser General Public License
7 * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
8 */
9
10#include <crm_internal.h>
11
13
14static void
15op_is_not_probe_test(void **state) {
16 xmlNode *node = NULL;
17
18 /* Not worth testing this thoroughly since it's just a duplicate of whether
19 * pcmk_op_is_probe works or not.
20 */
21
22 node = string2xml("<lrm_rsc_op operation=\"start\" interval=\"0\"/>");
23 assert_false(pcmk_xe_mask_probe_failure(node));
24 free_xml(node);
25}
26
27static void
28op_does_not_have_right_values_test(void **state) {
29 xmlNode *node = NULL;
30
31 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\"/>");
32 assert_false(pcmk_xe_mask_probe_failure(node));
33 free_xml(node);
34
35 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"0\" op-status=\"\"/>");
36 assert_false(pcmk_xe_mask_probe_failure(node));
37 free_xml(node);
38}
39
40static void
41check_values_test(void **state) {
42 xmlNode *node = NULL;
43
44 /* PCMK_EXEC_NOT_SUPPORTED */
45 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"0\" op-status=\"3\"/>");
46 assert_false(pcmk_xe_mask_probe_failure(node));
47 free_xml(node);
48
49 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"5\" op-status=\"3\"/>");
50 assert_true(pcmk_xe_mask_probe_failure(node));
51 free_xml(node);
52
53 /* PCMK_EXEC_DONE */
54 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"0\" op-status=\"0\"/>");
55 assert_false(pcmk_xe_mask_probe_failure(node));
56 free_xml(node);
57
58 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"2\" op-status=\"0\"/>");
59 assert_true(pcmk_xe_mask_probe_failure(node));
60 free_xml(node);
61
62 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"5\" op-status=\"0\"/>");
63 assert_true(pcmk_xe_mask_probe_failure(node));
64 free_xml(node);
65
66 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"6\" op-status=\"0\"/>");
67 assert_false(pcmk_xe_mask_probe_failure(node));
68 free_xml(node);
69
70 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"7\" op-status=\"0\"/>");
71 assert_false(pcmk_xe_mask_probe_failure(node));
72 free_xml(node);
73
74 /* PCMK_EXEC_NOT_INSTALLED */
75 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"0\" op-status=\"7\"/>");
76 assert_true(pcmk_xe_mask_probe_failure(node));
77 free_xml(node);
78
79 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"5\" op-status=\"7\"/>");
80 assert_true(pcmk_xe_mask_probe_failure(node));
81 free_xml(node);
82
83 /* PCMK_EXEC_ERROR */
84 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"0\" op-status=\"4\"/>");
85 assert_false(pcmk_xe_mask_probe_failure(node));
86 free_xml(node);
87
88 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"2\" op-status=\"4\"/>");
89 assert_true(pcmk_xe_mask_probe_failure(node));
90 free_xml(node);
91
92 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"5\" op-status=\"4\"/>");
93 assert_true(pcmk_xe_mask_probe_failure(node));
94 free_xml(node);
95
96 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"6\" op-status=\"4\"/>");
97 assert_false(pcmk_xe_mask_probe_failure(node));
98 free_xml(node);
99
100 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"7\" op-status=\"4\"/>");
101 assert_false(pcmk_xe_mask_probe_failure(node));
102 free_xml(node);
103
104 /* PCMK_EXEC_ERROR_HARD */
105 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"0\" op-status=\"5\"/>");
106 assert_false(pcmk_xe_mask_probe_failure(node));
107 free_xml(node);
108
109 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"2\" op-status=\"5\"/>");
110 assert_true(pcmk_xe_mask_probe_failure(node));
111 free_xml(node);
112
113 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"5\" op-status=\"5\"/>");
114 assert_true(pcmk_xe_mask_probe_failure(node));
115 free_xml(node);
116
117 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"6\" op-status=\"5\"/>");
118 assert_false(pcmk_xe_mask_probe_failure(node));
119 free_xml(node);
120
121 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"7\" op-status=\"5\"/>");
122 assert_false(pcmk_xe_mask_probe_failure(node));
123 free_xml(node);
124
125 /* PCMK_EXEC_ERROR_FATAL */
126 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"0\" op-status=\"6\"/>");
127 assert_false(pcmk_xe_mask_probe_failure(node));
128 free_xml(node);
129
130 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"2\" op-status=\"6\"/>");
131 assert_true(pcmk_xe_mask_probe_failure(node));
132 free_xml(node);
133
134 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"5\" op-status=\"6\"/>");
135 assert_true(pcmk_xe_mask_probe_failure(node));
136 free_xml(node);
137
138 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"6\" op-status=\"6\"/>");
139 assert_false(pcmk_xe_mask_probe_failure(node));
140 free_xml(node);
141
142 node = string2xml("<lrm_rsc_op operation=\"monitor\" interval=\"0\" rc-code=\"7\" op-status=\"6\"/>");
143 assert_false(pcmk_xe_mask_probe_failure(node));
144 free_xml(node);
145}
146
147PCMK__UNIT_TEST(NULL, NULL,
148 cmocka_unit_test(op_is_not_probe_test),
149 cmocka_unit_test(op_does_not_have_right_values_test),
150 cmocka_unit_test(check_values_test))
bool pcmk_xe_mask_probe_failure(xmlNode *xml_op)
Definition: operations.c:562
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
xmlNode * string2xml(const char *input)
Definition: xml.c:930
void free_xml(xmlNode *child)
Definition: xml.c:885