root/lib/common/tests/messages/pcmk__new_message_as_test.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. invalid_arguments
  2. optional_arguments_null
  3. optional_arguments_nonnull

   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 
  21 #include <crm/common/unittest_internal.h>
  22 
  23 static void
  24 invalid_arguments(void **state)
     /* [previous][next][first][last][top][bottom][index][help] */
  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)
     /* [previous][next][first][last][top][bottom][index][help] */
  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)
     /* [previous][next][first][last][top][bottom][index][help] */
  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))

/* [previous][next][first][last][top][bottom][index][help] */