Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(646)

Unified Diff: net/socket/tcp_socket_unittest.cc

Issue 236203018: win: Implement Bluetooth server. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: for #4 comments Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/socket/tcp_socket_unittest.cc
diff --git a/net/socket/tcp_socket_unittest.cc b/net/socket/tcp_socket_unittest.cc
index a45fcba016bcd05172ca022c93b4a5b843de5a79..886079e1ed04489701e473ca3b19e6049978c75e 100644
--- a/net/socket/tcp_socket_unittest.cc
+++ b/net/socket/tcp_socket_unittest.cc
@@ -64,6 +64,28 @@ class TCPSocketTest : public PlatformTest {
*address = IPEndPoint(ip_number, port);
}
+ void TestAcceptAsync() {
+ TestCompletionCallback accept_callback;
+ scoped_ptr<TCPSocket> accepted_socket;
+ IPEndPoint accepted_address;
+ ASSERT_EQ(ERR_IO_PENDING,
+ socket_.Accept(&accepted_socket, &accepted_address,
+ accept_callback.callback()));
+
+ TestCompletionCallback connect_callback;
+ TCPClientSocket connecting_socket(local_address_list(),
+ NULL, NetLog::Source());
+ connecting_socket.Connect(connect_callback.callback());
+
+ EXPECT_EQ(OK, connect_callback.WaitForResult());
+ EXPECT_EQ(OK, accept_callback.WaitForResult());
+
+ EXPECT_TRUE(accepted_socket.get());
+
+ // Both sockets should be on the loopback network interface.
+ EXPECT_EQ(accepted_address.address(), local_address_.address());
+ }
+
AddressList local_address_list() const {
return AddressList(local_address_);
}
@@ -103,26 +125,7 @@ TEST_F(TCPSocketTest, Accept) {
// Test Accept() callback.
TEST_F(TCPSocketTest, AcceptAsync) {
ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4());
-
- TestCompletionCallback accept_callback;
- scoped_ptr<TCPSocket> accepted_socket;
- IPEndPoint accepted_address;
- ASSERT_EQ(ERR_IO_PENDING,
- socket_.Accept(&accepted_socket, &accepted_address,
- accept_callback.callback()));
-
- TestCompletionCallback connect_callback;
- TCPClientSocket connecting_socket(local_address_list(),
- NULL, NetLog::Source());
- connecting_socket.Connect(connect_callback.callback());
-
- EXPECT_EQ(OK, connect_callback.WaitForResult());
- EXPECT_EQ(OK, accept_callback.WaitForResult());
-
- EXPECT_TRUE(accepted_socket.get());
-
- // Both sockets should be on the loopback network interface.
- EXPECT_EQ(accepted_address.address(), local_address_.address());
+ TestAcceptAsync();
}
// Accept two connections simultaneously.
@@ -259,5 +262,25 @@ TEST_F(TCPSocketTest, ReadWrite) {
ASSERT_EQ(message, received_message);
}
+#if defined(OS_WIN)
+// Test Accept() for AdoptListenSocket.
+TEST_F(TCPSocketTest, AcceptForAdoptedListenSocket) {
wtc 2014/04/28 23:54:43 Nit: it seems better to list this new test right a
xiyuan 2014/04/29 00:50:26 Done.
+ // Create a socket to be used with AdoptListenSocket.
+ SOCKET existing_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ ASSERT_EQ(OK, socket_.AdoptListenSocket(existing_socket));
+
+ IPEndPoint address;
+ ParseAddress("127.0.0.1", 0, &address);
+ SockaddrStorage storage;
+ ASSERT_TRUE(address.ToSockAddr(storage.addr, &storage.addr_len));
+ ASSERT_EQ(0, bind(existing_socket, storage.addr, storage.addr_len));
+
+ ASSERT_EQ(OK, socket_.Listen(kListenBacklog));
+ ASSERT_EQ(OK, socket_.GetLocalAddress(&local_address_));
+
+ TestAcceptAsync();
+}
+#endif
+
} // namespace
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698