This source file includes following definitions.
- invalid_arguments
- optional_arguments_null
- optional_arguments_nonnull
1
2
3
4
5
6
7
8
9
10 #include <crm_internal.h>
11
12 #include <stdio.h>
13 #include <libxml/tree.h>
14
15 #include <crm/common/ipc.h>
16 #include <crm/common/nvpair.h>
17 #include <crm/common/messages_internal.h>
18 #include <crm/common/servers_internal.h>
19 #include <crm/common/xml_internal.h>
20
21 #include <crm/common/unittest_internal.h>
22
23 static void
24 invalid_arguments(void **state)
25 {
26 xmlNode *data = pcmk__xe_create(NULL, "x");
27
28 assert_null(pcmk__new_message_as(NULL, pcmk_ipc_controld, "x", "x", "x",
29 "x", "x", data));
30 assert_null(pcmk__new_message_as("x", pcmk_ipc_controld, "x", NULL, "x",
31 "x", "x", data));
32 assert_null(pcmk__new_message_as("x", pcmk_ipc_controld, "x", "x", "x", "x",
33 NULL, data));
34 pcmk__xml_free(data);
35 }
36
37 static void
38 optional_arguments_null(void **state)
39 {
40 xmlNode *message = NULL;
41
42 message = pcmk__new_message_as("fn", pcmk_ipc_controld, NULL, "ss", NULL,
43 NULL, "op", NULL);
44 assert_non_null(message);
45 assert_string_equal(crm_element_value(message, PCMK_XA_ORIGIN), "fn");
46 assert_string_equal(crm_element_value(message, PCMK__XA_T),
47 pcmk__server_message_type(pcmk_ipc_controld));
48 assert_string_equal(crm_element_value(message, PCMK__XA_SUBT),
49 PCMK__VALUE_REQUEST);
50 assert_string_equal(crm_element_value(message, PCMK_XA_VERSION),
51 CRM_FEATURE_SET);
52 assert_non_null(crm_element_value(message, PCMK_XA_REFERENCE));
53 assert_string_equal(crm_element_value(message, PCMK__XA_CRM_SYS_FROM),
54 "ss");
55 assert_null(crm_element_value(message, PCMK__XA_CRM_HOST_TO));
56 assert_null(crm_element_value(message, PCMK__XA_CRM_SYS_TO));
57 assert_string_equal(crm_element_value(message, PCMK__XA_CRM_TASK), "op");
58 assert_null(message->children);
59 pcmk__xml_free(message);
60 }
61
62 static void
63 optional_arguments_nonnull(void **state)
64 {
65 xmlNode *message = NULL;
66 xmlNode *data = pcmk__xe_create(NULL, "x");
67
68 message = pcmk__new_message_as("fn", pcmk_ipc_controld, "rt", "ss", "node1",
69 "rs", "op", data);
70 pcmk__xml_free(data);
71
72 assert_non_null(message);
73 assert_string_equal(crm_element_value(message, PCMK_XA_REFERENCE), "rt");
74 assert_string_equal(crm_element_value(message, PCMK__XA_CRM_HOST_TO),
75 "node1");
76 assert_string_equal(crm_element_value(message, PCMK__XA_CRM_SYS_TO), "rs");
77 assert_non_null(message->children);
78 assert_null(message->children->next);
79 assert_string_equal((const char *) (message->children->name),
80 PCMK__XE_CRM_XML);
81 assert_non_null(message->children->children);
82 assert_null(message->children->children->next);
83 assert_string_equal((const char *) (message->children->children->name),
84 "x");
85 pcmk__xml_free(message);
86 }
87
88 PCMK__UNIT_TEST(NULL, NULL,
89 cmocka_unit_test(invalid_arguments),
90 cmocka_unit_test(optional_arguments_null),
91 cmocka_unit_test(optional_arguments_nonnull))