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