pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
pcmk__get_schema_test.c
Go to the documentation of this file.
1/*
2 * Copyright 2023-2025 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 <crm/common/xml.h>
15#include "crmcommon_private.h"
16
17static int
18setup(void **state)
19{
20 setenv("PCMK_schema_directory", PCMK__TEST_SCHEMA_DIR, 1);
22 return 0;
23}
24
25static int
26teardown(void **state)
27{
29 unsetenv("PCMK_schema_directory");
30 return 0;
31}
32
33static void
34assert_schema(const char *name, int expected_index)
35{
36 GList *schema_entry = NULL;
37 pcmk__schema_t *schema = NULL;
38
39 schema_entry = pcmk__get_schema(name);
40 assert_non_null(schema_entry);
41
42 schema = schema_entry->data;
43 assert_non_null(schema);
44
45 assert_int_equal(schema->schema_index, expected_index);
46}
47
48static void
49unknown_schema(void **state)
50{
51 assert_null(pcmk__get_schema(NULL));
52 assert_null(pcmk__get_schema(""));
53 assert_null(pcmk__get_schema("blahblah"));
54 assert_null(pcmk__get_schema("pacemaker-2.47"));
55 assert_null(pcmk__get_schema("pacemaker-47.0"));
56}
57
58static void
59known_schema(void **state)
60{
61 assert_schema("pacemaker-1.0", 0);
62 assert_schema("pacemaker-1.2", 1);
63 assert_schema("pacemaker-2.0", 3);
64 assert_schema("pacemaker-2.5", 8);
65 assert_schema("pacemaker-3.0", 14);
66}
67
68static void
69case_sensitive(void **state)
70{
71 assert_null(pcmk__get_schema("PACEMAKER-1.0"));
72 assert_null(pcmk__get_schema("pAcEmAkEr-2.0"));
73 assert_null(pcmk__get_schema("paceMAKER-3.0"));
74}
75
76PCMK__UNIT_TEST(setup, teardown,
77 cmocka_unit_test(unknown_schema),
78 cmocka_unit_test(known_schema),
79 cmocka_unit_test(case_sensitive));
const char * name
Definition cib.c:26
GList * pcmk__get_schema(const char *name)
Definition schemas.c:732
int pcmk__xml_test_teardown_group(void **state)
Definition unittest.c:105
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
int pcmk__xml_test_setup_group(void **state)
Definition unittest.c:87
Wrappers for and extensions to libxml2.