Home | History | Annotate | Download | only in test
      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 
     29 int called = 0;
     30 
     31 #define NEVENT	20000
     32 
     33 struct event *ev[NEVENT];
     34 
     35 static int
     36 rand_int(int n)
     37 {
     38 #ifdef WIN32
     39 	return (int)(rand() * n);
     40 #else
     41 	return (int)(random() % n);
     42 #endif
     43 }
     44 
     45 static void
     46 time_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 
     66 int
     67 main (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