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