]> granicus.if.org Git - libevent/commitdiff
Make the test/ subdirectory buildable under Windows. Well, mingw at least. The...
authorNick Mathewson <nickm@torproject.org>
Thu, 20 Sep 2007 19:08:20 +0000 (19:08 +0000)
committerNick Mathewson <nickm@torproject.org>
Thu, 20 Sep 2007 19:08:20 +0000 (19:08 +0000)
svn:r447

ChangeLog
test/bench.c
test/regress.c
test/regress_dns.c
test/regress_http.c
test/regress_rpc.c
test/test-eof.c
test/test-init.c
test/test-time.c
test/test-weof.c

index 84879a33c036f7633aeb0e29f7a0de731a57f368..18e93e53bd7508ef9a51367008ad1ff926a1c6cf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,3 +22,5 @@ Changes in current version:
  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 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.
+
index 61b050255bfe3dd526f8e5b91f9680c24f472ef4..ed32ae0664f2d91c37ed2e4ab90406d9a8117135 100644 (file)
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/time.h>
+#ifdef WIN32
+#include <windows.h>
+#else
 #include <sys/socket.h>
 #include <sys/signal.h>
 #include <sys/resource.h>
+#endif
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -51,6 +55,7 @@
 #include <errno.h>
 
 #include <event.h>
+#include <evutil.h>
 
 
 static int count, writes, fired;
@@ -117,7 +122,9 @@ run_once(void)
 int
 main (int argc, char **argv)
 {
+#ifndef WIN32
        struct rlimit rl;
+#endif
        int i, c;
        struct timeval *tv;
        int *cp;
@@ -143,11 +150,13 @@ main (int argc, char **argv)
                }
        }
 
+#ifndef WIN32
        rl.rlim_cur = rl.rlim_max = num_pipes * 2 + 50;
        if (setrlimit(RLIMIT_NOFILE, &rl) == -1) {
                perror("setrlimit");
                exit(1);
        }
+#endif
 
        events = calloc(num_pipes, sizeof(struct event));
        pipes = calloc(num_pipes * 2, sizeof(int));
@@ -162,7 +171,7 @@ main (int argc, char **argv)
 #ifdef USE_PIPES
                if (pipe(cp) == -1) {
 #else
-               if (socketpair(AF_UNIX, SOCK_STREAM, 0, cp) == -1) {
+               if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, cp) == -1) {
 #endif
                        perror("pipe");
                        exit(1);
index c672fe8dccb9dd8a960c583c5008bfd91a796295..41b78b908df73399e442a7e75d7e911df14bcc8c 100644 (file)
@@ -45,8 +45,8 @@
 #include <sys/socket.h>
 #include <sys/signal.h>
 #include <unistd.h>
-#endif
 #include <netdb.h>
+#endif
 #include <fcntl.h>
 #include <signal.h>
 #include <stdlib.h>
@@ -55,6 +55,7 @@
 #include <errno.h>
 
 #include "event.h"
+#include "evutil.h"
 #include "event-internal.h"
 #include "log.h"
 
@@ -76,6 +77,10 @@ static struct event_base *global_base;
 #define TEST1  "this is a test"
 #define SECONDS        1
 
+#ifndef SHUT_WR
+#define SHUT_WR 1
+#endif
+
 void
 simple_read_cb(int fd, short event, void *arg)
 {
@@ -246,7 +251,7 @@ setup_test(char *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__);
                exit(1);
        }
index 85f3855da53097fe6c6ba0e7b5efc7df9477666c..a674754ad15f04ec744c058192403c72f3d2f444 100644 (file)
@@ -50,7 +50,9 @@
 #ifdef HAVE_NETINET_IN6_H
 #include <netinet/in6.h>
 #endif
+#ifdef HAVE_NETDB_H
 #include <netdb.h>
+#endif
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -341,7 +343,7 @@ dns_server(void)
        evdns_close_server_port(port);
        evdns_shutdown(0); /* remove ourself as nameserver. */
 #ifdef WIN32
-       CloseHandle(sock);
+       closesocket(sock);
 #else
        close(sock);
 #endif
index 4a59dff46441af897c5ca8e4035a48d1eff3db4a..03fd7ec3b34534840d6b743d932ab271ee77b93c 100644 (file)
@@ -44,8 +44,8 @@
 #include <sys/socket.h>
 #include <sys/signal.h>
 #include <unistd.h>
-#endif
 #include <netdb.h>
+#endif
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -96,14 +96,34 @@ http_setup(short *pport, struct event_base *base)
        return (myhttp);
 }
 
+#ifndef NI_MAXSERV
+#define NI_MAXSERV 1024
+#endif
+
 int
 http_connect(const char *address, u_short port)
 {
        /* Stupid code for connecting */
+#ifdef WIN32
+       struct hostent *he;
+       struct sockaddr_in sin;
+#else
        struct addrinfo ai, *aitop;
        char strport[NI_MAXSERV];
+#endif
+       struct sockaddr *sa;
+       int slen;
        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));
        ai.ai_family = AF_INET;
        ai.ai_socktype = SOCK_STREAM;
@@ -112,15 +132,20 @@ http_connect(const char *address, u_short port)
                event_warn("getaddrinfo");
                return (-1);
        }
+       sa = aitop->ai_addr;
+       slen = aitop->ai_addrlen;
+#endif
         
        fd = socket(AF_INET, SOCK_STREAM, 0);
        if (fd == -1)
                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");
 
+#ifndef WIN32
        freeaddrinfo(aitop);
+#endif
 
        return (fd);
 }
index a2dd85647915e1ef98a52118b417c837cb86e372..3361f9e952b170c5993528b923160158fa9f1d5d 100644 (file)
@@ -44,8 +44,8 @@
 #include <sys/socket.h>
 #include <sys/signal.h>
 #include <unistd.h>
-#endif
 #include <netdb.h>
+#endif
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdio.h>
index 4b1883c2186cf15770c1e026ce8d93880783cc90..2dd4c8942ecb8562ce8bc1d5c27e0d4661ac32e1 100644 (file)
@@ -7,10 +7,15 @@
 #endif
 
 
+#ifdef WIN32
+#include <winsock2.h>
+#endif
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/time.h>
+#ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -19,6 +24,7 @@
 #include <errno.h>
 
 #include <event.h>
+#include <evutil.h>
 
 int test_okay = 1;
 int called = 0;
@@ -43,6 +49,10 @@ read_cb(int fd, short event, void *arg)
        called++;
 }
 
+#ifndef SHUT_WR
+#define SHUT_WR 1
+#endif
+
 int
 main (int argc, char **argv)
 {
@@ -50,7 +60,7 @@ main (int argc, char **argv)
        char *test = "test string";
        int pair[2];
 
-       if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
+       if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
                return (1);
 
        
index 7d22de55e83193bcf99d22d1fac919605918cf5b..c368715fd67d2592c08466daa0dc429e21f09912 100644 (file)
@@ -10,7 +10,9 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/time.h>
+#ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdio.h>
index e21e8e0f2af05f17f82e52c9b173a7aebff9a93b..901b39a4b9a23d3ad7ac063c4ae7e9e41e30c2fe 100644 (file)
@@ -25,6 +25,16 @@ int called = 0;
 
 struct event *ev[NEVENT];
 
+int
+rand_int(int n)
+{
+#ifdef WIN32
+       return (int)(rand() * n);
+#else
+       return (int)(random() % n);
+#endif
+}
+
 void
 time_cb(int fd, short event, void *arg)
 {
@@ -35,9 +45,9 @@ time_cb(int fd, short event, void *arg)
 
        if (called < 10*NEVENT) {
                for (i = 0; i < 10; i++) {
-                       j = random() % NEVENT;
+                       j = rand_int(NEVENT);
                        tv.tv_sec = 0;
-                       tv.tv_usec = random() % 50000L;
+                       tv.tv_usec = rand_int(50000);
                        if (tv.tv_usec % 2)
                                evtimer_add(ev[j], &tv);
                        else
@@ -61,7 +71,7 @@ main (int argc, char **argv)
                /* Initalize one event */
                evtimer_set(ev[i], time_cb, ev[i]);
                tv.tv_sec = 0;
-               tv.tv_usec = random() % 50000L;
+               tv.tv_usec = rand_int(50000);
                evtimer_add(ev[i], &tv);
        }
 
index 19f591e2809e7c1ab6470936519e8ffbaf595fc7..db2894ca97b51b940d133002f40139a49e05c1e0 100644 (file)
@@ -7,10 +7,15 @@
 #endif
 
 
+#ifdef WIN32
+#include <winsock2.h>
+#endif
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/time.h>
+#ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -20,6 +25,7 @@
 #include <errno.h>
 
 #include <event.h>
+#include <evutil.h>
 
 int pair[2];
 int test_okay = 1;
@@ -51,10 +57,12 @@ main (int argc, char **argv)
 {
        struct event ev;
 
+#ifndef WIN32
        if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
                return (1);
+#endif
 
-       if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
+       if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
                return (1);
 
        /* Initalize the event library */