1 /* SilcSchedule tests */
5 typedef void (*Callback)(void *context);
9 #define NUM_FTASK FD_SETSIZE
14 SilcSchedule schedule;
16 void notify_cb(SilcSchedule schedule, SilcBool added, SilcTask task,
17 SilcBool fd_task, SilcUInt32 fd, long sec, long usec,
20 SILC_LOG_DEBUG(("Notify cb, %s %s task, fd %d, sec %d usec %d",
21 added ? "added" : "deleted", fd_task ? "fd" :"timeout",
25 SILC_TASK_CALLBACK(foo)
30 SILC_TASK_CALLBACK(timeout)
33 SILC_LOG_DEBUG(("Timeout task %d", i));
36 SILC_TASK_CALLBACK(cont2)
39 silc_schedule_stats(schedule);
40 #endif /* SILC_DEBUG */
42 SILC_LOG_DEBUG(("Adding %d fd tasks", NUM_FTASK - 10));
45 for (i = 0; i < NUM_FTASK - 10; i++)
46 silc_schedule_task_add_fd(schedule, i + 5, foo, (void *)(i + 5));
50 SILC_TASK_CALLBACK(cont)
55 silc_schedule_stats(schedule);
56 #endif /* SILC_DEBUG */
58 SILC_LOG_DEBUG(("Adding %d timeout tasks", NUM_TTASK / 3));
59 for (i = 0; i < NUM_TTASK / 3; i++)
60 silc_schedule_task_add_timeout(schedule, timeout, (void *)i, 0, 0);
62 silc_schedule_task_add_timeout(schedule, cont2, (void *)i, 0, 100);
65 SILC_TASK_CALLBACK(start)
69 SILC_LOG_DEBUG(("Adding %d timeout tasks", NUM_TTASK));
72 for (i = 0; i < NUM_TTASK; i++)
73 silc_schedule_task_add_timeout(schedule, timeout, (void *)i,
74 i + (i & 9999), (i * 720391) & 999999);
77 for (i = 0; i < NUM_TTASK; i++)
78 silc_schedule_task_add_timeout(schedule, timeout, (void *)i, 0, 1);
80 silc_schedule_task_add_timeout(schedule, cont, (void *)i, 0, 100);
83 SILC_TASK_CALLBACK(interrupt)
85 SILC_LOG_DEBUG(("SIGINT signal"));
86 silc_schedule_stop(schedule);
89 int main(int argc, char **argv)
91 SilcBool success = FALSE;
93 if (argc > 1 && !strcmp(argv[1], "-d")) {
96 silc_log_debug_hexdump(TRUE);
97 silc_log_set_debug_string("*sched*,*hash*");
100 SILC_LOG_DEBUG(("Allocating scheduler"));
101 schedule = silc_schedule_init(NUM_FTASK, NULL, NULL);
104 silc_schedule_set_notify(schedule, notify_cb, NULL);
106 silc_schedule_task_add_signal(schedule, SIGINT, interrupt, NULL);
108 silc_schedule_task_add_timeout(schedule, start, NULL, 1, 0);
110 SILC_LOG_DEBUG(("Running scheduler"));
111 silc_schedule(schedule);
113 silc_schedule_uninit(schedule);
118 SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
119 fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");