mirror of
https://github.com/libevent/libevent.git
synced 2025-01-31 09:12:55 +08:00
Make the test/ subdirectory buildable under Windows. Well, mingw at least. The tests still don't all pass, but at least now we know that.
svn:r447
This commit is contained in:
parent
d85bce4e96
commit
1e1f77c5b0
@ -22,3 +22,5 @@ Changes in current version:
|
|||||||
o Fix http module on windows to close sockets properly.
|
o Fix http module on windows to close sockets properly.
|
||||||
o Make autogen.sh script run correctly on systems where /bin/sh isn't bash. (Patch from Trond Norbye, rewritten by Hagne Mahre and then Hannah Schroeter.)
|
o Make autogen.sh script run correctly on systems where /bin/sh isn't bash. (Patch from Trond Norbye, rewritten by Hagne Mahre and then Hannah Schroeter.)
|
||||||
o Skip calling gettime() in timeout_process if we are not in fact waiting for any events. (Patch from Trond Norbye)
|
o Skip calling gettime() in timeout_process if we are not in fact waiting for any events. (Patch from Trond Norbye)
|
||||||
|
o Make test subdirectory compile under mingw.
|
||||||
|
|
||||||
|
11
test/bench.c
11
test/bench.c
@ -40,9 +40,13 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
#ifdef WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#else
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/signal.h>
|
#include <sys/signal.h>
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -51,6 +55,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include <event.h>
|
#include <event.h>
|
||||||
|
#include <evutil.h>
|
||||||
|
|
||||||
|
|
||||||
static int count, writes, fired;
|
static int count, writes, fired;
|
||||||
@ -117,7 +122,9 @@ run_once(void)
|
|||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
#ifndef WIN32
|
||||||
struct rlimit rl;
|
struct rlimit rl;
|
||||||
|
#endif
|
||||||
int i, c;
|
int i, c;
|
||||||
struct timeval *tv;
|
struct timeval *tv;
|
||||||
int *cp;
|
int *cp;
|
||||||
@ -143,11 +150,13 @@ main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
rl.rlim_cur = rl.rlim_max = num_pipes * 2 + 50;
|
rl.rlim_cur = rl.rlim_max = num_pipes * 2 + 50;
|
||||||
if (setrlimit(RLIMIT_NOFILE, &rl) == -1) {
|
if (setrlimit(RLIMIT_NOFILE, &rl) == -1) {
|
||||||
perror("setrlimit");
|
perror("setrlimit");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
events = calloc(num_pipes, sizeof(struct event));
|
events = calloc(num_pipes, sizeof(struct event));
|
||||||
pipes = calloc(num_pipes * 2, sizeof(int));
|
pipes = calloc(num_pipes * 2, sizeof(int));
|
||||||
@ -162,7 +171,7 @@ main (int argc, char **argv)
|
|||||||
#ifdef USE_PIPES
|
#ifdef USE_PIPES
|
||||||
if (pipe(cp) == -1) {
|
if (pipe(cp) == -1) {
|
||||||
#else
|
#else
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, cp) == -1) {
|
if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, cp) == -1) {
|
||||||
#endif
|
#endif
|
||||||
perror("pipe");
|
perror("pipe");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -45,8 +45,8 @@
|
|||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/signal.h>
|
#include <sys/signal.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -55,6 +55,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "event.h"
|
#include "event.h"
|
||||||
|
#include "evutil.h"
|
||||||
#include "event-internal.h"
|
#include "event-internal.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
@ -76,6 +77,10 @@ static struct event_base *global_base;
|
|||||||
#define TEST1 "this is a test"
|
#define TEST1 "this is a test"
|
||||||
#define SECONDS 1
|
#define SECONDS 1
|
||||||
|
|
||||||
|
#ifndef SHUT_WR
|
||||||
|
#define SHUT_WR 1
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
simple_read_cb(int fd, short event, void *arg)
|
simple_read_cb(int fd, short event, void *arg)
|
||||||
{
|
{
|
||||||
@ -246,7 +251,7 @@ setup_test(char *name)
|
|||||||
|
|
||||||
fprintf(stdout, "%s", name);
|
fprintf(stdout, "%s", name);
|
||||||
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1) {
|
if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1) {
|
||||||
fprintf(stderr, "%s: socketpair\n", __func__);
|
fprintf(stderr, "%s: socketpair\n", __func__);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,9 @@
|
|||||||
#ifdef HAVE_NETINET_IN6_H
|
#ifdef HAVE_NETINET_IN6_H
|
||||||
#include <netinet/in6.h>
|
#include <netinet/in6.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_NETDB_H
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -341,7 +343,7 @@ dns_server(void)
|
|||||||
evdns_close_server_port(port);
|
evdns_close_server_port(port);
|
||||||
evdns_shutdown(0); /* remove ourself as nameserver. */
|
evdns_shutdown(0); /* remove ourself as nameserver. */
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
CloseHandle(sock);
|
closesocket(sock);
|
||||||
#else
|
#else
|
||||||
close(sock);
|
close(sock);
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,8 +44,8 @@
|
|||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/signal.h>
|
#include <sys/signal.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -96,14 +96,34 @@ http_setup(short *pport, struct event_base *base)
|
|||||||
return (myhttp);
|
return (myhttp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef NI_MAXSERV
|
||||||
|
#define NI_MAXSERV 1024
|
||||||
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
http_connect(const char *address, u_short port)
|
http_connect(const char *address, u_short port)
|
||||||
{
|
{
|
||||||
/* Stupid code for connecting */
|
/* Stupid code for connecting */
|
||||||
|
#ifdef WIN32
|
||||||
|
struct hostent *he;
|
||||||
|
struct sockaddr_in sin;
|
||||||
|
#else
|
||||||
struct addrinfo ai, *aitop;
|
struct addrinfo ai, *aitop;
|
||||||
char strport[NI_MAXSERV];
|
char strport[NI_MAXSERV];
|
||||||
|
#endif
|
||||||
|
struct sockaddr *sa;
|
||||||
|
int slen;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
if (!(he = gethostbyname(address))) {
|
||||||
|
event_warn("gethostbyname");
|
||||||
|
}
|
||||||
|
memcpy(&sin.sin_addr, &he->h_addr, sizeof(struct in_addr));
|
||||||
|
sin.sin_port = htons(port);
|
||||||
|
slen = sizeof(struct sockaddr_in);
|
||||||
|
sa = (struct sockaddr*)&sin;
|
||||||
|
#else
|
||||||
memset(&ai, 0, sizeof (ai));
|
memset(&ai, 0, sizeof (ai));
|
||||||
ai.ai_family = AF_INET;
|
ai.ai_family = AF_INET;
|
||||||
ai.ai_socktype = SOCK_STREAM;
|
ai.ai_socktype = SOCK_STREAM;
|
||||||
@ -112,15 +132,20 @@ http_connect(const char *address, u_short port)
|
|||||||
event_warn("getaddrinfo");
|
event_warn("getaddrinfo");
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
sa = aitop->ai_addr;
|
||||||
|
slen = aitop->ai_addrlen;
|
||||||
|
#endif
|
||||||
|
|
||||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
event_err(1, "socket failed");
|
event_err(1, "socket failed");
|
||||||
|
|
||||||
if (connect(fd, aitop->ai_addr, aitop->ai_addrlen) == -1)
|
if (connect(fd, sa, slen) == -1)
|
||||||
event_err(1, "connect failed");
|
event_err(1, "connect failed");
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
freeaddrinfo(aitop);
|
freeaddrinfo(aitop);
|
||||||
|
#endif
|
||||||
|
|
||||||
return (fd);
|
return (fd);
|
||||||
}
|
}
|
||||||
|
@ -44,8 +44,8 @@
|
|||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/signal.h>
|
#include <sys/signal.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -7,10 +7,15 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#include <winsock2.h>
|
||||||
|
#endif
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -19,6 +24,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include <event.h>
|
#include <event.h>
|
||||||
|
#include <evutil.h>
|
||||||
|
|
||||||
int test_okay = 1;
|
int test_okay = 1;
|
||||||
int called = 0;
|
int called = 0;
|
||||||
@ -43,6 +49,10 @@ read_cb(int fd, short event, void *arg)
|
|||||||
called++;
|
called++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef SHUT_WR
|
||||||
|
#define SHUT_WR 1
|
||||||
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -50,7 +60,7 @@ main (int argc, char **argv)
|
|||||||
char *test = "test string";
|
char *test = "test string";
|
||||||
int pair[2];
|
int pair[2];
|
||||||
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
|
if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,9 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -25,6 +25,16 @@ int called = 0;
|
|||||||
|
|
||||||
struct event *ev[NEVENT];
|
struct event *ev[NEVENT];
|
||||||
|
|
||||||
|
int
|
||||||
|
rand_int(int n)
|
||||||
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
return (int)(rand() * n);
|
||||||
|
#else
|
||||||
|
return (int)(random() % n);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
time_cb(int fd, short event, void *arg)
|
time_cb(int fd, short event, void *arg)
|
||||||
{
|
{
|
||||||
@ -35,9 +45,9 @@ time_cb(int fd, short event, void *arg)
|
|||||||
|
|
||||||
if (called < 10*NEVENT) {
|
if (called < 10*NEVENT) {
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
j = random() % NEVENT;
|
j = rand_int(NEVENT);
|
||||||
tv.tv_sec = 0;
|
tv.tv_sec = 0;
|
||||||
tv.tv_usec = random() % 50000L;
|
tv.tv_usec = rand_int(50000);
|
||||||
if (tv.tv_usec % 2)
|
if (tv.tv_usec % 2)
|
||||||
evtimer_add(ev[j], &tv);
|
evtimer_add(ev[j], &tv);
|
||||||
else
|
else
|
||||||
@ -61,7 +71,7 @@ main (int argc, char **argv)
|
|||||||
/* Initalize one event */
|
/* Initalize one event */
|
||||||
evtimer_set(ev[i], time_cb, ev[i]);
|
evtimer_set(ev[i], time_cb, ev[i]);
|
||||||
tv.tv_sec = 0;
|
tv.tv_sec = 0;
|
||||||
tv.tv_usec = random() % 50000L;
|
tv.tv_usec = rand_int(50000);
|
||||||
evtimer_add(ev[i], &tv);
|
evtimer_add(ev[i], &tv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,10 +7,15 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#include <winsock2.h>
|
||||||
|
#endif
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -20,6 +25,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include <event.h>
|
#include <event.h>
|
||||||
|
#include <evutil.h>
|
||||||
|
|
||||||
int pair[2];
|
int pair[2];
|
||||||
int test_okay = 1;
|
int test_okay = 1;
|
||||||
@ -51,10 +57,12 @@ main (int argc, char **argv)
|
|||||||
{
|
{
|
||||||
struct event ev;
|
struct event ev;
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
|
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
|
||||||
return (1);
|
return (1);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
|
if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
/* Initalize the event library */
|
/* Initalize the event library */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user