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

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

Issue 344026: Add LoadLog to ClientSocket::Connect(). (Closed)
Patch Set: Minor build fixups and fixed mac bug. Created 11 years, 1 month 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
« no previous file with comments | « net/socket/tcp_client_socket_pool_unittest.cc ('k') | net/socket/tcp_client_socket_win.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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_client_socket.h" 5 #include "net/socket/tcp_client_socket.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "net/base/address_list.h" 8 #include "net/base/address_list.h"
9 #include "net/base/host_resolver.h" 9 #include "net/base/host_resolver.h"
10 #include "net/base/io_buffer.h" 10 #include "net/base/io_buffer.h"
11 #include "net/base/listen_socket.h" 11 #include "net/base/listen_socket.h"
12 #include "net/base/load_log.h"
13 #include "net/base/load_log_unittest.h"
12 #include "net/base/net_errors.h" 14 #include "net/base/net_errors.h"
13 #include "net/base/test_completion_callback.h" 15 #include "net/base/test_completion_callback.h"
14 #include "net/base/winsock_init.h" 16 #include "net/base/winsock_init.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 #include "testing/platform_test.h" 18 #include "testing/platform_test.h"
17 19
18 namespace net { 20 namespace net {
19 21
20 namespace { 22 namespace {
21 23
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 HostResolver::RequestInfo info("localhost", listen_port_); 92 HostResolver::RequestInfo info("localhost", listen_port_);
91 int rv = resolver->Resolve(info, &addr, NULL, NULL, NULL); 93 int rv = resolver->Resolve(info, &addr, NULL, NULL, NULL);
92 CHECK(rv == OK); 94 CHECK(rv == OK);
93 sock_.reset(new TCPClientSocket(addr)); 95 sock_.reset(new TCPClientSocket(addr));
94 } 96 }
95 97
96 TEST_F(TCPClientSocketTest, Connect) { 98 TEST_F(TCPClientSocketTest, Connect) {
97 TestCompletionCallback callback; 99 TestCompletionCallback callback;
98 EXPECT_FALSE(sock_->IsConnected()); 100 EXPECT_FALSE(sock_->IsConnected());
99 101
100 int rv = sock_->Connect(&callback); 102 scoped_refptr<LoadLog> log(new LoadLog);
103 int rv = sock_->Connect(&callback, log);
104 EXPECT_TRUE(net::LogContains(
105 *log, 0, net::LoadLog::TYPE_TCP_CONNECT, net::LoadLog::PHASE_BEGIN));
101 if (rv != OK) { 106 if (rv != OK) {
102 ASSERT_EQ(rv, ERR_IO_PENDING); 107 ASSERT_EQ(rv, ERR_IO_PENDING);
108 EXPECT_FALSE(net::LogContains(
109 *log, -1, net::LoadLog::TYPE_TCP_CONNECT, net::LoadLog::PHASE_END));
103 110
104 rv = callback.WaitForResult(); 111 rv = callback.WaitForResult();
105 EXPECT_EQ(rv, OK); 112 EXPECT_EQ(rv, OK);
106 } 113 }
107 114
108 EXPECT_TRUE(sock_->IsConnected()); 115 EXPECT_TRUE(sock_->IsConnected());
116 EXPECT_TRUE(net::LogContains(
117 *log, -1, net::LoadLog::TYPE_TCP_CONNECT, net::LoadLog::PHASE_END));
109 118
110 sock_->Disconnect(); 119 sock_->Disconnect();
111 EXPECT_FALSE(sock_->IsConnected()); 120 EXPECT_FALSE(sock_->IsConnected());
112 } 121 }
113 122
114 // TODO(wtc): Add unit tests for IsConnectedAndIdle: 123 // TODO(wtc): Add unit tests for IsConnectedAndIdle:
115 // - Server closes a connection. 124 // - Server closes a connection.
116 // - Server sends data unexpectedly. 125 // - Server sends data unexpectedly.
117 126
118 TEST_F(TCPClientSocketTest, Read) { 127 TEST_F(TCPClientSocketTest, Read) {
119 TestCompletionCallback callback; 128 TestCompletionCallback callback;
120 int rv = sock_->Connect(&callback); 129 int rv = sock_->Connect(&callback, NULL);
121 if (rv != OK) { 130 if (rv != OK) {
122 ASSERT_EQ(rv, ERR_IO_PENDING); 131 ASSERT_EQ(rv, ERR_IO_PENDING);
123 132
124 rv = callback.WaitForResult(); 133 rv = callback.WaitForResult();
125 EXPECT_EQ(rv, OK); 134 EXPECT_EQ(rv, OK);
126 } 135 }
127 136
128 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 137 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
129 scoped_refptr<IOBuffer> request_buffer = 138 scoped_refptr<IOBuffer> request_buffer =
130 new IOBuffer(arraysize(request_text) - 1); 139 new IOBuffer(arraysize(request_text) - 1);
(...skipping 24 matching lines...) Expand all
155 // then close the server socket, and note the close. 164 // then close the server socket, and note the close.
156 165
157 rv = sock_->Read(buf, 4096, &callback); 166 rv = sock_->Read(buf, 4096, &callback);
158 ASSERT_EQ(ERR_IO_PENDING, rv); 167 ASSERT_EQ(ERR_IO_PENDING, rv);
159 CloseServerSocket(); 168 CloseServerSocket();
160 EXPECT_EQ(0, callback.WaitForResult()); 169 EXPECT_EQ(0, callback.WaitForResult());
161 } 170 }
162 171
163 TEST_F(TCPClientSocketTest, Read_SmallChunks) { 172 TEST_F(TCPClientSocketTest, Read_SmallChunks) {
164 TestCompletionCallback callback; 173 TestCompletionCallback callback;
165 int rv = sock_->Connect(&callback); 174 int rv = sock_->Connect(&callback, NULL);
166 if (rv != OK) { 175 if (rv != OK) {
167 ASSERT_EQ(rv, ERR_IO_PENDING); 176 ASSERT_EQ(rv, ERR_IO_PENDING);
168 177
169 rv = callback.WaitForResult(); 178 rv = callback.WaitForResult();
170 EXPECT_EQ(rv, OK); 179 EXPECT_EQ(rv, OK);
171 } 180 }
172 181
173 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 182 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
174 scoped_refptr<IOBuffer> request_buffer = 183 scoped_refptr<IOBuffer> request_buffer =
175 new IOBuffer(arraysize(request_text) - 1); 184 new IOBuffer(arraysize(request_text) - 1);
(...skipping 24 matching lines...) Expand all
200 // then close the server socket, and note the close. 209 // then close the server socket, and note the close.
201 210
202 rv = sock_->Read(buf, 1, &callback); 211 rv = sock_->Read(buf, 1, &callback);
203 ASSERT_EQ(ERR_IO_PENDING, rv); 212 ASSERT_EQ(ERR_IO_PENDING, rv);
204 CloseServerSocket(); 213 CloseServerSocket();
205 EXPECT_EQ(0, callback.WaitForResult()); 214 EXPECT_EQ(0, callback.WaitForResult());
206 } 215 }
207 216
208 TEST_F(TCPClientSocketTest, Read_Interrupted) { 217 TEST_F(TCPClientSocketTest, Read_Interrupted) {
209 TestCompletionCallback callback; 218 TestCompletionCallback callback;
210 int rv = sock_->Connect(&callback); 219 int rv = sock_->Connect(&callback, NULL);
211 if (rv != OK) { 220 if (rv != OK) {
212 ASSERT_EQ(ERR_IO_PENDING, rv); 221 ASSERT_EQ(ERR_IO_PENDING, rv);
213 222
214 rv = callback.WaitForResult(); 223 rv = callback.WaitForResult();
215 EXPECT_EQ(rv, OK); 224 EXPECT_EQ(rv, OK);
216 } 225 }
217 226
218 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 227 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
219 scoped_refptr<IOBuffer> request_buffer = 228 scoped_refptr<IOBuffer> request_buffer =
220 new IOBuffer(arraysize(request_text) - 1); 229 new IOBuffer(arraysize(request_text) - 1);
(...skipping 13 matching lines...) Expand all
234 EXPECT_TRUE(rv >= 0 || rv == ERR_IO_PENDING); 243 EXPECT_TRUE(rv >= 0 || rv == ERR_IO_PENDING);
235 244
236 if (rv == ERR_IO_PENDING) 245 if (rv == ERR_IO_PENDING)
237 rv = callback.WaitForResult(); 246 rv = callback.WaitForResult();
238 247
239 EXPECT_NE(0, rv); 248 EXPECT_NE(0, rv);
240 } 249 }
241 250
242 TEST_F(TCPClientSocketTest, DISABLED_FullDuplex_ReadFirst) { 251 TEST_F(TCPClientSocketTest, DISABLED_FullDuplex_ReadFirst) {
243 TestCompletionCallback callback; 252 TestCompletionCallback callback;
244 int rv = sock_->Connect(&callback); 253 int rv = sock_->Connect(&callback, NULL);
245 if (rv != OK) { 254 if (rv != OK) {
246 ASSERT_EQ(rv, ERR_IO_PENDING); 255 ASSERT_EQ(rv, ERR_IO_PENDING);
247 256
248 rv = callback.WaitForResult(); 257 rv = callback.WaitForResult();
249 EXPECT_EQ(rv, OK); 258 EXPECT_EQ(rv, OK);
250 } 259 }
251 260
252 // Read first. There's no data, so it should return ERR_IO_PENDING. 261 // Read first. There's no data, so it should return ERR_IO_PENDING.
253 const int kBufLen = 4096; 262 const int kBufLen = 4096;
254 scoped_refptr<IOBuffer> buf = new IOBuffer(kBufLen); 263 scoped_refptr<IOBuffer> buf = new IOBuffer(kBufLen);
(...skipping 21 matching lines...) Expand all
276 // At this point, both read and write have returned ERR_IO_PENDING, and the 285 // At this point, both read and write have returned ERR_IO_PENDING, and the
277 // write callback has executed. We wait for the read callback to run now to 286 // write callback has executed. We wait for the read callback to run now to
278 // make sure that the socket can handle full duplex communications. 287 // make sure that the socket can handle full duplex communications.
279 288
280 rv = callback.WaitForResult(); 289 rv = callback.WaitForResult();
281 EXPECT_GE(rv, 0); 290 EXPECT_GE(rv, 0);
282 } 291 }
283 292
284 TEST_F(TCPClientSocketTest, DISABLED_FullDuplex_WriteFirst) { 293 TEST_F(TCPClientSocketTest, DISABLED_FullDuplex_WriteFirst) {
285 TestCompletionCallback callback; 294 TestCompletionCallback callback;
286 int rv = sock_->Connect(&callback); 295 int rv = sock_->Connect(&callback, NULL);
287 if (rv != OK) { 296 if (rv != OK) {
288 ASSERT_EQ(ERR_IO_PENDING, rv); 297 ASSERT_EQ(ERR_IO_PENDING, rv);
289 298
290 rv = callback.WaitForResult(); 299 rv = callback.WaitForResult();
291 EXPECT_EQ(OK, rv); 300 EXPECT_EQ(OK, rv);
292 } 301 }
293 302
294 PauseServerReads(); 303 PauseServerReads();
295 const int kWriteBufLen = 64 * 1024; 304 const int kWriteBufLen = 64 * 1024;
296 scoped_refptr<IOBuffer> request_buffer = new IOBuffer(kWriteBufLen); 305 scoped_refptr<IOBuffer> request_buffer = new IOBuffer(kWriteBufLen);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 // Close the server socket, so there will at least be a 0-byte read. 339 // Close the server socket, so there will at least be a 0-byte read.
331 CloseServerSocket(); 340 CloseServerSocket();
332 341
333 rv = callback.WaitForResult(); 342 rv = callback.WaitForResult();
334 EXPECT_GE(rv, 0); 343 EXPECT_GE(rv, 0);
335 } 344 }
336 345
337 } // namespace 346 } // namespace
338 347
339 } // namespace net 348 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/tcp_client_socket_pool_unittest.cc ('k') | net/socket/tcp_client_socket_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698