| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/socket/tcp_socket.h" | 5 #include "net/socket/tcp_socket.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 TCPClientSocket connecting_socket(local_address_list(), | 79 TCPClientSocket connecting_socket(local_address_list(), |
| 80 NULL, NetLog::Source()); | 80 NULL, NetLog::Source()); |
| 81 connecting_socket.Connect(connect_callback.callback()); | 81 connecting_socket.Connect(connect_callback.callback()); |
| 82 | 82 |
| 83 EXPECT_EQ(OK, connect_callback.WaitForResult()); | 83 EXPECT_EQ(OK, connect_callback.WaitForResult()); |
| 84 EXPECT_EQ(OK, accept_callback.WaitForResult()); | 84 EXPECT_EQ(OK, accept_callback.WaitForResult()); |
| 85 | 85 |
| 86 EXPECT_TRUE(accepted_socket.get()); | 86 EXPECT_TRUE(accepted_socket.get()); |
| 87 | 87 |
| 88 // Both sockets should be on the loopback network interface. | 88 // Both sockets should be on the loopback network interface. |
| 89 EXPECT_EQ(accepted_address.address(), local_address_.address()); | 89 EXPECT_EQ(accepted_address.address_number(), |
| 90 local_address_.address_number()); |
| 90 } | 91 } |
| 91 | 92 |
| 92 AddressList local_address_list() const { | 93 AddressList local_address_list() const { |
| 93 return AddressList(local_address_); | 94 return AddressList(local_address_); |
| 94 } | 95 } |
| 95 | 96 |
| 96 TCPSocket socket_; | 97 TCPSocket socket_; |
| 97 IPEndPoint local_address_; | 98 IPEndPoint local_address_; |
| 98 }; | 99 }; |
| 99 | 100 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 113 IPEndPoint accepted_address; | 114 IPEndPoint accepted_address; |
| 114 int result = socket_.Accept(&accepted_socket, &accepted_address, | 115 int result = socket_.Accept(&accepted_socket, &accepted_address, |
| 115 accept_callback.callback()); | 116 accept_callback.callback()); |
| 116 if (result == ERR_IO_PENDING) | 117 if (result == ERR_IO_PENDING) |
| 117 result = accept_callback.WaitForResult(); | 118 result = accept_callback.WaitForResult(); |
| 118 ASSERT_EQ(OK, result); | 119 ASSERT_EQ(OK, result); |
| 119 | 120 |
| 120 EXPECT_TRUE(accepted_socket.get()); | 121 EXPECT_TRUE(accepted_socket.get()); |
| 121 | 122 |
| 122 // Both sockets should be on the loopback network interface. | 123 // Both sockets should be on the loopback network interface. |
| 123 EXPECT_EQ(accepted_address.address(), local_address_.address()); | 124 EXPECT_EQ(accepted_address.address_number(), local_address_.address_number()); |
| 124 | 125 |
| 125 EXPECT_EQ(OK, connect_callback.WaitForResult()); | 126 EXPECT_EQ(OK, connect_callback.WaitForResult()); |
| 126 } | 127 } |
| 127 | 128 |
| 128 // Test Accept() callback. | 129 // Test Accept() callback. |
| 129 TEST_F(TCPSocketTest, AcceptAsync) { | 130 TEST_F(TCPSocketTest, AcceptAsync) { |
| 130 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4()); | 131 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4()); |
| 131 TestAcceptAsync(); | 132 TestAcceptAsync(); |
| 132 } | 133 } |
| 133 | 134 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 result = accept_callback2.WaitForResult(); | 186 result = accept_callback2.WaitForResult(); |
| 186 ASSERT_EQ(OK, result); | 187 ASSERT_EQ(OK, result); |
| 187 | 188 |
| 188 EXPECT_EQ(OK, connect_callback.WaitForResult()); | 189 EXPECT_EQ(OK, connect_callback.WaitForResult()); |
| 189 EXPECT_EQ(OK, connect_callback2.WaitForResult()); | 190 EXPECT_EQ(OK, connect_callback2.WaitForResult()); |
| 190 | 191 |
| 191 EXPECT_TRUE(accepted_socket.get()); | 192 EXPECT_TRUE(accepted_socket.get()); |
| 192 EXPECT_TRUE(accepted_socket2.get()); | 193 EXPECT_TRUE(accepted_socket2.get()); |
| 193 EXPECT_NE(accepted_socket.get(), accepted_socket2.get()); | 194 EXPECT_NE(accepted_socket.get(), accepted_socket2.get()); |
| 194 | 195 |
| 195 EXPECT_EQ(accepted_address.address(), local_address_.address()); | 196 EXPECT_EQ(accepted_address.address_number(), local_address_.address_number()); |
| 196 EXPECT_EQ(accepted_address2.address(), local_address_.address()); | 197 EXPECT_EQ(accepted_address2.address_number(), |
| 198 local_address_.address_number()); |
| 197 } | 199 } |
| 198 | 200 |
| 199 // Test listening and accepting with a socket bound to an IPv6 address. | 201 // Test listening and accepting with a socket bound to an IPv6 address. |
| 200 TEST_F(TCPSocketTest, AcceptIPv6) { | 202 TEST_F(TCPSocketTest, AcceptIPv6) { |
| 201 bool initialized = false; | 203 bool initialized = false; |
| 202 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv6(&initialized)); | 204 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv6(&initialized)); |
| 203 if (!initialized) | 205 if (!initialized) |
| 204 return; | 206 return; |
| 205 | 207 |
| 206 TestCompletionCallback connect_callback; | 208 TestCompletionCallback connect_callback; |
| 207 TCPClientSocket connecting_socket(local_address_list(), | 209 TCPClientSocket connecting_socket(local_address_list(), |
| 208 NULL, NetLog::Source()); | 210 NULL, NetLog::Source()); |
| 209 connecting_socket.Connect(connect_callback.callback()); | 211 connecting_socket.Connect(connect_callback.callback()); |
| 210 | 212 |
| 211 TestCompletionCallback accept_callback; | 213 TestCompletionCallback accept_callback; |
| 212 scoped_ptr<TCPSocket> accepted_socket; | 214 scoped_ptr<TCPSocket> accepted_socket; |
| 213 IPEndPoint accepted_address; | 215 IPEndPoint accepted_address; |
| 214 int result = socket_.Accept(&accepted_socket, &accepted_address, | 216 int result = socket_.Accept(&accepted_socket, &accepted_address, |
| 215 accept_callback.callback()); | 217 accept_callback.callback()); |
| 216 if (result == ERR_IO_PENDING) | 218 if (result == ERR_IO_PENDING) |
| 217 result = accept_callback.WaitForResult(); | 219 result = accept_callback.WaitForResult(); |
| 218 ASSERT_EQ(OK, result); | 220 ASSERT_EQ(OK, result); |
| 219 | 221 |
| 220 EXPECT_TRUE(accepted_socket.get()); | 222 EXPECT_TRUE(accepted_socket.get()); |
| 221 | 223 |
| 222 // Both sockets should be on the loopback network interface. | 224 // Both sockets should be on the loopback network interface. |
| 223 EXPECT_EQ(accepted_address.address(), local_address_.address()); | 225 EXPECT_EQ(accepted_address.address_number(), local_address_.address_number()); |
| 224 | 226 |
| 225 EXPECT_EQ(OK, connect_callback.WaitForResult()); | 227 EXPECT_EQ(OK, connect_callback.WaitForResult()); |
| 226 } | 228 } |
| 227 | 229 |
| 228 TEST_F(TCPSocketTest, ReadWrite) { | 230 TEST_F(TCPSocketTest, ReadWrite) { |
| 229 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4()); | 231 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4()); |
| 230 | 232 |
| 231 TestCompletionCallback connect_callback; | 233 TestCompletionCallback connect_callback; |
| 232 TCPSocket connecting_socket(NULL, NetLog::Source()); | 234 TCPSocket connecting_socket(NULL, NetLog::Source()); |
| 233 int result = connecting_socket.Open(ADDRESS_FAMILY_IPV4); | 235 int result = connecting_socket.Open(ADDRESS_FAMILY_IPV4); |
| 234 ASSERT_EQ(OK, result); | 236 ASSERT_EQ(OK, result); |
| 235 connecting_socket.Connect(local_address_, connect_callback.callback()); | 237 connecting_socket.Connect(local_address_, connect_callback.callback()); |
| 236 | 238 |
| 237 TestCompletionCallback accept_callback; | 239 TestCompletionCallback accept_callback; |
| 238 scoped_ptr<TCPSocket> accepted_socket; | 240 scoped_ptr<TCPSocket> accepted_socket; |
| 239 IPEndPoint accepted_address; | 241 IPEndPoint accepted_address; |
| 240 result = socket_.Accept(&accepted_socket, &accepted_address, | 242 result = socket_.Accept(&accepted_socket, &accepted_address, |
| 241 accept_callback.callback()); | 243 accept_callback.callback()); |
| 242 ASSERT_EQ(OK, accept_callback.GetResult(result)); | 244 ASSERT_EQ(OK, accept_callback.GetResult(result)); |
| 243 | 245 |
| 244 ASSERT_TRUE(accepted_socket.get()); | 246 ASSERT_TRUE(accepted_socket.get()); |
| 245 | 247 |
| 246 // Both sockets should be on the loopback network interface. | 248 // Both sockets should be on the loopback network interface. |
| 247 EXPECT_EQ(accepted_address.address(), local_address_.address()); | 249 EXPECT_EQ(accepted_address.address_number(), local_address_.address_number()); |
| 248 | 250 |
| 249 EXPECT_EQ(OK, connect_callback.WaitForResult()); | 251 EXPECT_EQ(OK, connect_callback.WaitForResult()); |
| 250 | 252 |
| 251 const std::string message("test message"); | 253 const std::string message("test message"); |
| 252 std::vector<char> buffer(message.size()); | 254 std::vector<char> buffer(message.size()); |
| 253 | 255 |
| 254 size_t bytes_written = 0; | 256 size_t bytes_written = 0; |
| 255 while (bytes_written < message.size()) { | 257 while (bytes_written < message.size()) { |
| 256 scoped_refptr<IOBufferWithSize> write_buffer( | 258 scoped_refptr<IOBufferWithSize> write_buffer( |
| 257 new IOBufferWithSize(message.size() - bytes_written)); | 259 new IOBufferWithSize(message.size() - bytes_written)); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 280 memmove(&buffer[bytes_read], read_buffer->data(), read_result); | 282 memmove(&buffer[bytes_read], read_buffer->data(), read_result); |
| 281 bytes_read += read_result; | 283 bytes_read += read_result; |
| 282 } | 284 } |
| 283 | 285 |
| 284 std::string received_message(buffer.begin(), buffer.end()); | 286 std::string received_message(buffer.begin(), buffer.end()); |
| 285 ASSERT_EQ(message, received_message); | 287 ASSERT_EQ(message, received_message); |
| 286 } | 288 } |
| 287 | 289 |
| 288 } // namespace | 290 } // namespace |
| 289 } // namespace net | 291 } // namespace net |
| OLD | NEW |