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>