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