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

Unified Diff: net/socket/tcp_socket_unittest.cc

Issue 2815993002: Adds a method to TCPServerSocket to adopt a socket. (Closed)
Patch Set: Refined GetSocketDescriptor per review. Created 3 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
« no previous file with comments | « net/socket/tcp_socket_posix.cc ('k') | net/socket/tcp_socket_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/tcp_socket_unittest.cc
diff --git a/net/socket/tcp_socket_unittest.cc b/net/socket/tcp_socket_unittest.cc
index d9da13c660cc5f7910de744af5932ff324f575d0..15fdc04f3675635cec7a75df28a08145d02e33fe 100644
--- a/net/socket/tcp_socket_unittest.cc
+++ b/net/socket/tcp_socket_unittest.cc
@@ -226,12 +226,51 @@ TEST_F(TCPSocketTest, AcceptAsync) {
TestAcceptAsync();
}
-#if defined(OS_WIN)
-// Test Accept() for AdoptListenSocket.
-TEST_F(TCPSocketTest, AcceptForAdoptedListenSocket) {
- // Create a socket to be used with AdoptListenSocket.
- SOCKET existing_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- ASSERT_THAT(socket_.AdoptListenSocket(existing_socket), IsOk());
+// Test AdoptConnectedSocket()
+TEST_F(TCPSocketTest, AdoptConnectedSocket) {
+ TCPSocket accepting_socket(NULL, NULL, NetLogSource());
+ ASSERT_THAT(accepting_socket.Open(ADDRESS_FAMILY_IPV4), IsOk());
+ ASSERT_THAT(accepting_socket.Bind(IPEndPoint(IPAddress::IPv4Localhost(), 0)),
+ IsOk());
+ ASSERT_THAT(accepting_socket.GetLocalAddress(&local_address_), IsOk());
+ ASSERT_THAT(accepting_socket.Listen(kListenBacklog), IsOk());
+
+ TestCompletionCallback connect_callback;
+ // TODO(yzshen): Switch to use TCPSocket when it supports client socket
+ // operations.
+ TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
+ NetLogSource());
+ connecting_socket.Connect(connect_callback.callback());
+
+ TestCompletionCallback accept_callback;
+ std::unique_ptr<TCPSocket> accepted_socket;
+ IPEndPoint accepted_address;
+ int result = accepting_socket.Accept(&accepted_socket, &accepted_address,
+ accept_callback.callback());
+ if (result == ERR_IO_PENDING)
+ result = accept_callback.WaitForResult();
+ ASSERT_THAT(result, IsOk());
+
+ SocketDescriptor accepted_descriptor =
+ accepted_socket->ReleaseSocketDescriptorForTesting();
+
+ ASSERT_THAT(
+ socket_.AdoptConnectedSocket(accepted_descriptor, accepted_address),
+ IsOk());
+
+ // socket_ should now have the local address.
+ IPEndPoint adopted_address;
+ ASSERT_THAT(socket_.GetLocalAddress(&adopted_address), IsOk());
+ EXPECT_EQ(local_address_.address(), adopted_address.address());
+
+ EXPECT_THAT(connect_callback.WaitForResult(), IsOk());
+}
+
+// Test Accept() for AdoptUnconnectedSocket.
+TEST_F(TCPSocketTest, AcceptForAdoptedUnconnectedSocket) {
+ SocketDescriptor existing_socket =
+ CreatePlatformSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ ASSERT_THAT(socket_.AdoptUnconnectedSocket(existing_socket), IsOk());
IPEndPoint address(IPAddress::IPv4Localhost(), 0);
SockaddrStorage storage;
@@ -243,7 +282,6 @@ TEST_F(TCPSocketTest, AcceptForAdoptedListenSocket) {
TestAcceptAsync();
}
-#endif
// Accept two connections simultaneously.
TEST_F(TCPSocketTest, Accept2Connections) {
« no previous file with comments | « net/socket/tcp_socket_posix.cc ('k') | net/socket/tcp_socket_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698