Annotation of embedaddon/bird2/lib/event_test.c, revision 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>