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

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

Issue 1696005: Add net log entries that summarize transmit and receive byte counts. (Closed)
Patch Set: More tests and address comments Created 10 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 unified diff | Download patch
« no previous file with comments | « net/socket/ssl_client_socket_nss.cc ('k') | net/socket/ssl_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-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/ssl_client_socket.h" 5 #include "net/socket/ssl_client_socket.h"
6 6
7 #include "net/base/address_list.h" 7 #include "net/base/address_list.h"
8 #include "net/base/host_resolver.h" 8 #include "net/base/host_resolver.h"
9 #include "net/base/io_buffer.h" 9 #include "net/base/io_buffer.h"
10 #include "net/base/net_log.h" 10 #include "net/base/net_log.h"
11 #include "net/base/net_log_unittest.h" 11 #include "net/base/net_log_unittest.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 TEST_F(SSLClientSocketTest, Connect) { 61 TEST_F(SSLClientSocketTest, Connect) {
62 StartOKServer(); 62 StartOKServer();
63 63
64 net::AddressList addr; 64 net::AddressList addr;
65 TestCompletionCallback callback; 65 TestCompletionCallback callback;
66 66
67 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort); 67 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort);
68 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL); 68 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL);
69 EXPECT_EQ(net::OK, rv); 69 EXPECT_EQ(net::OK, rv);
70 70
71 net::ClientSocket *transport = new net::TCPClientSocket(addr); 71 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
72 rv = transport->Connect(&callback, NULL); 72 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log);
73 rv = transport->Connect(&callback);
73 if (rv == net::ERR_IO_PENDING) 74 if (rv == net::ERR_IO_PENDING)
74 rv = callback.WaitForResult(); 75 rv = callback.WaitForResult();
75 EXPECT_EQ(net::OK, rv); 76 EXPECT_EQ(net::OK, rv);
76 77
77 scoped_ptr<net::SSLClientSocket> sock( 78 scoped_ptr<net::SSLClientSocket> sock(
78 socket_factory_->CreateSSLClientSocket(transport, 79 socket_factory_->CreateSSLClientSocket(transport,
79 server_.kHostName, kDefaultSSLConfig)); 80 server_.kHostName, kDefaultSSLConfig));
80 81
81 EXPECT_FALSE(sock->IsConnected()); 82 EXPECT_FALSE(sock->IsConnected());
82 83
83 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); 84 rv = sock->Connect(&callback);
84 rv = sock->Connect(&callback, log.bound());
85 EXPECT_TRUE(net::LogContainsBeginEvent( 85 EXPECT_TRUE(net::LogContainsBeginEvent(
86 log.entries(), 0, net::NetLog::TYPE_SSL_CONNECT)); 86 log.entries(), 2, net::NetLog::TYPE_SSL_CONNECT));
87 if (rv != net::OK) { 87 if (rv != net::OK) {
88 ASSERT_EQ(net::ERR_IO_PENDING, rv); 88 ASSERT_EQ(net::ERR_IO_PENDING, rv);
89 EXPECT_FALSE(sock->IsConnected()); 89 EXPECT_FALSE(sock->IsConnected());
90 EXPECT_FALSE(net::LogContainsEndEvent( 90 EXPECT_FALSE(net::LogContainsEndEvent(
91 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT)); 91 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
92 92
93 rv = callback.WaitForResult(); 93 rv = callback.WaitForResult();
94 EXPECT_EQ(net::OK, rv); 94 EXPECT_EQ(net::OK, rv);
95 } 95 }
96 96
97 EXPECT_TRUE(sock->IsConnected()); 97 EXPECT_TRUE(sock->IsConnected());
98 EXPECT_TRUE(net::LogContainsEndEvent( 98 EXPECT_TRUE(net::LogContainsEndEvent(
99 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT)); 99 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
100 100
101 sock->Disconnect(); 101 sock->Disconnect();
102 EXPECT_FALSE(sock->IsConnected()); 102 EXPECT_FALSE(sock->IsConnected());
103 } 103 }
104 104
105 TEST_F(SSLClientSocketTest, ConnectExpired) { 105 TEST_F(SSLClientSocketTest, ConnectExpired) {
106 StartExpiredServer(); 106 StartExpiredServer();
107 107
108 net::AddressList addr; 108 net::AddressList addr;
109 TestCompletionCallback callback; 109 TestCompletionCallback callback;
110 110
111 net::HostResolver::RequestInfo info(server_.kHostName, server_.kBadHTTPSPort); 111 net::HostResolver::RequestInfo info(server_.kHostName, server_.kBadHTTPSPort);
112 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL); 112 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL);
113 EXPECT_EQ(net::OK, rv); 113 EXPECT_EQ(net::OK, rv);
114 114
115 net::ClientSocket *transport = new net::TCPClientSocket(addr); 115 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
116 rv = transport->Connect(&callback, NULL); 116 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log);
117 rv = transport->Connect(&callback);
117 if (rv == net::ERR_IO_PENDING) 118 if (rv == net::ERR_IO_PENDING)
118 rv = callback.WaitForResult(); 119 rv = callback.WaitForResult();
119 EXPECT_EQ(net::OK, rv); 120 EXPECT_EQ(net::OK, rv);
120 121
121 scoped_ptr<net::SSLClientSocket> sock( 122 scoped_ptr<net::SSLClientSocket> sock(
122 socket_factory_->CreateSSLClientSocket(transport, 123 socket_factory_->CreateSSLClientSocket(transport,
123 server_.kHostName, kDefaultSSLConfig)); 124 server_.kHostName, kDefaultSSLConfig));
124 125
125 EXPECT_FALSE(sock->IsConnected()); 126 EXPECT_FALSE(sock->IsConnected());
126 127
127 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); 128 rv = sock->Connect(&callback);
128 rv = sock->Connect(&callback, log.bound());
129 EXPECT_TRUE(net::LogContainsBeginEvent( 129 EXPECT_TRUE(net::LogContainsBeginEvent(
130 log.entries(), 0, net::NetLog::TYPE_SSL_CONNECT)); 130 log.entries(), 2, net::NetLog::TYPE_SSL_CONNECT));
131 if (rv != net::OK) { 131 if (rv != net::OK) {
132 ASSERT_EQ(net::ERR_IO_PENDING, rv); 132 ASSERT_EQ(net::ERR_IO_PENDING, rv);
133 EXPECT_FALSE(sock->IsConnected()); 133 EXPECT_FALSE(sock->IsConnected());
134 EXPECT_FALSE(net::LogContainsEndEvent( 134 EXPECT_FALSE(net::LogContainsEndEvent(
135 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT)); 135 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
136 136
137 rv = callback.WaitForResult(); 137 rv = callback.WaitForResult();
138 EXPECT_EQ(net::ERR_CERT_DATE_INVALID, rv); 138 EXPECT_EQ(net::ERR_CERT_DATE_INVALID, rv);
139 } 139 }
140 140
141 // We cannot test sock->IsConnected(), as the NSS implementation disconnects 141 // We cannot test sock->IsConnected(), as the NSS implementation disconnects
142 // the socket when it encounters an error, whereas other implementations 142 // the socket when it encounters an error, whereas other implementations
143 // leave it connected. 143 // leave it connected.
144 144
145 EXPECT_TRUE(net::LogContainsEndEvent( 145 EXPECT_TRUE(net::LogContainsEndEvent(
146 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT)); 146 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
147 } 147 }
148 148
149 TEST_F(SSLClientSocketTest, ConnectMismatched) { 149 TEST_F(SSLClientSocketTest, ConnectMismatched) {
150 StartMismatchedServer(); 150 StartMismatchedServer();
151 151
152 net::AddressList addr; 152 net::AddressList addr;
153 TestCompletionCallback callback; 153 TestCompletionCallback callback;
154 154
155 net::HostResolver::RequestInfo info(server_.kMismatchedHostName, 155 net::HostResolver::RequestInfo info(server_.kMismatchedHostName,
156 server_.kOKHTTPSPort); 156 server_.kOKHTTPSPort);
157 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL); 157 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL);
158 EXPECT_EQ(net::OK, rv); 158 EXPECT_EQ(net::OK, rv);
159 159
160 net::ClientSocket *transport = new net::TCPClientSocket(addr); 160 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
161 rv = transport->Connect(&callback, NULL); 161 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log);
162 rv = transport->Connect(&callback);
162 if (rv == net::ERR_IO_PENDING) 163 if (rv == net::ERR_IO_PENDING)
163 rv = callback.WaitForResult(); 164 rv = callback.WaitForResult();
164 EXPECT_EQ(net::OK, rv); 165 EXPECT_EQ(net::OK, rv);
165 166
166 scoped_ptr<net::SSLClientSocket> sock( 167 scoped_ptr<net::SSLClientSocket> sock(
167 socket_factory_->CreateSSLClientSocket(transport, 168 socket_factory_->CreateSSLClientSocket(transport,
168 server_.kMismatchedHostName, kDefaultSSLConfig)); 169 server_.kMismatchedHostName, kDefaultSSLConfig));
169 170
170 EXPECT_FALSE(sock->IsConnected()); 171 EXPECT_FALSE(sock->IsConnected());
171 172
172 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); 173 rv = sock->Connect(&callback);
173 rv = sock->Connect(&callback, log.bound());
174 EXPECT_TRUE(net::LogContainsBeginEvent( 174 EXPECT_TRUE(net::LogContainsBeginEvent(
175 log.entries(), 0, net::NetLog::TYPE_SSL_CONNECT)); 175 log.entries(), 2, net::NetLog::TYPE_SSL_CONNECT));
176 if (rv != net::ERR_CERT_COMMON_NAME_INVALID) { 176 if (rv != net::ERR_CERT_COMMON_NAME_INVALID) {
177 ASSERT_EQ(net::ERR_IO_PENDING, rv); 177 ASSERT_EQ(net::ERR_IO_PENDING, rv);
178 EXPECT_FALSE(sock->IsConnected()); 178 EXPECT_FALSE(sock->IsConnected());
179 EXPECT_FALSE(net::LogContainsEndEvent( 179 EXPECT_FALSE(net::LogContainsEndEvent(
180 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT)); 180 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
181 181
182 rv = callback.WaitForResult(); 182 rv = callback.WaitForResult();
183 EXPECT_EQ(net::ERR_CERT_COMMON_NAME_INVALID, rv); 183 EXPECT_EQ(net::ERR_CERT_COMMON_NAME_INVALID, rv);
184 } 184 }
185 185
(...skipping 16 matching lines...) Expand all
202 net::AddressList addr; 202 net::AddressList addr;
203 TestCompletionCallback callback; 203 TestCompletionCallback callback;
204 204
205 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort); 205 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort);
206 int rv = resolver_->Resolve(info, &addr, &callback, NULL, NULL); 206 int rv = resolver_->Resolve(info, &addr, &callback, NULL, NULL);
207 EXPECT_EQ(net::ERR_IO_PENDING, rv); 207 EXPECT_EQ(net::ERR_IO_PENDING, rv);
208 208
209 rv = callback.WaitForResult(); 209 rv = callback.WaitForResult();
210 EXPECT_EQ(net::OK, rv); 210 EXPECT_EQ(net::OK, rv);
211 211
212 net::ClientSocket *transport = new net::TCPClientSocket(addr); 212 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL);
213 rv = transport->Connect(&callback, NULL); 213 rv = transport->Connect(&callback);
214 if (rv == net::ERR_IO_PENDING) 214 if (rv == net::ERR_IO_PENDING)
215 rv = callback.WaitForResult(); 215 rv = callback.WaitForResult();
216 EXPECT_EQ(net::OK, rv); 216 EXPECT_EQ(net::OK, rv);
217 217
218 scoped_ptr<net::SSLClientSocket> sock( 218 scoped_ptr<net::SSLClientSocket> sock(
219 socket_factory_->CreateSSLClientSocket(transport, 219 socket_factory_->CreateSSLClientSocket(transport,
220 server_.kHostName, 220 server_.kHostName,
221 kDefaultSSLConfig)); 221 kDefaultSSLConfig));
222 222
223 rv = sock->Connect(&callback, NULL); 223 rv = sock->Connect(&callback);
224 if (rv != net::OK) { 224 if (rv != net::OK) {
225 ASSERT_EQ(net::ERR_IO_PENDING, rv); 225 ASSERT_EQ(net::ERR_IO_PENDING, rv);
226 226
227 rv = callback.WaitForResult(); 227 rv = callback.WaitForResult();
228 EXPECT_EQ(net::OK, rv); 228 EXPECT_EQ(net::OK, rv);
229 } 229 }
230 EXPECT_TRUE(sock->IsConnected()); 230 EXPECT_TRUE(sock->IsConnected());
231 231
232 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 232 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
233 scoped_refptr<net::IOBuffer> request_buffer = 233 scoped_refptr<net::IOBuffer> request_buffer =
(...skipping 30 matching lines...) Expand all
264 TestCompletionCallback callback; // Used for everything except Write. 264 TestCompletionCallback callback; // Used for everything except Write.
265 TestCompletionCallback callback2; // Used for Write only. 265 TestCompletionCallback callback2; // Used for Write only.
266 266
267 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort); 267 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort);
268 int rv = resolver_->Resolve(info, &addr, &callback, NULL, NULL); 268 int rv = resolver_->Resolve(info, &addr, &callback, NULL, NULL);
269 EXPECT_EQ(net::ERR_IO_PENDING, rv); 269 EXPECT_EQ(net::ERR_IO_PENDING, rv);
270 270
271 rv = callback.WaitForResult(); 271 rv = callback.WaitForResult();
272 EXPECT_EQ(net::OK, rv); 272 EXPECT_EQ(net::OK, rv);
273 273
274 net::ClientSocket *transport = new net::TCPClientSocket(addr); 274 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL);
275 rv = transport->Connect(&callback, NULL); 275 rv = transport->Connect(&callback);
276 if (rv == net::ERR_IO_PENDING) 276 if (rv == net::ERR_IO_PENDING)
277 rv = callback.WaitForResult(); 277 rv = callback.WaitForResult();
278 EXPECT_EQ(net::OK, rv); 278 EXPECT_EQ(net::OK, rv);
279 279
280 scoped_ptr<net::SSLClientSocket> sock( 280 scoped_ptr<net::SSLClientSocket> sock(
281 socket_factory_->CreateSSLClientSocket(transport, 281 socket_factory_->CreateSSLClientSocket(transport,
282 server_.kHostName, 282 server_.kHostName,
283 kDefaultSSLConfig)); 283 kDefaultSSLConfig));
284 284
285 rv = sock->Connect(&callback, NULL); 285 rv = sock->Connect(&callback);
286 if (rv != net::OK) { 286 if (rv != net::OK) {
287 ASSERT_EQ(net::ERR_IO_PENDING, rv); 287 ASSERT_EQ(net::ERR_IO_PENDING, rv);
288 288
289 rv = callback.WaitForResult(); 289 rv = callback.WaitForResult();
290 EXPECT_EQ(net::OK, rv); 290 EXPECT_EQ(net::OK, rv);
291 } 291 }
292 EXPECT_TRUE(sock->IsConnected()); 292 EXPECT_TRUE(sock->IsConnected());
293 293
294 // Issue a "hanging" Read first. 294 // Issue a "hanging" Read first.
295 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(4096); 295 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(4096);
(...skipping 27 matching lines...) Expand all
323 TEST_F(SSLClientSocketTest, Read_SmallChunks) { 323 TEST_F(SSLClientSocketTest, Read_SmallChunks) {
324 StartOKServer(); 324 StartOKServer();
325 325
326 net::AddressList addr; 326 net::AddressList addr;
327 TestCompletionCallback callback; 327 TestCompletionCallback callback;
328 328
329 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort); 329 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort);
330 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL); 330 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL);
331 EXPECT_EQ(net::OK, rv); 331 EXPECT_EQ(net::OK, rv);
332 332
333 net::ClientSocket *transport = new net::TCPClientSocket(addr); 333 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL);
334 rv = transport->Connect(&callback, NULL); 334 rv = transport->Connect(&callback);
335 if (rv == net::ERR_IO_PENDING) 335 if (rv == net::ERR_IO_PENDING)
336 rv = callback.WaitForResult(); 336 rv = callback.WaitForResult();
337 EXPECT_EQ(net::OK, rv); 337 EXPECT_EQ(net::OK, rv);
338 338
339 scoped_ptr<net::SSLClientSocket> sock( 339 scoped_ptr<net::SSLClientSocket> sock(
340 socket_factory_->CreateSSLClientSocket(transport, 340 socket_factory_->CreateSSLClientSocket(transport,
341 server_.kHostName, kDefaultSSLConfig)); 341 server_.kHostName, kDefaultSSLConfig));
342 342
343 rv = sock->Connect(&callback, NULL); 343 rv = sock->Connect(&callback);
344 if (rv != net::OK) { 344 if (rv != net::OK) {
345 ASSERT_EQ(net::ERR_IO_PENDING, rv); 345 ASSERT_EQ(net::ERR_IO_PENDING, rv);
346 346
347 rv = callback.WaitForResult(); 347 rv = callback.WaitForResult();
348 EXPECT_EQ(net::OK, rv); 348 EXPECT_EQ(net::OK, rv);
349 } 349 }
350 350
351 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 351 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
352 scoped_refptr<net::IOBuffer> request_buffer = 352 scoped_refptr<net::IOBuffer> request_buffer =
353 new net::IOBuffer(arraysize(request_text) - 1); 353 new net::IOBuffer(arraysize(request_text) - 1);
(...skipping 23 matching lines...) Expand all
377 TEST_F(SSLClientSocketTest, Read_Interrupted) { 377 TEST_F(SSLClientSocketTest, Read_Interrupted) {
378 StartOKServer(); 378 StartOKServer();
379 379
380 net::AddressList addr; 380 net::AddressList addr;
381 TestCompletionCallback callback; 381 TestCompletionCallback callback;
382 382
383 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort); 383 net::HostResolver::RequestInfo info(server_.kHostName, server_.kOKHTTPSPort);
384 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL); 384 int rv = resolver_->Resolve(info, &addr, NULL, NULL, NULL);
385 EXPECT_EQ(net::OK, rv); 385 EXPECT_EQ(net::OK, rv);
386 386
387 net::ClientSocket *transport = new net::TCPClientSocket(addr); 387 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL);
388 rv = transport->Connect(&callback, NULL); 388 rv = transport->Connect(&callback);
389 if (rv == net::ERR_IO_PENDING) 389 if (rv == net::ERR_IO_PENDING)
390 rv = callback.WaitForResult(); 390 rv = callback.WaitForResult();
391 EXPECT_EQ(net::OK, rv); 391 EXPECT_EQ(net::OK, rv);
392 392
393 scoped_ptr<net::SSLClientSocket> sock( 393 scoped_ptr<net::SSLClientSocket> sock(
394 socket_factory_->CreateSSLClientSocket(transport, 394 socket_factory_->CreateSSLClientSocket(transport,
395 server_.kHostName, kDefaultSSLConfig)); 395 server_.kHostName, kDefaultSSLConfig));
396 396
397 rv = sock->Connect(&callback, NULL); 397 rv = sock->Connect(&callback);
398 if (rv != net::OK) { 398 if (rv != net::OK) {
399 ASSERT_EQ(net::ERR_IO_PENDING, rv); 399 ASSERT_EQ(net::ERR_IO_PENDING, rv);
400 400
401 rv = callback.WaitForResult(); 401 rv = callback.WaitForResult();
402 EXPECT_EQ(net::OK, rv); 402 EXPECT_EQ(net::OK, rv);
403 } 403 }
404 404
405 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 405 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
406 scoped_refptr<net::IOBuffer> request_buffer = 406 scoped_refptr<net::IOBuffer> request_buffer =
407 new net::IOBuffer(arraysize(request_text) - 1); 407 new net::IOBuffer(arraysize(request_text) - 1);
408 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 408 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
409 409
410 rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback); 410 rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback);
411 EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING); 411 EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING);
412 412
413 if (rv == net::ERR_IO_PENDING) 413 if (rv == net::ERR_IO_PENDING)
414 rv = callback.WaitForResult(); 414 rv = callback.WaitForResult();
415 EXPECT_EQ(static_cast<int>(arraysize(request_text) - 1), rv); 415 EXPECT_EQ(static_cast<int>(arraysize(request_text) - 1), rv);
416 416
417 // Do a partial read and then exit. This test should not crash! 417 // Do a partial read and then exit. This test should not crash!
418 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(512); 418 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(512);
419 rv = sock->Read(buf, 512, &callback); 419 rv = sock->Read(buf, 512, &callback);
420 EXPECT_TRUE(rv > 0 || rv == net::ERR_IO_PENDING); 420 EXPECT_TRUE(rv > 0 || rv == net::ERR_IO_PENDING);
421 421
422 if (rv == net::ERR_IO_PENDING) 422 if (rv == net::ERR_IO_PENDING)
423 rv = callback.WaitForResult(); 423 rv = callback.WaitForResult();
424 424
425 EXPECT_GT(rv, 0); 425 EXPECT_GT(rv, 0);
426 } 426 }
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_nss.cc ('k') | net/socket/ssl_client_socket_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698