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

Side by Side Diff: net/socket/tcp_socket_unittest.cc

Issue 1376473003: Notify NQE of TCP RTT values (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed rsleevi comments Created 4 years, 10 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 unified diff | Download patch
OLDNEW
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 10 matching lines...) Expand all
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 #include "testing/platform_test.h" 22 #include "testing/platform_test.h"
23 23
24 namespace net { 24 namespace net {
25 25
26 namespace { 26 namespace {
27 const int kListenBacklog = 5; 27 const int kListenBacklog = 5;
28 28
29 class TCPSocketTest : public PlatformTest { 29 class TCPSocketTest : public PlatformTest {
30 protected: 30 protected:
31 TCPSocketTest() : socket_(NULL, NetLog::Source()) { 31 TCPSocketTest() : socket_(NULL, NULL, NetLog::Source()) {}
32 }
33 32
34 void SetUpListenIPv4() { 33 void SetUpListenIPv4() {
35 IPEndPoint address; 34 IPEndPoint address;
36 ParseAddress("127.0.0.1", 0, &address); 35 ParseAddress("127.0.0.1", 0, &address);
37 36
38 ASSERT_EQ(OK, socket_.Open(ADDRESS_FAMILY_IPV4)); 37 ASSERT_EQ(OK, socket_.Open(ADDRESS_FAMILY_IPV4));
39 ASSERT_EQ(OK, socket_.Bind(address)); 38 ASSERT_EQ(OK, socket_.Bind(address));
40 ASSERT_EQ(OK, socket_.Listen(kListenBacklog)); 39 ASSERT_EQ(OK, socket_.Listen(kListenBacklog));
41 ASSERT_EQ(OK, socket_.GetLocalAddress(&local_address_)); 40 ASSERT_EQ(OK, socket_.GetLocalAddress(&local_address_));
42 } 41 }
(...skipping 26 matching lines...) Expand all
69 68
70 void TestAcceptAsync() { 69 void TestAcceptAsync() {
71 TestCompletionCallback accept_callback; 70 TestCompletionCallback accept_callback;
72 scoped_ptr<TCPSocket> accepted_socket; 71 scoped_ptr<TCPSocket> accepted_socket;
73 IPEndPoint accepted_address; 72 IPEndPoint accepted_address;
74 ASSERT_EQ(ERR_IO_PENDING, 73 ASSERT_EQ(ERR_IO_PENDING,
75 socket_.Accept(&accepted_socket, &accepted_address, 74 socket_.Accept(&accepted_socket, &accepted_address,
76 accept_callback.callback())); 75 accept_callback.callback()));
77 76
78 TestCompletionCallback connect_callback; 77 TestCompletionCallback connect_callback;
79 TCPClientSocket connecting_socket(local_address_list(), 78 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
80 NULL, NetLog::Source()); 79 NetLog::Source());
81 connecting_socket.Connect(connect_callback.callback()); 80 connecting_socket.Connect(connect_callback.callback());
82 81
83 EXPECT_EQ(OK, connect_callback.WaitForResult()); 82 EXPECT_EQ(OK, connect_callback.WaitForResult());
84 EXPECT_EQ(OK, accept_callback.WaitForResult()); 83 EXPECT_EQ(OK, accept_callback.WaitForResult());
85 84
86 EXPECT_TRUE(accepted_socket.get()); 85 EXPECT_TRUE(accepted_socket.get());
87 86
88 // Both sockets should be on the loopback network interface. 87 // Both sockets should be on the loopback network interface.
89 EXPECT_EQ(accepted_address.address(), local_address_.address()); 88 EXPECT_EQ(accepted_address.address(), local_address_.address());
90 } 89 }
91 90
92 AddressList local_address_list() const { 91 AddressList local_address_list() const {
93 return AddressList(local_address_); 92 return AddressList(local_address_);
94 } 93 }
95 94
96 TCPSocket socket_; 95 TCPSocket socket_;
97 IPEndPoint local_address_; 96 IPEndPoint local_address_;
98 }; 97 };
99 98
100 // Test listening and accepting with a socket bound to an IPv4 address. 99 // Test listening and accepting with a socket bound to an IPv4 address.
101 TEST_F(TCPSocketTest, Accept) { 100 TEST_F(TCPSocketTest, Accept) {
102 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4()); 101 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4());
103 102
104 TestCompletionCallback connect_callback; 103 TestCompletionCallback connect_callback;
105 // TODO(yzshen): Switch to use TCPSocket when it supports client socket 104 // TODO(yzshen): Switch to use TCPSocket when it supports client socket
106 // operations. 105 // operations.
107 TCPClientSocket connecting_socket(local_address_list(), 106 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
108 NULL, NetLog::Source()); 107 NetLog::Source());
109 connecting_socket.Connect(connect_callback.callback()); 108 connecting_socket.Connect(connect_callback.callback());
110 109
111 TestCompletionCallback accept_callback; 110 TestCompletionCallback accept_callback;
112 scoped_ptr<TCPSocket> accepted_socket; 111 scoped_ptr<TCPSocket> accepted_socket;
113 IPEndPoint accepted_address; 112 IPEndPoint accepted_address;
114 int result = socket_.Accept(&accepted_socket, &accepted_address, 113 int result = socket_.Accept(&accepted_socket, &accepted_address,
115 accept_callback.callback()); 114 accept_callback.callback());
116 if (result == ERR_IO_PENDING) 115 if (result == ERR_IO_PENDING)
117 result = accept_callback.WaitForResult(); 116 result = accept_callback.WaitForResult();
118 ASSERT_EQ(OK, result); 117 ASSERT_EQ(OK, result);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 156
158 TestCompletionCallback accept_callback; 157 TestCompletionCallback accept_callback;
159 scoped_ptr<TCPSocket> accepted_socket; 158 scoped_ptr<TCPSocket> accepted_socket;
160 IPEndPoint accepted_address; 159 IPEndPoint accepted_address;
161 160
162 ASSERT_EQ(ERR_IO_PENDING, 161 ASSERT_EQ(ERR_IO_PENDING,
163 socket_.Accept(&accepted_socket, &accepted_address, 162 socket_.Accept(&accepted_socket, &accepted_address,
164 accept_callback.callback())); 163 accept_callback.callback()));
165 164
166 TestCompletionCallback connect_callback; 165 TestCompletionCallback connect_callback;
167 TCPClientSocket connecting_socket(local_address_list(), 166 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
168 NULL, NetLog::Source()); 167 NetLog::Source());
169 connecting_socket.Connect(connect_callback.callback()); 168 connecting_socket.Connect(connect_callback.callback());
170 169
171 TestCompletionCallback connect_callback2; 170 TestCompletionCallback connect_callback2;
172 TCPClientSocket connecting_socket2(local_address_list(), 171 TCPClientSocket connecting_socket2(local_address_list(), NULL, NULL,
173 NULL, NetLog::Source()); 172 NetLog::Source());
174 connecting_socket2.Connect(connect_callback2.callback()); 173 connecting_socket2.Connect(connect_callback2.callback());
175 174
176 EXPECT_EQ(OK, accept_callback.WaitForResult()); 175 EXPECT_EQ(OK, accept_callback.WaitForResult());
177 176
178 TestCompletionCallback accept_callback2; 177 TestCompletionCallback accept_callback2;
179 scoped_ptr<TCPSocket> accepted_socket2; 178 scoped_ptr<TCPSocket> accepted_socket2;
180 IPEndPoint accepted_address2; 179 IPEndPoint accepted_address2;
181 180
182 int result = socket_.Accept(&accepted_socket2, &accepted_address2, 181 int result = socket_.Accept(&accepted_socket2, &accepted_address2,
183 accept_callback2.callback()); 182 accept_callback2.callback());
(...skipping 13 matching lines...) Expand all
197 } 196 }
198 197
199 // Test listening and accepting with a socket bound to an IPv6 address. 198 // Test listening and accepting with a socket bound to an IPv6 address.
200 TEST_F(TCPSocketTest, AcceptIPv6) { 199 TEST_F(TCPSocketTest, AcceptIPv6) {
201 bool initialized = false; 200 bool initialized = false;
202 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv6(&initialized)); 201 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv6(&initialized));
203 if (!initialized) 202 if (!initialized)
204 return; 203 return;
205 204
206 TestCompletionCallback connect_callback; 205 TestCompletionCallback connect_callback;
207 TCPClientSocket connecting_socket(local_address_list(), 206 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
208 NULL, NetLog::Source()); 207 NetLog::Source());
209 connecting_socket.Connect(connect_callback.callback()); 208 connecting_socket.Connect(connect_callback.callback());
210 209
211 TestCompletionCallback accept_callback; 210 TestCompletionCallback accept_callback;
212 scoped_ptr<TCPSocket> accepted_socket; 211 scoped_ptr<TCPSocket> accepted_socket;
213 IPEndPoint accepted_address; 212 IPEndPoint accepted_address;
214 int result = socket_.Accept(&accepted_socket, &accepted_address, 213 int result = socket_.Accept(&accepted_socket, &accepted_address,
215 accept_callback.callback()); 214 accept_callback.callback());
216 if (result == ERR_IO_PENDING) 215 if (result == ERR_IO_PENDING)
217 result = accept_callback.WaitForResult(); 216 result = accept_callback.WaitForResult();
218 ASSERT_EQ(OK, result); 217 ASSERT_EQ(OK, result);
219 218
220 EXPECT_TRUE(accepted_socket.get()); 219 EXPECT_TRUE(accepted_socket.get());
221 220
222 // Both sockets should be on the loopback network interface. 221 // Both sockets should be on the loopback network interface.
223 EXPECT_EQ(accepted_address.address(), local_address_.address()); 222 EXPECT_EQ(accepted_address.address(), local_address_.address());
224 223
225 EXPECT_EQ(OK, connect_callback.WaitForResult()); 224 EXPECT_EQ(OK, connect_callback.WaitForResult());
226 } 225 }
227 226
228 TEST_F(TCPSocketTest, ReadWrite) { 227 TEST_F(TCPSocketTest, ReadWrite) {
229 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4()); 228 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4());
230 229
231 TestCompletionCallback connect_callback; 230 TestCompletionCallback connect_callback;
232 TCPSocket connecting_socket(NULL, NetLog::Source()); 231 TCPSocket connecting_socket(NULL, NULL, NetLog::Source());
233 int result = connecting_socket.Open(ADDRESS_FAMILY_IPV4); 232 int result = connecting_socket.Open(ADDRESS_FAMILY_IPV4);
234 ASSERT_EQ(OK, result); 233 ASSERT_EQ(OK, result);
235 connecting_socket.Connect(local_address_, connect_callback.callback()); 234 connecting_socket.Connect(local_address_, connect_callback.callback());
236 235
237 TestCompletionCallback accept_callback; 236 TestCompletionCallback accept_callback;
238 scoped_ptr<TCPSocket> accepted_socket; 237 scoped_ptr<TCPSocket> accepted_socket;
239 IPEndPoint accepted_address; 238 IPEndPoint accepted_address;
240 result = socket_.Accept(&accepted_socket, &accepted_address, 239 result = socket_.Accept(&accepted_socket, &accepted_address,
241 accept_callback.callback()); 240 accept_callback.callback());
242 ASSERT_EQ(OK, accept_callback.GetResult(result)); 241 ASSERT_EQ(OK, accept_callback.GetResult(result));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 memmove(&buffer[bytes_read], read_buffer->data(), read_result); 279 memmove(&buffer[bytes_read], read_buffer->data(), read_result);
281 bytes_read += read_result; 280 bytes_read += read_result;
282 } 281 }
283 282
284 std::string received_message(buffer.begin(), buffer.end()); 283 std::string received_message(buffer.begin(), buffer.end());
285 ASSERT_EQ(message, received_message); 284 ASSERT_EQ(message, received_message);
286 } 285 }
287 286
288 } // namespace 287 } // namespace
289 } // namespace net 288 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698