Annotation of embedaddon/bird2/lib/event_test.c, revision 1.1.1.1
1.1 misho 1: /*
2: * BIRD Library -- Event Processing Tests
3: *
4: * (c) 2015 CZ.NIC z.s.p.o.
5: *
6: * Can be freely distributed and used under the terms of the GNU GPL.
7: */
8:
9:
10: #include "test/birdtest.h"
11:
12: #include "lib/net.h"
13: #include "lib/event.h"
14: #include "conf/conf.h"
15: #include "nest/locks.h"
16: #include "sysdep/unix/unix.h"
17: #include "nest/iface.h"
18: #include "nest/route.h"
19:
20: #define MAX_NUM 4
21:
22: int event_check_points[MAX_NUM];
23:
24: #define event_hook_body(num) \
25: do { \
26: bt_debug("Event Hook " #num "\n"); \
27: event_check_points[num] = 1; \
28: bt_assert_msg(event_check_points[num-1], "Events should be run in right order"); \
29: } while (0)
30:
31: static void event_hook_1(void *data UNUSED) { event_hook_body(1); }
32: static void event_hook_2(void *data UNUSED) { event_hook_body(2); }
33: static void event_hook_3(void *data UNUSED) { event_hook_body(3); }
34:
35: #define schedule_event(num) \
36: do { \
37: struct event *event_##num = ev_new(&root_pool); \
38: event_##num->hook = event_hook_##num; \
39: ev_schedule(event_##num); \
40: } while (0)
41:
42: static void
43: init_event_check_points(void)
44: {
45: int i;
46: event_check_points[0] = 1;
47: for (i = 1; i < MAX_NUM; i++)
48: event_check_points[i] = 0;
49: }
50:
51: static int
52: t_ev_run_list(void)
53: {
54: int i;
55:
56: resource_init();
57: olock_init();
58: timer_init();
59: io_init();
60: rt_init();
61: if_init();
62: // roa_init();
63: config_init();
64: config = config_alloc("");
65:
66: init_event_check_points();
67:
68: schedule_event(1);
69: schedule_event(2);
70: schedule_event(3);
71:
72: ev_run_list(&global_event_list);
73:
74: for (i = 1; i < MAX_NUM; i++)
75: bt_assert(event_check_points[i]);
76:
77: return 1;
78: }
79:
80: int
81: main(int argc, char *argv[])
82: {
83: bt_init(argc, argv);
84:
85: bt_test_suite(t_ev_run_list, "Schedule and run 3 events in right order.");
86:
87: return bt_exit_value();
88: }
89:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>