pacemaker  2.1.8-3980678f03
Scalable High-Availability cluster resource manager
pe_find_node_id_test.c
Go to the documentation of this file.
1 /*
2  * Copyright 2022-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 
13 #include <crm/pengine/internal.h>
14 
15 static void
16 empty_list(void **state) {
17  assert_null(pe_find_node_id(NULL, NULL));
18  assert_null(pe_find_node_id(NULL, "id1"));
19 }
20 
21 static void
22 non_null_list(void **state) {
23  GList *nodes = NULL;
24 
27 
28  a->details = pcmk__assert_alloc(1, sizeof(struct pe_node_shared_s));
29  a->details->id = "id1";
30  b->details = pcmk__assert_alloc(1, sizeof(struct pe_node_shared_s));
31  b->details->id = "id2";
32 
33  nodes = g_list_append(nodes, a);
34  nodes = g_list_append(nodes, b);
35 
36  assert_ptr_equal(a, pe_find_node_id(nodes, "id1"));
37  assert_null(pe_find_node_id(nodes, "id10"));
38  assert_null(pe_find_node_id(nodes, "nodeid1"));
39  assert_ptr_equal(b, pe_find_node_id(nodes, "ID2"));
40  assert_null(pe_find_node_id(nodes, "xyz"));
41 
42  free(a->details);
43  free(a);
44  free(b->details);
45  free(b);
46  g_list_free(nodes);
47 }
48 
49 PCMK__UNIT_TEST(NULL, NULL,
50  cmocka_unit_test(empty_list),
51  cmocka_unit_test(non_null_list))
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
pcmk_node_t * pe_find_node_id(const GList *node_list, const char *id)
Find a node by ID in a list of nodes.
Definition: status.c:487
struct pe_node_shared_s * details
Definition: nodes.h:167
const char * id
Definition: nodes.h:72
#define pcmk__assert_alloc(nmemb, size)
Definition: internal.h:297