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

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: Rebased, addressed sleevi comments Created 4 years, 9 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 11 matching lines...) Expand all
22 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
23 #include "testing/platform_test.h" 23 #include "testing/platform_test.h"
24 24
25 namespace net { 25 namespace net {
26 26
27 namespace { 27 namespace {
28 const int kListenBacklog = 5; 28 const int kListenBacklog = 5;
29 29
30 class TCPSocketTest : public PlatformTest { 30 class TCPSocketTest : public PlatformTest {
31 protected: 31 protected:
32 TCPSocketTest() : socket_(NULL, NetLog::Source()) { 32 TCPSocketTest() : socket_(NULL, NULL, NetLog::Source()) {}
33 }
34 33
35 void SetUpListenIPv4() { 34 void SetUpListenIPv4() {
36 ASSERT_EQ(OK, socket_.Open(ADDRESS_FAMILY_IPV4)); 35 ASSERT_EQ(OK, socket_.Open(ADDRESS_FAMILY_IPV4));
37 ASSERT_EQ(OK, socket_.Bind(IPEndPoint(IPAddress::IPv4Localhost(), 0))); 36 ASSERT_EQ(OK, socket_.Bind(IPEndPoint(IPAddress::IPv4Localhost(), 0)));
38 ASSERT_EQ(OK, socket_.Listen(kListenBacklog)); 37 ASSERT_EQ(OK, socket_.Listen(kListenBacklog));
39 ASSERT_EQ(OK, socket_.GetLocalAddress(&local_address_)); 38 ASSERT_EQ(OK, socket_.GetLocalAddress(&local_address_));
40 } 39 }
41 40
42 void SetUpListenIPv6(bool* success) { 41 void SetUpListenIPv6(bool* success) {
43 *success = false; 42 *success = false;
(...skipping 11 matching lines...) Expand all
55 54
56 void TestAcceptAsync() { 55 void TestAcceptAsync() {
57 TestCompletionCallback accept_callback; 56 TestCompletionCallback accept_callback;
58 scoped_ptr<TCPSocket> accepted_socket; 57 scoped_ptr<TCPSocket> accepted_socket;
59 IPEndPoint accepted_address; 58 IPEndPoint accepted_address;
60 ASSERT_EQ(ERR_IO_PENDING, 59 ASSERT_EQ(ERR_IO_PENDING,
61 socket_.Accept(&accepted_socket, &accepted_address, 60 socket_.Accept(&accepted_socket, &accepted_address,
62 accept_callback.callback())); 61 accept_callback.callback()));
63 62
64 TestCompletionCallback connect_callback; 63 TestCompletionCallback connect_callback;
65 TCPClientSocket connecting_socket(local_address_list(), 64 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
66 NULL, NetLog::Source()); 65 NetLog::Source());
67 connecting_socket.Connect(connect_callback.callback()); 66 connecting_socket.Connect(connect_callback.callback());
68 67
69 EXPECT_EQ(OK, connect_callback.WaitForResult()); 68 EXPECT_EQ(OK, connect_callback.WaitForResult());
70 EXPECT_EQ(OK, accept_callback.WaitForResult()); 69 EXPECT_EQ(OK, accept_callback.WaitForResult());
71 70
72 EXPECT_TRUE(accepted_socket.get()); 71 EXPECT_TRUE(accepted_socket.get());
73 72
74 // Both sockets should be on the loopback network interface. 73 // Both sockets should be on the loopback network interface.
75 EXPECT_EQ(accepted_address.address(), local_address_.address()); 74 EXPECT_EQ(accepted_address.address(), local_address_.address());
76 } 75 }
77 76
78 AddressList local_address_list() const { 77 AddressList local_address_list() const {
79 return AddressList(local_address_); 78 return AddressList(local_address_);
80 } 79 }
81 80
82 TCPSocket socket_; 81 TCPSocket socket_;
83 IPEndPoint local_address_; 82 IPEndPoint local_address_;
84 }; 83 };
85 84
86 // Test listening and accepting with a socket bound to an IPv4 address. 85 // Test listening and accepting with a socket bound to an IPv4 address.
87 TEST_F(TCPSocketTest, Accept) { 86 TEST_F(TCPSocketTest, Accept) {
88 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4()); 87 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4());
89 88
90 TestCompletionCallback connect_callback; 89 TestCompletionCallback connect_callback;
91 // TODO(yzshen): Switch to use TCPSocket when it supports client socket 90 // TODO(yzshen): Switch to use TCPSocket when it supports client socket
92 // operations. 91 // operations.
93 TCPClientSocket connecting_socket(local_address_list(), 92 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
94 NULL, NetLog::Source()); 93 NetLog::Source());
95 connecting_socket.Connect(connect_callback.callback()); 94 connecting_socket.Connect(connect_callback.callback());
96 95
97 TestCompletionCallback accept_callback; 96 TestCompletionCallback accept_callback;
98 scoped_ptr<TCPSocket> accepted_socket; 97 scoped_ptr<TCPSocket> accepted_socket;
99 IPEndPoint accepted_address; 98 IPEndPoint accepted_address;
100 int result = socket_.Accept(&accepted_socket, &accepted_address, 99 int result = socket_.Accept(&accepted_socket, &accepted_address,
101 accept_callback.callback()); 100 accept_callback.callback());
102 if (result == ERR_IO_PENDING) 101 if (result == ERR_IO_PENDING)
103 result = accept_callback.WaitForResult(); 102 result = accept_callback.WaitForResult();
104 ASSERT_EQ(OK, result); 103 ASSERT_EQ(OK, result);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 141
143 TestCompletionCallback accept_callback; 142 TestCompletionCallback accept_callback;
144 scoped_ptr<TCPSocket> accepted_socket; 143 scoped_ptr<TCPSocket> accepted_socket;
145 IPEndPoint accepted_address; 144 IPEndPoint accepted_address;
146 145
147 ASSERT_EQ(ERR_IO_PENDING, 146 ASSERT_EQ(ERR_IO_PENDING,
148 socket_.Accept(&accepted_socket, &accepted_address, 147 socket_.Accept(&accepted_socket, &accepted_address,
149 accept_callback.callback())); 148 accept_callback.callback()));
150 149
151 TestCompletionCallback connect_callback; 150 TestCompletionCallback connect_callback;
152 TCPClientSocket connecting_socket(local_address_list(), 151 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
153 NULL, NetLog::Source()); 152 NetLog::Source());
154 connecting_socket.Connect(connect_callback.callback()); 153 connecting_socket.Connect(connect_callback.callback());
155 154
156 TestCompletionCallback connect_callback2; 155 TestCompletionCallback connect_callback2;
157 TCPClientSocket connecting_socket2(local_address_list(), 156 TCPClientSocket connecting_socket2(local_address_list(), NULL, NULL,
158 NULL, NetLog::Source()); 157 NetLog::Source());
159 connecting_socket2.Connect(connect_callback2.callback()); 158 connecting_socket2.Connect(connect_callback2.callback());
160 159
161 EXPECT_EQ(OK, accept_callback.WaitForResult()); 160 EXPECT_EQ(OK, accept_callback.WaitForResult());
162 161
163 TestCompletionCallback accept_callback2; 162 TestCompletionCallback accept_callback2;
164 scoped_ptr<TCPSocket> accepted_socket2; 163 scoped_ptr<TCPSocket> accepted_socket2;
165 IPEndPoint accepted_address2; 164 IPEndPoint accepted_address2;
166 165
167 int result = socket_.Accept(&accepted_socket2, &accepted_address2, 166 int result = socket_.Accept(&accepted_socket2, &accepted_address2,
168 accept_callback2.callback()); 167 accept_callback2.callback());
(...skipping 13 matching lines...) Expand all
182 } 181 }
183 182
184 // Test listening and accepting with a socket bound to an IPv6 address. 183 // Test listening and accepting with a socket bound to an IPv6 address.
185 TEST_F(TCPSocketTest, AcceptIPv6) { 184 TEST_F(TCPSocketTest, AcceptIPv6) {
186 bool initialized = false; 185 bool initialized = false;
187 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv6(&initialized)); 186 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv6(&initialized));
188 if (!initialized) 187 if (!initialized)
189 return; 188 return;
190 189
191 TestCompletionCallback connect_callback; 190 TestCompletionCallback connect_callback;
192 TCPClientSocket connecting_socket(local_address_list(), 191 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
193 NULL, NetLog::Source()); 192 NetLog::Source());
194 connecting_socket.Connect(connect_callback.callback()); 193 connecting_socket.Connect(connect_callback.callback());
195 194
196 TestCompletionCallback accept_callback; 195 TestCompletionCallback accept_callback;
197 scoped_ptr<TCPSocket> accepted_socket; 196 scoped_ptr<TCPSocket> accepted_socket;
198 IPEndPoint accepted_address; 197 IPEndPoint accepted_address;
199 int result = socket_.Accept(&accepted_socket, &accepted_address, 198 int result = socket_.Accept(&accepted_socket, &accepted_address,
200 accept_callback.callback()); 199 accept_callback.callback());
201 if (result == ERR_IO_PENDING) 200 if (result == ERR_IO_PENDING)
202 result = accept_callback.WaitForResult(); 201 result = accept_callback.WaitForResult();
203 ASSERT_EQ(OK, result); 202 ASSERT_EQ(OK, result);
204 203
205 EXPECT_TRUE(accepted_socket.get()); 204 EXPECT_TRUE(accepted_socket.get());
206 205
207 // Both sockets should be on the loopback network interface. 206 // Both sockets should be on the loopback network interface.
208 EXPECT_EQ(accepted_address.address(), local_address_.address()); 207 EXPECT_EQ(accepted_address.address(), local_address_.address());
209 208
210 EXPECT_EQ(OK, connect_callback.WaitForResult()); 209 EXPECT_EQ(OK, connect_callback.WaitForResult());
211 } 210 }
212 211
213 TEST_F(TCPSocketTest, ReadWrite) { 212 TEST_F(TCPSocketTest, ReadWrite) {
214 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4()); 213 ASSERT_NO_FATAL_FAILURE(SetUpListenIPv4());
215 214
216 TestCompletionCallback connect_callback; 215 TestCompletionCallback connect_callback;
217 TCPSocket connecting_socket(NULL, NetLog::Source()); 216 TCPSocket connecting_socket(NULL, NULL, NetLog::Source());
218 int result = connecting_socket.Open(ADDRESS_FAMILY_IPV4); 217 int result = connecting_socket.Open(ADDRESS_FAMILY_IPV4);
219 ASSERT_EQ(OK, result); 218 ASSERT_EQ(OK, result);
220 connecting_socket.Connect(local_address_, connect_callback.callback()); 219 connecting_socket.Connect(local_address_, connect_callback.callback());
221 220
222 TestCompletionCallback accept_callback; 221 TestCompletionCallback accept_callback;
223 scoped_ptr<TCPSocket> accepted_socket; 222 scoped_ptr<TCPSocket> accepted_socket;
224 IPEndPoint accepted_address; 223 IPEndPoint accepted_address;
225 result = socket_.Accept(&accepted_socket, &accepted_address, 224 result = socket_.Accept(&accepted_socket, &accepted_address,
226 accept_callback.callback()); 225 accept_callback.callback());
227 ASSERT_EQ(OK, accept_callback.GetResult(result)); 226 ASSERT_EQ(OK, accept_callback.GetResult(result));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 memmove(&buffer[bytes_read], read_buffer->data(), read_result); 264 memmove(&buffer[bytes_read], read_buffer->data(), read_result);
266 bytes_read += read_result; 265 bytes_read += read_result;
267 } 266 }
268 267
269 std::string received_message(buffer.begin(), buffer.end()); 268 std::string received_message(buffer.begin(), buffer.end());
270 ASSERT_EQ(message, received_message); 269 ASSERT_EQ(message, received_message);
271 } 270 }
272 271
273 } // namespace 272 } // namespace
274 } // namespace net 273 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698