port poll tests to Windows

2008-09-12  Paolo Bonzini  <bonzini@gnu.org>

	* lib/sys_socket.in.h (EINPROGRESS): Define for Winsock case.
	* modules/poll-tests: Add inet_pton, stdbool, sockets.
	* tests/test-poll.c: Use them.  Use _pipe on Windows.
This commit is contained in:
Paolo Bonzini
2008-09-12 16:57:24 +02:00
parent f9f61e25ae
commit b03b6bfb8d
4 changed files with 21 additions and 8 deletions
+6
View File
@@ -1,3 +1,9 @@
2008-09-12 Paolo Bonzini <bonzini@gnu.org>
* lib/sys_socket.in.h (EINPROGRESS): Define for Winsock case.
* modules/poll-tests: Add inet_pton, stdbool, sockets.
* tests/test-poll.c: Use them. Use _pipe on Windows.
2008-09-12 Paolo Bonzini <bonzini@gnu.org>
* modules/poll-tests: New.
+1
View File
@@ -95,6 +95,7 @@
# endif
# if defined _WIN32 || defined __WIN32__
# define EINPROGRESS WSAEINPROGRESS
# define ENOTSOCK WSAENOTSOCK
# define EADDRINUSE WSAEADDRINUSE
# define ENETRESET WSAENETRESET
+3
View File
@@ -2,10 +2,13 @@ Files:
tests/test-poll.c
Depends-on:
stdbool
sys_socket
netinet_in
arpa_inet
extensions
inet_pton
sockets
configure.ac:
AC_CHECK_HEADERS_ONCE([io.h unistd.h sys/wait.h])
+11 -8
View File
@@ -27,10 +27,13 @@
#include <poll.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdbool.h>
#include <errno.h>
#include "sockets.h"
#ifdef HAVE_IO_H
#include <io.h>
#define pipe(x) _pipe(x, 256, O_BINARY)
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -39,8 +42,6 @@
#include <sys/wait.h>
#endif
enum { FALSE, TRUE };
#ifndef SO_REUSEPORT
#define SO_REUSEPORT SO_REUSEADDR
#endif
@@ -87,7 +88,7 @@ open_server_socket ()
memset (&ia, 0, sizeof (ia));
ia.sin_family = AF_INET;
inet_aton ("127.0.0.1", &ia.sin_addr);
inet_pton (AF_INET, "127.0.0.1", &ia.sin_addr);
ia.sin_port = htons (TEST_PORT);
if (bind (s, (struct sockaddr *) &ia, sizeof (ia)) < 0)
{
@@ -117,14 +118,14 @@ connect_to_socket (int blocking)
memset (&ia, 0, sizeof (ia));
ia.sin_family = AF_INET;
inet_aton ("127.0.0.1", &ia.sin_addr);
inet_pton (AF_INET, "127.0.0.1", &ia.sin_addr);
ia.sin_port = htons (TEST_PORT);
if (!blocking)
{
#ifdef __MSVCRT__
unsigned long iMode = 1;
ioctl (s, FIONBIO, &iMode);
ioctlsocket (s, FIONBIO, (void *) &iMode);
#elif defined F_GETFL
int oldflags = fcntl (s, F_GETFL, NULL);
@@ -218,7 +219,7 @@ test_connect_first (void)
if (poll1_nowait (s, POLLIN | POLLRDNORM | POLLRDBAND) != 0)
failed ("can read, socket not connected");
c1 = connect_to_socket (FALSE);
c1 = connect_to_socket (false);
if (poll1_wait (s, POLLIN | POLLRDNORM | POLLRDBAND) != (POLLIN | POLLRDNORM))
failed ("expecting POLLIN | POLLRDNORM on passive socket");
@@ -265,7 +266,7 @@ test_accept_first (void)
else
{
close (s);
c = connect_to_socket (TRUE);
c = connect_to_socket (true);
if (poll1_nowait (c, POLLOUT | POLLWRNORM | POLLRDBAND)
!= (POLLOUT | POLLWRNORM))
failed ("cannot write after blocking connect");
@@ -319,7 +320,7 @@ test_socket_pair (void)
socklen_t addrlen = sizeof (ia);
int s = open_server_socket ();
int c1 = connect_to_socket (FALSE);
int c1 = connect_to_socket (false);
int c2 = accept (s, (struct sockaddr *) &ia, &addrlen);
close (s);
@@ -358,6 +359,8 @@ main ()
{
int result;
gl_sockets_startup (SOCKETS_2_0);
#ifdef INTERACTIVE
printf ("Please press Enter\n");
test (test_tty, "TTY");