1 /* SilcSchedule tests */
5 typedef void (*Callback)(void *context);
9 #define NUM_FTASK FD_SETSIZE
14 SilcSchedule schedule;
16 SILC_TASK_CALLBACK(foo)
21 SILC_TASK_CALLBACK(timeout)
24 SILC_LOG_DEBUG(("Timeout task %d", i));
27 SILC_TASK_CALLBACK(cont2)
30 silc_schedule_stats(schedule);
31 #endif /* SILC_DEBUG */
33 SILC_LOG_DEBUG(("Adding %d fd tasks", NUM_FTASK - 10));
36 for (i = 0; i < NUM_FTASK - 10; i++)
37 silc_schedule_task_add_fd(schedule, i + 5, foo, (void *)(i + 5));
41 SILC_TASK_CALLBACK(cont)
46 silc_schedule_stats(schedule);
47 #endif /* SILC_DEBUG */
49 SILC_LOG_DEBUG(("Adding %d timeout tasks", NUM_TTASK / 3));
50 for (i = 0; i < NUM_TTASK / 3; i++)
51 silc_schedule_task_add_timeout(schedule, timeout, (void *)i, 0, 1);
53 silc_schedule_task_add_timeout(schedule, cont2, (void *)i, 0, 100);
56 SILC_TASK_CALLBACK(start)
60 SILC_LOG_DEBUG(("Adding %d timeout tasks", NUM_TTASK));
63 for (i = 0; i < NUM_TTASK; i++)
64 silc_schedule_task_add_timeout(schedule, timeout, (void *)i,
65 i + (i & 9999), (i * 720391) & 999999);
68 for (i = 0; i < NUM_TTASK; i++)
69 silc_schedule_task_add_timeout(schedule, timeout, (void *)i, 0, 1);
71 silc_schedule_task_add_timeout(schedule, cont, (void *)i, 0, 100);
74 int main(int argc, char **argv)
76 SilcBool success = FALSE;
78 if (argc > 1 && !strcmp(argv[1], "-d")) {
81 silc_log_debug_hexdump(TRUE);
82 silc_log_set_debug_string("*sched*,*hash*");
85 SILC_LOG_DEBUG(("Allocating scheduler"));
86 schedule = silc_schedule_init(NUM_FTASK, NULL);
90 silc_schedule_task_add_timeout(schedule, start, NULL, 0, 1);
92 SILC_LOG_DEBUG(("Running scheduler"));
93 silc_schedule(schedule);
95 silc_schedule_uninit(schedule);
100 SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
101 fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");