pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
pcmk__new_message_as_test.c
Go to the documentation of this file.
1/*
2 * Copyright 2024 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 General Public License version 2
7 * or later (GPLv2+) WITHOUT ANY WARRANTY.
8 */
9
10#include <crm_internal.h>
11
12#include <stdio.h> // NULL
13#include <libxml/tree.h> // xmlNode
14
15#include <crm/common/ipc.h> // pcmk_ipc_controld
16#include <crm/common/nvpair.h> // crm_element_value()
17#include <crm/common/messages_internal.h> // pcmk__new_message_as()
18#include <crm/common/servers_internal.h> // pcmk__server_message_type()
19#include <crm/common/xml_internal.h> // pcmk__xe_create(), etc.
20
22
23static void
24invalid_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));
35}
36
37static void
38optional_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),
48 assert_string_equal(crm_element_value(message, PCMK__XA_SUBT),
50 assert_string_equal(crm_element_value(message, PCMK_XA_VERSION),
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
62static void
63optional_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);
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),
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
88PCMK__UNIT_TEST(NULL, NULL,
89 cmocka_unit_test(invalid_arguments),
90 cmocka_unit_test(optional_arguments_null),
91 cmocka_unit_test(optional_arguments_nonnull))
char data[0]
Definition cpg.c:10
#define CRM_FEATURE_SET
Definition crm.h:66
IPC interface to Pacemaker daemons.
@ pcmk_ipc_controld
Controller.
Definition ipc.h:52
xmlNode * pcmk__new_message_as(const char *origin, enum pcmk_ipc_server server, const char *reply_to, const char *sender_system, const char *recipient_node, const char *recipient_system, const char *task, xmlNode *data)
Definition messages.c:58
Functionality for manipulating name/value pairs.
#define PCMK__VALUE_REQUEST
const char * pcmk__server_message_type(enum pcmk_ipc_server server)
Definition servers.c:162
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
const char * crm_element_value(const xmlNode *data, const char *name)
Retrieve the value of an XML attribute.
xmlNode * pcmk__xe_create(xmlNode *parent, const char *name)
void pcmk__xml_free(xmlNode *xml)
Definition xml.c:816
#define PCMK_XA_ORIGIN
Definition xml_names.h:351
#define PCMK_XA_VERSION
Definition xml_names.h:444
#define PCMK_XA_REFERENCE
Definition xml_names.h:372
#define PCMK__XA_CRM_TASK
#define PCMK__XA_CRM_SYS_TO
#define PCMK__XA_T
#define PCMK__XA_SUBT
#define PCMK__XA_CRM_HOST_TO
#define PCMK__XA_CRM_SYS_FROM
#define PCMK__XE_CRM_XML