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

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

Issue 9251019: Fixes to socket_test_util.cc. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Renamed blocked_ -> read_in_progress_. Created 8 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « net/socket/socket_test_util.h ('k') | net/socket_stream/socket_stream_unittest.cc » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/socket_test_util.h" 5 #include "net/socket/socket_test_util.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 } 246 }
247 247
248 SSLSocketDataProvider::~SSLSocketDataProvider() { 248 SSLSocketDataProvider::~SSLSocketDataProvider() {
249 } 249 }
250 250
251 DelayedSocketData::DelayedSocketData( 251 DelayedSocketData::DelayedSocketData(
252 int write_delay, MockRead* reads, size_t reads_count, 252 int write_delay, MockRead* reads, size_t reads_count,
253 MockWrite* writes, size_t writes_count) 253 MockWrite* writes, size_t writes_count)
254 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 254 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
255 write_delay_(write_delay), 255 write_delay_(write_delay),
256 read_in_progress_(false),
256 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { 257 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
257 DCHECK_GE(write_delay_, 0); 258 DCHECK_GE(write_delay_, 0);
258 } 259 }
259 260
260 DelayedSocketData::DelayedSocketData( 261 DelayedSocketData::DelayedSocketData(
261 const MockConnect& connect, int write_delay, MockRead* reads, 262 const MockConnect& connect, int write_delay, MockRead* reads,
262 size_t reads_count, MockWrite* writes, size_t writes_count) 263 size_t reads_count, MockWrite* writes, size_t writes_count)
263 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 264 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
264 write_delay_(write_delay), 265 write_delay_(write_delay),
266 read_in_progress_(false),
265 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { 267 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
266 DCHECK_GE(write_delay_, 0); 268 DCHECK_GE(write_delay_, 0);
267 set_connect_data(connect); 269 set_connect_data(connect);
268 } 270 }
269 271
270 DelayedSocketData::~DelayedSocketData() { 272 DelayedSocketData::~DelayedSocketData() {
271 } 273 }
272 274
273 void DelayedSocketData::ForceNextRead() { 275 void DelayedSocketData::ForceNextRead() {
276 DCHECK(read_in_progress_);
274 write_delay_ = 0; 277 write_delay_ = 0;
275 CompleteRead(); 278 CompleteRead();
276 } 279 }
277 280
278 MockRead DelayedSocketData::GetNextRead() { 281 MockRead DelayedSocketData::GetNextRead() {
279 if (write_delay_ > 0) 282 MockRead out = MockRead(true, ERR_IO_PENDING);
280 return MockRead(true, ERR_IO_PENDING); 283 if (write_delay_ <= 0)
281 return StaticSocketDataProvider::GetNextRead(); 284 out = StaticSocketDataProvider::GetNextRead();
285 read_in_progress_ = (out.result == ERR_IO_PENDING);
286 return out;
282 } 287 }
283 288
284 MockWriteResult DelayedSocketData::OnWrite(const std::string& data) { 289 MockWriteResult DelayedSocketData::OnWrite(const std::string& data) {
285 MockWriteResult rv = StaticSocketDataProvider::OnWrite(data); 290 MockWriteResult rv = StaticSocketDataProvider::OnWrite(data);
286 // Now that our write has completed, we can allow reads to continue. 291 // Now that our write has completed, we can allow reads to continue.
287 if (!--write_delay_) 292 if (!--write_delay_ && read_in_progress_)
288 MessageLoop::current()->PostDelayedTask( 293 MessageLoop::current()->PostDelayedTask(
289 FROM_HERE, 294 FROM_HERE,
290 base::Bind(&DelayedSocketData::CompleteRead, 295 base::Bind(&DelayedSocketData::CompleteRead,
291 weak_factory_.GetWeakPtr()), 296 weak_factory_.GetWeakPtr()),
292 100); 297 100);
293 return rv; 298 return rv;
294 } 299 }
295 300
296 void DelayedSocketData::Reset() { 301 void DelayedSocketData::Reset() {
297 set_socket(NULL); 302 set_socket(NULL);
303 read_in_progress_ = false;
298 weak_factory_.InvalidateWeakPtrs(); 304 weak_factory_.InvalidateWeakPtrs();
299 StaticSocketDataProvider::Reset(); 305 StaticSocketDataProvider::Reset();
300 } 306 }
301 307
302 void DelayedSocketData::CompleteRead() { 308 void DelayedSocketData::CompleteRead() {
303 if (socket()) 309 if (socket() && read_in_progress_)
304 socket()->OnReadComplete(GetNextRead()); 310 socket()->OnReadComplete(GetNextRead());
305 } 311 }
306 312
307 OrderedSocketData::OrderedSocketData( 313 OrderedSocketData::OrderedSocketData(
308 MockRead* reads, size_t reads_count, MockWrite* writes, size_t writes_count) 314 MockRead* reads, size_t reads_count, MockWrite* writes, size_t writes_count)
309 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 315 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
310 sequence_number_(0), loop_stop_stage_(0), 316 sequence_number_(0), loop_stop_stage_(0),
311 blocked_(false), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { 317 blocked_(false), ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
312 } 318 }
313 319
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 weak_factory_.InvalidateWeakPtrs(); 352 weak_factory_.InvalidateWeakPtrs();
347 blocked_ = false; 353 blocked_ = false;
348 const MockRead& next_read = StaticSocketDataProvider::PeekRead(); 354 const MockRead& next_read = StaticSocketDataProvider::PeekRead();
349 if (next_read.sequence_number & MockRead::STOPLOOP) 355 if (next_read.sequence_number & MockRead::STOPLOOP)
350 EndLoop(); 356 EndLoop();
351 if ((next_read.sequence_number & ~MockRead::STOPLOOP) <= 357 if ((next_read.sequence_number & ~MockRead::STOPLOOP) <=
352 sequence_number_++) { 358 sequence_number_++) {
353 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ - 1 359 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ - 1
354 << ": Read " << read_index(); 360 << ": Read " << read_index();
355 DumpMockRead(next_read); 361 DumpMockRead(next_read);
362 blocked_ = (next_read.result == ERR_IO_PENDING);
356 return StaticSocketDataProvider::GetNextRead(); 363 return StaticSocketDataProvider::GetNextRead();
357 } 364 }
358 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ - 1 365 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_ - 1
359 << ": I/O Pending"; 366 << ": I/O Pending";
360 MockRead result = MockRead(true, ERR_IO_PENDING); 367 MockRead result = MockRead(true, ERR_IO_PENDING);
361 DumpMockRead(result); 368 DumpMockRead(result);
362 blocked_ = true; 369 blocked_ = true;
363 return result; 370 return result;
364 } 371 }
365 372
(...skipping 21 matching lines...) Expand all
387 NET_TRACE(INFO, " *** ") << "Stage " 394 NET_TRACE(INFO, " *** ") << "Stage "
388 << sequence_number_ << ": Reset()"; 395 << sequence_number_ << ": Reset()";
389 sequence_number_ = 0; 396 sequence_number_ = 0;
390 loop_stop_stage_ = 0; 397 loop_stop_stage_ = 0;
391 set_socket(NULL); 398 set_socket(NULL);
392 weak_factory_.InvalidateWeakPtrs(); 399 weak_factory_.InvalidateWeakPtrs();
393 StaticSocketDataProvider::Reset(); 400 StaticSocketDataProvider::Reset();
394 } 401 }
395 402
396 void OrderedSocketData::CompleteRead() { 403 void OrderedSocketData::CompleteRead() {
397 if (socket()) { 404 if (socket() && blocked_) {
398 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_; 405 NET_TRACE(INFO, " *** ") << "Stage " << sequence_number_;
399 socket()->OnReadComplete(GetNextRead()); 406 socket()->OnReadComplete(GetNextRead());
400 } 407 }
401 } 408 }
402 409
403 OrderedSocketData::~OrderedSocketData() {} 410 OrderedSocketData::~OrderedSocketData() {}
404 411
405 DeterministicSocketData::DeterministicSocketData(MockRead* reads, 412 DeterministicSocketData::DeterministicSocketData(MockRead* reads,
406 size_t reads_count, MockWrite* writes, size_t writes_count) 413 size_t reads_count, MockWrite* writes, size_t writes_count)
407 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 414 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 void MockClientSocketFactory::AddSSLSocketDataProvider( 582 void MockClientSocketFactory::AddSSLSocketDataProvider(
576 SSLSocketDataProvider* data) { 583 SSLSocketDataProvider* data) {
577 mock_ssl_data_.Add(data); 584 mock_ssl_data_.Add(data);
578 } 585 }
579 586
580 void MockClientSocketFactory::ResetNextMockIndexes() { 587 void MockClientSocketFactory::ResetNextMockIndexes() {
581 mock_data_.ResetNextIndex(); 588 mock_data_.ResetNextIndex();
582 mock_ssl_data_.ResetNextIndex(); 589 mock_ssl_data_.ResetNextIndex();
583 } 590 }
584 591
585 MockTCPClientSocket* MockClientSocketFactory::GetMockTCPClientSocket(
586 size_t index) const {
587 DCHECK_LT(index, tcp_client_sockets_.size());
588 return tcp_client_sockets_[index];
589 }
590
591 MockSSLClientSocket* MockClientSocketFactory::GetMockSSLClientSocket(
592 size_t index) const {
593 DCHECK_LT(index, ssl_client_sockets_.size());
594 return ssl_client_sockets_[index];
595 }
596
597 DatagramClientSocket* MockClientSocketFactory::CreateDatagramClientSocket( 592 DatagramClientSocket* MockClientSocketFactory::CreateDatagramClientSocket(
598 DatagramSocket::BindType bind_type, 593 DatagramSocket::BindType bind_type,
599 const RandIntCallback& rand_int_cb, 594 const RandIntCallback& rand_int_cb,
600 net::NetLog* net_log, 595 net::NetLog* net_log,
601 const net::NetLog::Source& source) { 596 const net::NetLog::Source& source) {
602 SocketDataProvider* data_provider = mock_data_.GetNext(); 597 SocketDataProvider* data_provider = mock_data_.GetNext();
603 MockUDPClientSocket* socket = new MockUDPClientSocket(data_provider, net_log); 598 MockUDPClientSocket* socket = new MockUDPClientSocket(data_provider, net_log);
604 data_provider->set_socket(socket); 599 data_provider->set_socket(socket);
605 udp_client_sockets_.push_back(socket);
606 return socket; 600 return socket;
607 } 601 }
608 602
609 StreamSocket* MockClientSocketFactory::CreateTransportClientSocket( 603 StreamSocket* MockClientSocketFactory::CreateTransportClientSocket(
610 const AddressList& addresses, 604 const AddressList& addresses,
611 net::NetLog* net_log, 605 net::NetLog* net_log,
612 const net::NetLog::Source& source) { 606 const net::NetLog::Source& source) {
613 SocketDataProvider* data_provider = mock_data_.GetNext(); 607 SocketDataProvider* data_provider = mock_data_.GetNext();
614 MockTCPClientSocket* socket = 608 MockTCPClientSocket* socket =
615 new MockTCPClientSocket(addresses, net_log, data_provider); 609 new MockTCPClientSocket(addresses, net_log, data_provider);
616 data_provider->set_socket(socket); 610 data_provider->set_socket(socket);
617 tcp_client_sockets_.push_back(socket);
618 return socket; 611 return socket;
619 } 612 }
620 613
621 SSLClientSocket* MockClientSocketFactory::CreateSSLClientSocket( 614 SSLClientSocket* MockClientSocketFactory::CreateSSLClientSocket(
622 ClientSocketHandle* transport_socket, 615 ClientSocketHandle* transport_socket,
623 const HostPortPair& host_and_port, 616 const HostPortPair& host_and_port,
624 const SSLConfig& ssl_config, 617 const SSLConfig& ssl_config,
625 SSLHostInfo* ssl_host_info, 618 SSLHostInfo* ssl_host_info,
626 const SSLClientSocketContext& context) { 619 const SSLClientSocketContext& context) {
627 MockSSLClientSocket* socket = 620 MockSSLClientSocket* socket =
628 new MockSSLClientSocket(transport_socket, host_and_port, ssl_config, 621 new MockSSLClientSocket(transport_socket, host_and_port, ssl_config,
629 ssl_host_info, mock_ssl_data_.GetNext()); 622 ssl_host_info, mock_ssl_data_.GetNext());
630 ssl_client_sockets_.push_back(socket);
631 return socket; 623 return socket;
632 } 624 }
633 625
634 void MockClientSocketFactory::ClearSSLSessionCache() { 626 void MockClientSocketFactory::ClearSSLSessionCache() {
635 } 627 }
636 628
637 MockClientSocket::MockClientSocket(net::NetLog* net_log) 629 MockClientSocket::MockClientSocket(net::NetLog* net_log)
638 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), 630 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
639 connected_(false), 631 connected_(false),
640 net_log_(net::NetLog::Source(), net_log) { 632 net_log_(net::NetLog::Source(), net_log) {
(...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after
1597 1589
1598 const char kSOCKS5OkRequest[] = 1590 const char kSOCKS5OkRequest[] =
1599 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 }; 1591 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 };
1600 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest); 1592 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest);
1601 1593
1602 const char kSOCKS5OkResponse[] = 1594 const char kSOCKS5OkResponse[] =
1603 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; 1595 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 };
1604 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse); 1596 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse);
1605 1597
1606 } // namespace net 1598 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socket_test_util.h ('k') | net/socket_stream/socket_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698