pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
pcmk__update_recheck_time_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 <sys/types.h> // time_t
14
18
19static void
20assert_recheck(time_t now_time, time_t orig_time, time_t update_time,
21 time_t expected_time, const char *reason)
22{
24
25 scheduler->priv->now = pcmk__copy_timet(now_time);
26 scheduler->priv->recheck_by = orig_time;
27 pcmk__update_recheck_time(update_time, scheduler, reason);
28 assert_int_equal(scheduler->priv->recheck_by, expected_time);
30}
31
32// A NULL scheduler argument is invalid and should assert
33static void
34null_scheduler(void **state)
35{
37}
38
39// Do not update recheck time if new value is before or equal to "now"
40static void
41too_early(void **state)
42{
43 // Recheck time is initially unset
44 assert_recheck(1423548000, 0, 1423547900, 0, NULL);
45 assert_recheck(1423548000, 0, 1423548000, 0, NULL);
46
47 // Recheck time is initially set
48 assert_recheck(1423548000, 1423548100, 1423547900, 1423548100, NULL);
49 assert_recheck(1423548000, 1423548100, 1423548000, 1423548100, NULL);
50}
51
52// Update recheck time if the existing value is 0
53static void
54first_time(void **state)
55{
56 // This also tests that a NULL reason does not crash
57 assert_recheck(1423548000, 0, 1423548100, 1423548100, NULL);
58}
59
60// Update recheck time if new value is earlier than the existing one
61static void
62earlier_time(void **state)
63{
64 assert_recheck(1423548000, 1423548500, 1423548200, 1423548200, "reasons");
65}
66
67// Do not update recheck time if new value is later than the existing one
68static void
69later_time(void **state)
70{
71 assert_recheck(1423548000, 1423548500, 1423548600, 1423548500, "reasons");
72}
73
74PCMK__UNIT_TEST(NULL, NULL,
75 cmocka_unit_test(null_scheduler),
76 cmocka_unit_test(too_early),
77 cmocka_unit_test(first_time),
78 cmocka_unit_test(earlier_time),
79 cmocka_unit_test(later_time))
crm_time_t * pcmk__copy_timet(time_t source)
Definition iso8601.c:1488
pcmk_scheduler_t * scheduler
Scheduler API.
void pcmk_free_scheduler(pcmk_scheduler_t *scheduler)
Free scheduler data.
Definition scheduler.c:193
pcmk_scheduler_t * pcmk_new_scheduler(void)
Create a new object to hold scheduler data.
Definition scheduler.c:32
void pcmk__update_recheck_time(time_t recheck, pcmk_scheduler_t *scheduler, const char *reason)
Definition scheduler.c:321
pcmk__scheduler_private_t * priv
Definition scheduler.h:99
#define pcmk__assert_asserts(stmt)
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)