This source file includes following definitions.
- setup_test
- teardown_test
- bad_arguments
- unknown_ticket
- all_tickets
- single_ticket
1
2
3
4
5
6
7
8
9
10 #include <crm_internal.h>
11
12 #include <crm/cib/internal.h>
13 #include <crm/common/unittest_internal.h>
14 #include <crm/common/xml.h>
15 #include <pacemaker.h>
16
17 #include <libxml/xpath.h>
18
19 static char *cib_path = NULL;
20
21 static int
22 setup_test(void **state)
23 {
24 cib_path = pcmk__cib_test_copy_cib("tickets.xml");
25
26 if (cib_path == NULL) {
27 return -1;
28 }
29
30 return 0;
31 }
32
33 static int
34 teardown_test(void **state)
35 {
36 pcmk__cib_test_cleanup(cib_path);
37 cib_path = NULL;
38 return 0;
39 }
40
41 static void
42 bad_arguments(void **state)
43 {
44 assert_int_equal(pcmk_ticket_info(NULL, "ticketA"), EINVAL);
45 }
46
47 static void
48 unknown_ticket(void **state)
49 {
50 xmlNode *xml = NULL;
51
52 assert_int_equal(pcmk_ticket_info(&xml, "XYZ"), ENXIO);
53 pcmk__assert_validates(xml);
54 pcmk__xml_free(xml);
55 }
56
57 static void
58 all_tickets(void **state)
59 {
60 xmlNode *node = NULL;
61 xmlXPathObject *xpath_obj = NULL;
62 xmlNode *xml = NULL;
63
64 assert_int_equal(pcmk_ticket_info(&xml, NULL), pcmk_rc_ok);
65 pcmk__assert_validates(xml);
66
67
68
69
70
71
72 xpath_obj = pcmk__xpath_search(xml->doc,
73 "//" PCMK_XE_PACEMAKER_RESULT
74 "/" PCMK_XE_TICKETS "/" PCMK_XE_TICKET);
75 assert_int_equal(pcmk__xpath_num_results(xpath_obj), 3);
76 xmlXPathFreeObject(xpath_obj);
77
78 xpath_obj = pcmk__xpath_search(xml->doc,
79 "//" PCMK_XE_PACEMAKER_RESULT
80 "/" PCMK_XE_TICKETS "/" PCMK_XE_TICKET
81 "[@" PCMK_XA_ID "=\"ticketA\"]");
82
83 node = pcmk__xpath_result(xpath_obj, 0);
84 assert_non_null(node);
85 assert_string_equal(crm_element_value(node, PCMK_XA_STATUS), PCMK_VALUE_REVOKED);
86 assert_string_equal(crm_element_value(node, PCMK__XA_GRANTED), "false");
87 assert_string_equal(crm_element_value(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE);
88 assert_string_equal(crm_element_value(node, "owner"), "1");
89 xmlXPathFreeObject(xpath_obj);
90
91 xpath_obj = pcmk__xpath_search(xml->doc,
92 "//" PCMK_XE_PACEMAKER_RESULT
93 "/" PCMK_XE_TICKETS "/" PCMK_XE_TICKET
94 "[@" PCMK_XA_ID "=\"ticketB\"]");
95
96 node = pcmk__xpath_result(xpath_obj, 0);
97 assert_non_null(node);
98 assert_string_equal(crm_element_value(node, PCMK_XA_STATUS), PCMK_VALUE_GRANTED);
99 assert_string_equal(crm_element_value(node, PCMK__XA_GRANTED), "true");
100 assert_string_equal(crm_element_value(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE);
101 assert_null(crm_element_value(node, "owner"));
102 xmlXPathFreeObject(xpath_obj);
103
104 xpath_obj = pcmk__xpath_search(xml->doc,
105 "//" PCMK_XE_PACEMAKER_RESULT
106 "/" PCMK_XE_TICKETS "/" PCMK_XE_TICKET
107 "[@" PCMK_XA_ID "=\"ticketC\"]");
108
109 node = pcmk__xpath_result(xpath_obj, 0);
110 assert_non_null(node);
111 assert_string_equal(crm_element_value(node, PCMK_XA_STATUS), PCMK_VALUE_GRANTED);
112 assert_string_equal(crm_element_value(node, PCMK__XA_GRANTED), "true");
113 assert_string_equal(crm_element_value(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE);
114 assert_null(crm_element_value(node, "owner"));
115
116 xmlXPathFreeObject(xpath_obj);
117 pcmk__xml_free(xml);
118 }
119
120 static void
121 single_ticket(void **state)
122 {
123 xmlNode *node = NULL;
124 xmlXPathObject *xpath_obj = NULL;
125 xmlNode *xml = NULL;
126
127 assert_int_equal(pcmk_ticket_info(&xml, "ticketA"), pcmk_rc_ok);
128 pcmk__assert_validates(xml);
129
130
131
132
133 xpath_obj = pcmk__xpath_search(xml->doc,
134 "//" PCMK_XE_PACEMAKER_RESULT
135 "/" PCMK_XE_TICKETS "/" PCMK_XE_TICKET
136 "[@" PCMK_XA_ID "=\"ticketA\"]");
137 assert_int_equal(pcmk__xpath_num_results(xpath_obj), 1);
138
139 node = pcmk__xpath_result(xpath_obj, 0);
140 assert_non_null(node);
141 assert_string_equal(crm_element_value(node, PCMK_XA_STATUS), PCMK_VALUE_REVOKED);
142 assert_string_equal(crm_element_value(node, PCMK__XA_GRANTED), "false");
143 assert_string_equal(crm_element_value(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE);
144 assert_string_equal(crm_element_value(node, "owner"), "1");
145
146 xmlXPathFreeObject(xpath_obj);
147 pcmk__xml_free(xml);
148 }
149
150 PCMK__UNIT_TEST(pcmk__xml_test_setup_group, pcmk__xml_test_teardown_group,
151 cmocka_unit_test_setup_teardown(bad_arguments, setup_test, teardown_test),
152 cmocka_unit_test_setup_teardown(unknown_ticket, setup_test, teardown_test),
153 cmocka_unit_test_setup_teardown(all_tickets, setup_test, teardown_test),
154 cmocka_unit_test_setup_teardown(single_ticket, setup_test, teardown_test))