 Chromium Code Reviews
 Chromium Code Reviews Issue 23498015:
  [NaCl SDK] Support non blocking TCP/UDP  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 23498015:
  [NaCl SDK] Support non blocking TCP/UDP  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| Index: native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc | 
| diff --git a/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc b/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc | 
| index fe22ae18e03452aabacf4dee31dd011ebb16d8b9..31ec723359367edd080237d44bce323db07c8bba 100644 | 
| --- a/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc | 
| +++ b/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc | 
| @@ -174,8 +174,47 @@ TEST_F(SocketTestUDP, SendRcv) { | 
| EXPECT_EQ(0, memcmp(outbuf, inbuf, sizeof(outbuf))); | 
| } | 
| -#if 0 | 
| +const size_t queue_size = 65536 * 8; | 
| +TEST_F(SocketTestUDP, FullFifo) { | 
| + char outbuf[16 * 1024]; | 
| + | 
| + EXPECT_EQ(Bind(sock1, LOCAL_HOST, PORT1), ENONE); | 
| + EXPECT_EQ(Bind(sock2, LOCAL_HOST, PORT2), ENONE); | 
| + | 
| + sockaddr_in addr; | 
| + socklen_t addrlen = sizeof(addr); | 
| + IP4ToSockAddr(LOCAL_HOST, PORT2, &addr); | 
| + | 
| + size_t total = 0; | 
| + while (total < queue_size * 8) { | 
| + int len = sendto(sock1, outbuf, sizeof(outbuf), MSG_DONTWAIT, | 
| + (sockaddr *) &addr, addrlen); | 
| + | 
| + if (len <= 0) { | 
| + EXPECT_EQ(-1, len); | 
| + EXPECT_EQ(errno, EWOULDBLOCK); | 
| + break; | 
| + } | 
| + | 
| + if (len >= 0) { | 
| + EXPECT_EQ(sizeof(outbuf), len); | 
| + total += len; | 
| + } | 
| + | 
| + } | 
| + EXPECT_GT(total, queue_size -1); | 
| + EXPECT_LT(total, queue_size * 8); | 
| +} | 
| + | 
| +// TODO(noelallen) BUG=294412 | 
| +// Re-enable testing on bots when server sockets are available. | 
| TEST_F(SocketTestTCP, Connect) { | 
| 
binji
2013/09/19 22:40:25
DISABLE_Connect?
 
noelallen1
2013/09/20 00:51:27
Done.
 | 
| + char outbuf[256]; | 
| + char inbuf[512]; | 
| + | 
| + memset(outbuf, 1, sizeof(outbuf)); | 
| + memset(inbuf, 0, sizeof(inbuf)); | 
| + | 
| int sock = socket(AF_INET, SOCK_STREAM, 0); | 
| EXPECT_NE(-1, sock); | 
| @@ -184,8 +223,14 @@ TEST_F(SocketTestTCP, Connect) { | 
| IP4ToSockAddr(LOCAL_HOST, PORT1, &addr); | 
| int err = connect(sock, (sockaddr*) &addr, addrlen); | 
| + | 
| EXPECT_EQ(ENONE, err) << "Failed with errno: " << errno << "\n"; | 
| + | 
| + EXPECT_EQ(sizeof(outbuf), write(sock, outbuf, sizeof(outbuf))); | 
| + EXPECT_EQ(sizeof(outbuf), read(sock, inbuf, sizeof(inbuf))); | 
| + | 
| + // Now they should be the same | 
| + EXPECT_EQ(0, memcmp(outbuf, inbuf, sizeof(outbuf))); | 
| } | 
| -#endif | 
| -#endif // PROVIDES_SOCKETPAIR_API | 
| +#endif // PROVIDES_SOCKET_API |