X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Ftests%2Ftest_silcschedule.c;h=204f632fede304c8f21b84d09621f418399ff2fc;hb=52e57c880aba9c5e89f59d962eb9af75670b76e0;hp=9aa575fdf2fa97f8197675d4c2f3c51281736ceb;hpb=0f0340b9fbce9704cc7171f8f0104ce9103d2de6;p=silc.git diff --git a/lib/silcutil/tests/test_silcschedule.c b/lib/silcutil/tests/test_silcschedule.c index 9aa575fd..204f632f 100644 --- a/lib/silcutil/tests/test_silcschedule.c +++ b/lib/silcutil/tests/test_silcschedule.c @@ -1,10 +1,10 @@ /* SilcSchedule tests */ -#include "silcincludes.h" +#include "silc.h" typedef void (*Callback)(void *context); -#define NUM_TTASK 20 +#define NUM_TTASK 200 #ifdef FD_SETSIZE #define NUM_FTASK FD_SETSIZE #else @@ -13,25 +13,53 @@ typedef void (*Callback)(void *context); SilcSchedule schedule; +void notify_cb(SilcSchedule schedule, SilcBool added, SilcTask task, + SilcBool fd_task, SilcUInt32 fd, long sec, long usec, + void *context) +{ + SILC_LOG_DEBUG(("Notify cb, %s %s task, fd %d, sec %d usec %d", + added ? "added" : "deleted", fd_task ? "fd" :"timeout", + fd, sec, usec)); +} + SILC_TASK_CALLBACK(foo) { } -SILC_TASK_CALLBACK(cont) +SILC_TASK_CALLBACK(timeout) { - int i; + int i = (int)context; + SILC_LOG_DEBUG(("Timeout task %d", i)); +} + +SILC_TASK_CALLBACK(cont2) +{ +#ifdef SILC_DEBUG + silc_schedule_stats(schedule); +#endif /* SILC_DEBUG */ SILC_LOG_DEBUG(("Adding %d fd tasks", NUM_FTASK - 10)); +#if 0 for (i = 0; i < NUM_FTASK - 10; i++) silc_schedule_task_add_fd(schedule, i + 5, foo, (void *)(i + 5)); +#endif } -SILC_TASK_CALLBACK(timeout) +SILC_TASK_CALLBACK(cont) { - int i = (int)context; - SILC_LOG_DEBUG(("Timeout task %d", i)); + int i; + +#ifdef SILC_DEBUG + silc_schedule_stats(schedule); +#endif /* SILC_DEBUG */ + + SILC_LOG_DEBUG(("Adding %d timeout tasks", NUM_TTASK / 3)); + for (i = 0; i < NUM_TTASK / 3; i++) + silc_schedule_task_add_timeout(schedule, timeout, (void *)i, 0, 0); + + silc_schedule_task_add_timeout(schedule, cont2, (void *)i, 0, 100); } SILC_TASK_CALLBACK(start) @@ -40,16 +68,27 @@ SILC_TASK_CALLBACK(start) SILC_LOG_DEBUG(("Adding %d timeout tasks", NUM_TTASK)); +#if 0 for (i = 0; i < NUM_TTASK; i++) silc_schedule_task_add_timeout(schedule, timeout, (void *)i, - 0, (i * 720391) & 999999); + i + (i & 9999), (i * 720391) & 999999); +#endif + + for (i = 0; i < NUM_TTASK; i++) + silc_schedule_task_add_timeout(schedule, timeout, (void *)i, 0, 1); silc_schedule_task_add_timeout(schedule, cont, (void *)i, 0, 100); } +SILC_TASK_CALLBACK(interrupt) +{ + SILC_LOG_DEBUG(("SIGINT signal")); + silc_schedule_stop(schedule); +} + int main(int argc, char **argv) { - bool success = FALSE; + SilcBool success = FALSE; if (argc > 1 && !strcmp(argv[1], "-d")) { silc_log_debug(TRUE); @@ -62,8 +101,11 @@ int main(int argc, char **argv) schedule = silc_schedule_init(NUM_FTASK, NULL); if (!schedule) goto err; + silc_schedule_set_notify(schedule, notify_cb, NULL); + + silc_schedule_task_add_signal(schedule, SIGINT, interrupt, NULL); - silc_schedule_task_add_timeout(schedule, start, NULL, 0, 1); + silc_schedule_task_add_timeout(schedule, start, NULL, 1, 0); SILC_LOG_DEBUG(("Running scheduler")); silc_schedule(schedule);