File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / bird2 / lib / event_test.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Oct 21 16:03:56 2019 UTC (4 years, 8 months ago) by misho
Branches: bird2, MAIN
CVS tags: v2_0_7p0, HEAD
bird2 ver 2.0.7

    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>