This source file includes following definitions.
- setup
- teardown
- bad_args
- primitive_rsc
- group_rsc
- clone_rsc
- bundle_rsc
1
2
3
4
5
6
7
8
9
10 #include <crm_internal.h>
11
12 #include <crm/common/unittest_internal.h>
13
14 #include <crm/common/xml.h>
15 #include <crm/common/scheduler.h>
16 #include <crm/pengine/internal.h>
17 #include <crm/pengine/status.h>
18
19 xmlNode *input = NULL;
20 pcmk_scheduler_t *scheduler = NULL;
21
22 pcmk_resource_t *exim_group, *promotable_0, *promotable_1, *dummy;
23 pcmk_resource_t *httpd_bundle, *mysql_group_0, *mysql_group_1;
24
25 static int
26 setup(void **state) {
27 char *path = NULL;
28
29 pcmk__xml_init();
30
31 path = crm_strdup_printf("%s/crm_mon.xml", getenv("PCMK_CTS_CLI_DIR"));
32 input = pcmk__xml_read(path);
33 free(path);
34
35 if (input == NULL) {
36 return 1;
37 }
38
39 scheduler = pe_new_working_set();
40
41 if (scheduler == NULL) {
42 return 1;
43 }
44
45 pcmk__set_scheduler_flags(scheduler, pcmk__sched_no_counts);
46 scheduler->input = input;
47
48 cluster_status(scheduler);
49
50
51 for (GList *iter = scheduler->priv->resources;
52 iter != NULL; iter = iter->next) {
53
54 pcmk_resource_t *rsc = (pcmk_resource_t *) iter->data;
55
56 if (strcmp(rsc->id, "dummy") == 0) {
57 dummy = rsc;
58
59 } else if (strcmp(rsc->id, "exim-group") == 0) {
60 exim_group = rsc;
61
62 } else if (strcmp(rsc->id, "httpd-bundle") == 0) {
63 httpd_bundle = rsc;
64
65 } else if (strcmp(rsc->id, "mysql-clone-group") == 0) {
66 for (GList *iter = rsc->priv->children;
67 iter != NULL; iter = iter->next) {
68
69 pcmk_resource_t *child = (pcmk_resource_t *) iter->data;
70
71 if (strcmp(child->id, "mysql-group:0") == 0) {
72 mysql_group_0 = child;
73 } else if (strcmp(child->id, "mysql-group:1") == 0) {
74 mysql_group_1 = child;
75 }
76 }
77
78 } else if (strcmp(rsc->id, "promotable-clone") == 0) {
79 for (GList *iter = rsc->priv->children;
80 iter != NULL; iter = iter->next) {
81
82 pcmk_resource_t *child = (pcmk_resource_t *) iter->data;
83
84 if (strcmp(child->id, "promotable-rsc:0") == 0) {
85 promotable_0 = child;
86 } else if (strcmp(child->id, "promotable-rsc:1") == 0) {
87 promotable_1 = child;
88 }
89 }
90 }
91 }
92
93 return 0;
94 }
95
96 static int
97 teardown(void **state) {
98 pe_free_working_set(scheduler);
99 pcmk__xml_cleanup();
100 return 0;
101 }
102
103 static void
104 bad_args(void **state) {
105 char *id = dummy->id;
106
107 assert_false(pe_base_name_eq(NULL, "dummy"));
108 assert_false(pe_base_name_eq(dummy, NULL));
109
110 dummy->id = NULL;
111 assert_false(pe_base_name_eq(dummy, "dummy"));
112 dummy->id = id;
113 }
114
115 static void
116 primitive_rsc(void **state) {
117 assert_true(pe_base_name_eq(dummy, "dummy"));
118 assert_false(pe_base_name_eq(dummy, "DUMMY"));
119 assert_false(pe_base_name_eq(dummy, "dUmMy"));
120 assert_false(pe_base_name_eq(dummy, "dummy0"));
121 assert_false(pe_base_name_eq(dummy, "dummy:0"));
122 }
123
124 static void
125 group_rsc(void **state) {
126 assert_true(pe_base_name_eq(exim_group, "exim-group"));
127 assert_false(pe_base_name_eq(exim_group, "EXIM-GROUP"));
128 assert_false(pe_base_name_eq(exim_group, "exim-group0"));
129 assert_false(pe_base_name_eq(exim_group, "exim-group:0"));
130 assert_false(pe_base_name_eq(exim_group, "Public-IP"));
131 }
132
133 static void
134 clone_rsc(void **state) {
135 assert_true(pe_base_name_eq(promotable_0, "promotable-rsc"));
136 assert_true(pe_base_name_eq(promotable_1, "promotable-rsc"));
137
138 assert_false(pe_base_name_eq(promotable_0, "promotable-rsc:0"));
139 assert_false(pe_base_name_eq(promotable_1, "promotable-rsc:1"));
140 assert_false(pe_base_name_eq(promotable_0, "PROMOTABLE-RSC"));
141 assert_false(pe_base_name_eq(promotable_1, "PROMOTABLE-RSC"));
142 assert_false(pe_base_name_eq(promotable_0, "Promotable-rsc"));
143 assert_false(pe_base_name_eq(promotable_1, "Promotable-rsc"));
144 }
145
146 static void
147 bundle_rsc(void **state) {
148 assert_true(pe_base_name_eq(httpd_bundle, "httpd-bundle"));
149 assert_false(pe_base_name_eq(httpd_bundle, "HTTPD-BUNDLE"));
150 assert_false(pe_base_name_eq(httpd_bundle, "httpd"));
151 assert_false(pe_base_name_eq(httpd_bundle, "httpd-docker-0"));
152 }
153
154 PCMK__UNIT_TEST(setup, teardown,
155 cmocka_unit_test(bad_args),
156 cmocka_unit_test(primitive_rsc),
157 cmocka_unit_test(group_rsc),
158 cmocka_unit_test(clone_rsc),
159 cmocka_unit_test(bundle_rsc))