27 .rsc_provider =
"heartbeat",
28 .rsc_agent =
"IPaddr2",
39assert_rsc_expression(
const char *xml_string,
int reference_rc)
53#define EXPR_ALL_MATCH \
54 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
55 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
56 PCMK_XA_PROVIDER "='heartbeat' " \
57 PCMK_XA_TYPE "='IPaddr2' />"
60null_invalid(
void **state)
70 assert_rsc_expression(NULL, EINVAL);
78#define EXPR_ID_MISSING \
79 "<" PCMK_XE_RSC_EXPRESSION " " \
80 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
81 PCMK_XA_PROVIDER "='heartbeat' " \
82 PCMK_XA_TYPE "='IPaddr2' />"
84#define EXPR_ID_EMPTY \
85 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='' " \
86 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
87 PCMK_XA_PROVIDER "='heartbeat' " \
88 PCMK_XA_TYPE "='IPaddr2' />"
91id_missing(
void **state)
102#define EXPR_FAIL_STANDARD \
103 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
104 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_LSB "' />"
106#define EXPR_EMPTY_STANDARD \
107 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
108 PCMK_XA_CLASS "='' />"
111fail_standard(
void **state)
122#define EXPR_FAIL_PROVIDER \
123 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
124 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
125 PCMK_XA_PROVIDER "='pacemaker' " \
126 PCMK_XA_TYPE "='IPaddr2' />"
128#define EXPR_EMPTY_PROVIDER \
129 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
130 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
131 PCMK_XA_PROVIDER "='' " PCMK_XA_TYPE "='IPaddr2' />"
134fail_provider(
void **state)
145#define EXPR_FAIL_AGENT \
146 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
147 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
148 PCMK_XA_PROVIDER "='heartbeat' " \
149 PCMK_XA_TYPE "='IPaddr3' />"
151#define EXPR_EMPTY_AGENT \
152 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
153 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
154 PCMK_XA_PROVIDER "='heartbeat' " PCMK_XA_TYPE "='' />"
157fail_agent(
void **state)
168#define EXPR_NO_STANDARD_MATCHES \
169 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
170 PCMK_XA_PROVIDER "='heartbeat' " \
171 PCMK_XA_TYPE "='IPaddr2' />"
174no_standard_matches(
void **state)
179#define EXPR_NO_PROVIDER_MATCHES \
180 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
181 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
182 PCMK_XA_TYPE "='IPaddr2' />"
185no_provider_matches(
void **state)
190#define EXPR_NO_AGENT_MATCHES \
191 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' " \
192 PCMK_XA_CLASS "='" PCMK_RESOURCE_CLASS_OCF "' " \
193 PCMK_XA_PROVIDER "='heartbeat' />"
196no_agent_matches(
void **state)
201#define EXPR_NO_CRITERIA_MATCHES \
202 "<" PCMK_XE_RSC_EXPRESSION " " PCMK_XA_ID "='e' />"
205no_criteria_matches(
void **state)
211all_match(
void **state)
217 cmocka_unit_test(null_invalid),
218 cmocka_unit_test(id_missing),
219 cmocka_unit_test(fail_standard),
220 cmocka_unit_test(fail_provider),
221 cmocka_unit_test(fail_agent),
222 cmocka_unit_test(no_standard_matches),
223 cmocka_unit_test(no_provider_matches),
224 cmocka_unit_test(no_agent_matches),
225 cmocka_unit_test(no_criteria_matches),
226 cmocka_unit_test(all_match))
#define PCMK_RESOURCE_CLASS_OCF
G_GNUC_INTERNAL int pcmk__evaluate_rsc_expression(const xmlNode *expr, const pcmk_rule_input_t *rule_input)
#define EXPR_NO_STANDARD_MATCHES
#define EXPR_EMPTY_STANDARD
#define EXPR_EMPTY_PROVIDER
#define EXPR_FAIL_STANDARD
#define EXPR_NO_PROVIDER_MATCHES
#define EXPR_NO_AGENT_MATCHES
#define EXPR_NO_CRITERIA_MATCHES
#define EXPR_FAIL_PROVIDER
int pcmk__xml_test_teardown_group(void **state)
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
int pcmk__xml_test_setup_group(void **state)
Wrappers for and extensions to libxml2.
void pcmk__xml_free(xmlNode *xml)
xmlNode * pcmk__xml_parse(const char *input)