1*5f15e431Snicm /*
2*5f15e431Snicm * Compile with:
3*5f15e431Snicm * cc -I/usr/local/include -o time-test time-test.c -L/usr/local/lib -levent
4*5f15e431Snicm */
5*5f15e431Snicm #ifdef HAVE_CONFIG_H
6*5f15e431Snicm #include "config.h"
7*5f15e431Snicm #endif
8*5f15e431Snicm
9*5f15e431Snicm #ifdef WIN32
10*5f15e431Snicm #include <winsock2.h>
11*5f15e431Snicm #endif
12*5f15e431Snicm
13*5f15e431Snicm #include <sys/types.h>
14*5f15e431Snicm #include <sys/stat.h>
15*5f15e431Snicm #ifdef HAVE_SYS_TIME_H
16*5f15e431Snicm #include <sys/time.h>
17*5f15e431Snicm #endif
18*5f15e431Snicm #include <fcntl.h>
19*5f15e431Snicm #include <stdlib.h>
20*5f15e431Snicm #include <stdio.h>
21*5f15e431Snicm #include <string.h>
22*5f15e431Snicm #ifdef HAVE_UNISTD_H
23*5f15e431Snicm #include <unistd.h>
24*5f15e431Snicm #endif
25*5f15e431Snicm #include <errno.h>
26*5f15e431Snicm
27*5f15e431Snicm #include <event.h>
28*5f15e431Snicm
29*5f15e431Snicm int called = 0;
30*5f15e431Snicm
31*5f15e431Snicm #define NEVENT 20000
32*5f15e431Snicm
33*5f15e431Snicm struct event *ev[NEVENT];
34*5f15e431Snicm
35*5f15e431Snicm static int
rand_int(int n)36*5f15e431Snicm rand_int(int n)
37*5f15e431Snicm {
38*5f15e431Snicm #ifdef WIN32
39*5f15e431Snicm return (int)(rand() * n);
40*5f15e431Snicm #else
41*5f15e431Snicm return (int)(random() % n);
42*5f15e431Snicm #endif
43*5f15e431Snicm }
44*5f15e431Snicm
45*5f15e431Snicm static void
time_cb(int fd,short event,void * arg)46*5f15e431Snicm time_cb(int fd, short event, void *arg)
47*5f15e431Snicm {
48*5f15e431Snicm struct timeval tv;
49*5f15e431Snicm int i, j;
50*5f15e431Snicm
51*5f15e431Snicm called++;
52*5f15e431Snicm
53*5f15e431Snicm if (called < 10*NEVENT) {
54*5f15e431Snicm for (i = 0; i < 10; i++) {
55*5f15e431Snicm j = rand_int(NEVENT);
56*5f15e431Snicm tv.tv_sec = 0;
57*5f15e431Snicm tv.tv_usec = rand_int(50000);
58*5f15e431Snicm if (tv.tv_usec % 2)
59*5f15e431Snicm evtimer_add(ev[j], &tv);
60*5f15e431Snicm else
61*5f15e431Snicm evtimer_del(ev[j]);
62*5f15e431Snicm }
63*5f15e431Snicm }
64*5f15e431Snicm }
65*5f15e431Snicm
66*5f15e431Snicm int
main(int argc,char ** argv)67*5f15e431Snicm main (int argc, char **argv)
68*5f15e431Snicm {
69*5f15e431Snicm struct timeval tv;
70*5f15e431Snicm int i;
71*5f15e431Snicm
72*5f15e431Snicm /* Initalize the event library */
73*5f15e431Snicm event_init();
74*5f15e431Snicm
75*5f15e431Snicm for (i = 0; i < NEVENT; i++) {
76*5f15e431Snicm ev[i] = malloc(sizeof(struct event));
77*5f15e431Snicm
78*5f15e431Snicm /* Initalize one event */
79*5f15e431Snicm evtimer_set(ev[i], time_cb, ev[i]);
80*5f15e431Snicm tv.tv_sec = 0;
81*5f15e431Snicm tv.tv_usec = rand_int(50000);
82*5f15e431Snicm evtimer_add(ev[i], &tv);
83*5f15e431Snicm }
84*5f15e431Snicm
85*5f15e431Snicm event_dispatch();
86*5f15e431Snicm
87*5f15e431Snicm return (called < NEVENT);
88*5f15e431Snicm }
89*5f15e431Snicm
90