23#include <freeradius-devel/util/acutest.h>
24#include <freeradius-devel/util/acutest_helpers.h>
25#include <freeradius-devel/util/time.h>
26#include <freeradius-devel/util/timer.h>
32#define TIME_SOURCE(_name) \
33 static fr_time_t _name##_timer = fr_time_wrap(0); \
34 static fr_time_t _name##_time(void) \
36 return _name##_timer; \
38 static void _name##_set(fr_time_t t) \
50 bool *fired = (
bool *)uctx;
61 fr_timer_t *event1 = NULL, *event1a = NULL, *event2 = NULL, *event3 = NULL, *event4 = NULL, *event5 = NULL, *event6 = NULL;
62 bool event1_fired =
false, event1a_fired =
false, event2_fired =
false, event3_fired =
false, event4_fired =
false, event5_fired =
false, event6_fired =
false;
165 if (tl == NULL)
return;
193 bool deferred_event_fired =
false;
219 if (tl == NULL)
return;
234 if (tl == NULL)
return;
247 if (tl == NULL)
return;
258 bool event1_fired =
false, event2_fired =
false;
263 if (tl == NULL)
return;
281 fr_timer_t *event1_inner = NULL, *event2_inner = NULL;
282 bool event1_inner_fired =
false, event2_inner_fired =
false;
341 if (tl_outer == NULL)
return;
345 if (tl_inner == NULL)
return;
374 if (tl_outer == NULL)
return;
378 if (tl_inner == NULL)
return;
static fr_time_delta_t fr_time_delta_from_sec(int64_t sec)
#define fr_time_wrap(_time)
static fr_time_t fr_time_from_sec(time_t when)
Convert a time_t (wallclock time) to a fr_time_t (internal time)
#define fr_time_gt(_a, _b)
int fr_timer_list_run(fr_timer_list_t *tl, fr_time_t *when)
Execute any pending events in the event loop.
uint64_t fr_timer_list_num_events(fr_timer_list_t *tl)
Return number of pending events.
fr_timer_list_t * fr_timer_list_ordered_alloc(TALLOC_CTX *ctx, fr_timer_list_t *parent)
Allocate a new sorted event timer list.
fr_timer_list_t * fr_timer_list_lst_alloc(TALLOC_CTX *ctx, fr_timer_list_t *parent)
Allocate a new lst based timer list.
int fr_timer_disarm(fr_timer_t *ev)
Remove an event from the event list, but don't free the memory.
void fr_timer_list_set_time_func(fr_timer_list_t *tl, fr_event_time_source_t func)
Override event list time source.
int fr_timer_delete(fr_timer_t **ev_p)
Delete a timer event and free its memory.
static void ordered_nested(void)
static void lst_nested(void)
static void ordered_basic_test(void)
static void nested_test(fr_timer_list_t *tl_outer, fr_timer_list_t *tl_inner)
#define TIME_SOURCE(_name)
Defines an artificial time source for a test.
static void deferred_timer_list_tests(fr_timer_list_t *tl)
static void lst_basic_test(void)
static void ordered_deferred_test(void)
static void lst_deferred_test(void)
static void timer_cb_deferred(fr_timer_list_t *tl, fr_time_t now, void *uctx)
static void basic_timer_list_tests(fr_timer_list_t *tl)
static void timer_cb(fr_timer_list_t *tl, fr_time_t now, void *uctx)
Verifies time passed in is not 0, that tl is not NULL, and writes true to uctx (must be a bool)
static void ordered_bad_inserts_test(void)