Sebastian Lackner : ws2_32/tests: Add tests for calling select with zero timeout.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 8 07:49:55 CDT 2015
Module: wine
Branch: master
Commit: 3d51b4eb9de6922affb52e57e36fb28e46f334ed
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3d51b4eb9de6922affb52e57e36fb28e46f334ed
Author: Sebastian Lackner <sebastian at fds-team.de>
Date: Sun Jun 7 19:18:51 2015 +0200
ws2_32/tests: Add tests for calling select with zero timeout.
---
dlls/ws2_32/tests/sock.c | 38 +++++++++++++++++++++++++++-----------
1 file changed, 27 insertions(+), 11 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 6d328e6..610a563 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -3523,30 +3523,46 @@ static void test_select(void)
struct sockaddr_in address;
select_thread_params thread_params;
HANDLE thread_handle;
- DWORD id;
+ DWORD ticks, id;
fdRead = socket(AF_INET, SOCK_STREAM, 0);
ok( (fdRead != INVALID_SOCKET), "socket failed unexpectedly: %d\n", WSAGetLastError() );
fdWrite = socket(AF_INET, SOCK_STREAM, 0);
ok( (fdWrite != INVALID_SOCKET), "socket failed unexpectedly: %d\n", WSAGetLastError() );
+ maxfd = fdRead;
+ if (fdWrite > maxfd)
+ maxfd = fdWrite;
+
FD_ZERO_ALL();
FD_SET_ALL(fdRead);
FD_SET_ALL(fdWrite);
select_timeout.tv_sec=0;
- select_timeout.tv_usec=500;
+ select_timeout.tv_usec=0;
- maxfd = fdRead;
- if (fdWrite > maxfd)
- maxfd = fdWrite;
-
+ ticks = GetTickCount();
ret = select(maxfd+1, &readfds, &writefds, &exceptfds, &select_timeout);
- ok ( (ret == 0), "select should not return any socket handles\n");
- ok ( !FD_ISSET(fdRead, &readfds), "FD should not be set\n");
- ok ( !FD_ISSET(fdWrite, &writefds), "FD should not be set\n");
- ok ( !FD_ISSET(fdRead, &exceptfds), "FD should not be set\n");
- ok ( !FD_ISSET(fdWrite, &exceptfds), "FD should not be set\n");
+ ticks = GetTickCount() - ticks;
+ ok(ret == 0, "select should not return any socket handles\n");
+ ok(ticks < 10, "select was blocking for %u ms, expected < 10 ms\n", ticks);
+ ok(!FD_ISSET(fdRead, &readfds), "FD should not be set\n");
+ ok(!FD_ISSET(fdWrite, &writefds), "FD should not be set\n");
+ ok(!FD_ISSET(fdRead, &exceptfds), "FD should not be set\n");
+ ok(!FD_ISSET(fdWrite, &exceptfds), "FD should not be set\n");
+ FD_ZERO_ALL();
+ FD_SET_ALL(fdRead);
+ FD_SET_ALL(fdWrite);
+ select_timeout.tv_sec=0;
+ select_timeout.tv_usec=500;
+
+ ret = select(maxfd+1, &readfds, &writefds, &exceptfds, &select_timeout);
+ ok(ret == 0, "select should not return any socket handles\n");
+ ok(!FD_ISSET(fdRead, &readfds), "FD should not be set\n");
+ ok(!FD_ISSET(fdWrite, &writefds), "FD should not be set\n");
+ ok(!FD_ISSET(fdRead, &exceptfds), "FD should not be set\n");
+ ok(!FD_ISSET(fdWrite, &exceptfds), "FD should not be set\n");
+
ok ((listen(fdWrite, SOMAXCONN) == SOCKET_ERROR), "listen did not fail\n");
ret = closesocket(fdWrite);
ok ( (ret == 0), "closesocket failed unexpectedly: %d\n", ret);
More information about the wine-cvs
mailing list