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

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

Issue 1129473002: Revert of Add CompleteRead to SequencedSocketData and convert all but 3 tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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/socket_test_util.h ('k') | net/spdy/spdy_network_transaction_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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 524
525 MockRead SequencedSocketData::OnRead() { 525 MockRead SequencedSocketData::OnRead() {
526 CHECK_EQ(IDLE, read_state_); 526 CHECK_EQ(IDLE, read_state_);
527 CHECK(!helper_.AllReadDataConsumed()); 527 CHECK(!helper_.AllReadDataConsumed());
528 528
529 NET_TRACE(1, " *** ") << "sequence_number: " << sequence_number_; 529 NET_TRACE(1, " *** ") << "sequence_number: " << sequence_number_;
530 const MockRead& next_read = helper_.PeekRead(); 530 const MockRead& next_read = helper_.PeekRead();
531 NET_TRACE(1, " *** ") << "next_read: " << next_read.sequence_number; 531 NET_TRACE(1, " *** ") << "next_read: " << next_read.sequence_number;
532 CHECK_GE(next_read.sequence_number, sequence_number_); 532 CHECK_GE(next_read.sequence_number, sequence_number_);
533 533
534 // Special case handling for hanging reads.
535 if (next_read.mode == ASYNC && next_read.result == ERR_IO_PENDING) {
536 NET_TRACE(1, " *** ") << "Hanging read";
537 helper_.AdvanceRead();
538 ++sequence_number_;
539 CHECK(helper_.AllReadDataConsumed());
540 return MockRead(SYNCHRONOUS, ERR_IO_PENDING);
541 }
542
534 if (next_read.sequence_number <= sequence_number_) { 543 if (next_read.sequence_number <= sequence_number_) {
535 if (next_read.mode == SYNCHRONOUS) { 544 if (next_read.mode == SYNCHRONOUS) {
536 NET_TRACE(1, " *** ") << "Returning synchronously"; 545 NET_TRACE(1, " *** ") << "Returning synchronously";
537 DumpMockReadWrite(next_read); 546 DumpMockReadWrite(next_read);
538 helper_.AdvanceRead(); 547 helper_.AdvanceRead();
539 ++sequence_number_; 548 ++sequence_number_;
540 MaybePostWriteCompleteTask(); 549 MaybePostWriteCompleteTask();
541 return next_read; 550 return next_read;
542 } 551 }
543 552
544 // If the result is ERR_IO_PENDING, then advance to the next state
545 // and pause reads.
546 if (next_read.result == ERR_IO_PENDING) {
547 NET_TRACE(1, " *** ") << "Pausing at: " << sequence_number_;
548 ++sequence_number_;
549 helper_.AdvanceRead();
550 read_state_ = PAUSED;
551 return MockRead(SYNCHRONOUS, ERR_IO_PENDING);
552 }
553 base::MessageLoop::current()->PostTask( 553 base::MessageLoop::current()->PostTask(
554 FROM_HERE, base::Bind(&SequencedSocketData::OnReadComplete, 554 FROM_HERE, base::Bind(&SequencedSocketData::OnReadComplete,
555 weak_factory_.GetWeakPtr())); 555 weak_factory_.GetWeakPtr()));
556 CHECK_NE(COMPLETING, write_state_); 556 CHECK_NE(COMPLETING, write_state_);
557 read_state_ = COMPLETING; 557 read_state_ = COMPLETING;
558 } else if (next_read.mode == SYNCHRONOUS) { 558 } else if (next_read.mode == SYNCHRONOUS) {
559 ADD_FAILURE() << "Unable to perform synchronous IO while stopped"; 559 ADD_FAILURE() << "Unable to perform synchronous IO while stopped";
560 return MockRead(SYNCHRONOUS, ERR_UNEXPECTED); 560 return MockRead(SYNCHRONOUS, ERR_UNEXPECTED);
561 } else { 561 } else {
562 NET_TRACE(1, " *** ") << "Waiting for write to trigger read"; 562 NET_TRACE(1, " *** ") << "Waiting for write to trigger read";
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 } 617 }
618 618
619 bool SequencedSocketData::AllReadDataConsumed() const { 619 bool SequencedSocketData::AllReadDataConsumed() const {
620 return helper_.AllReadDataConsumed(); 620 return helper_.AllReadDataConsumed();
621 } 621 }
622 622
623 bool SequencedSocketData::AllWriteDataConsumed() const { 623 bool SequencedSocketData::AllWriteDataConsumed() const {
624 return helper_.AllWriteDataConsumed(); 624 return helper_.AllWriteDataConsumed();
625 } 625 }
626 626
627 bool SequencedSocketData::IsReadPaused() {
628 return read_state_ == PAUSED;
629 }
630
631 void SequencedSocketData::CompleteRead() {
632 if (read_state_ != PAUSED) {
633 ADD_FAILURE() << "Unable to CompleteRead when not paused.";
634 return;
635 }
636 read_state_ = COMPLETING;
637 OnReadComplete();
638 }
639
640 void SequencedSocketData::MaybePostReadCompleteTask() { 627 void SequencedSocketData::MaybePostReadCompleteTask() {
641 NET_TRACE(1, " ****** ") << " current: " << sequence_number_; 628 NET_TRACE(1, " ****** ") << " current: " << sequence_number_;
642 // Only trigger the next read to complete if there is already a read pending 629 // Only trigger the next read to complete if there is already a read pending
643 // which should complete at the current sequence number. 630 // which should complete at the current sequence number.
644 if (read_state_ != PENDING || 631 if (read_state_ != PENDING ||
645 helper_.PeekRead().sequence_number != sequence_number_) { 632 helper_.PeekRead().sequence_number != sequence_number_) {
646 return; 633 return;
647 } 634 }
648 635
649 // If the result is ERR_IO_PENDING, then advance to the next state
650 // and pause reads.
651 if (helper_.PeekRead().result == ERR_IO_PENDING) {
652 NET_TRACE(1, " *** ") << "Pausing read at: " << sequence_number_;
653 ++sequence_number_;
654 helper_.AdvanceRead();
655 read_state_ = PAUSED;
656 return;
657 }
658
659 NET_TRACE(1, " ****** ") << "Posting task to complete read: " 636 NET_TRACE(1, " ****** ") << "Posting task to complete read: "
660 << sequence_number_; 637 << sequence_number_;
661 base::MessageLoop::current()->PostTask( 638 base::MessageLoop::current()->PostTask(
662 FROM_HERE, base::Bind(&SequencedSocketData::OnReadComplete, 639 FROM_HERE, base::Bind(&SequencedSocketData::OnReadComplete,
663 weak_factory_.GetWeakPtr())); 640 weak_factory_.GetWeakPtr()));
664 CHECK_NE(COMPLETING, write_state_); 641 CHECK_NE(COMPLETING, write_state_);
665 read_state_ = COMPLETING; 642 read_state_ = COMPLETING;
666 } 643 }
667 644
668 void SequencedSocketData::MaybePostWriteCompleteTask() { 645 void SequencedSocketData::MaybePostWriteCompleteTask() {
(...skipping 27 matching lines...) Expand all
696 sequence_number_++; 673 sequence_number_++;
697 read_state_ = IDLE; 674 read_state_ = IDLE;
698 675
699 // The result of this read completing might trigger the completion 676 // The result of this read completing might trigger the completion
700 // of a pending write. If so, post a task to complete the write later. 677 // of a pending write. If so, post a task to complete the write later.
701 // Since the socket may call back into the SequencedSocketData 678 // Since the socket may call back into the SequencedSocketData
702 // from socket()->OnReadComplete(), trigger the write task to be posted 679 // from socket()->OnReadComplete(), trigger the write task to be posted
703 // before calling that. 680 // before calling that.
704 MaybePostWriteCompleteTask(); 681 MaybePostWriteCompleteTask();
705 682
706 NET_TRACE(1, " *** ") << "Completing socket read for: " 683 NET_TRACE(1, " *** ") << "Completing socket read for: " << sequence_number_;
707 << data.sequence_number;
708 DumpMockReadWrite(data); 684 DumpMockReadWrite(data);
709 socket()->OnReadComplete(data); 685 socket()->OnReadComplete(data);
710 NET_TRACE(1, " *** ") << "Done"; 686 NET_TRACE(1, " *** ") << "Done";
711 } 687 }
712 688
713 void SequencedSocketData::OnWriteComplete() { 689 void SequencedSocketData::OnWriteComplete() {
714 CHECK_EQ(COMPLETING, write_state_); 690 CHECK_EQ(COMPLETING, write_state_);
715 NET_TRACE(1, " *** ") << " Completing write for: " << sequence_number_; 691 NET_TRACE(1, " *** ") << " Completing write for: " << sequence_number_;
716 if (!socket()) { 692 if (!socket()) {
717 NET_TRACE(1, " *** ") << "No socket available to complete write."; 693 NET_TRACE(1, " *** ") << "No socket available to complete write.";
718 return; 694 return;
719 } 695 }
720 696
721 const MockWrite& data = helper_.AdvanceWrite(); 697 const MockWrite& data = helper_.AdvanceWrite();
722 DCHECK_EQ(sequence_number_, data.sequence_number); 698 DCHECK_EQ(sequence_number_, data.sequence_number);
723 sequence_number_++; 699 sequence_number_++;
724 write_state_ = IDLE; 700 write_state_ = IDLE;
725 int rv = data.result == OK ? data.data_len : data.result; 701 int rv = data.result == OK ? data.data_len : data.result;
726 702
727 // The result of this write completing might trigger the completion 703 // The result of this write completing might trigger the completion
728 // of a pending read. If so, post a task to complete the read later. 704 // of a pending read. If so, post a task to complete the read later.
729 // Since the socket may call back into the SequencedSocketData 705 // Since the socket may call back into the SequencedSocketData
730 // from socket()->OnWriteComplete(), trigger the write task to be posted 706 // from socket()->OnWriteComplete(), trigger the write task to be posted
731 // before calling that. 707 // before calling that.
732 MaybePostReadCompleteTask(); 708 MaybePostReadCompleteTask();
733 709
734 NET_TRACE(1, " *** ") << " Completing socket write for: " 710 NET_TRACE(1, " *** ") << " Completing socket write for: " << sequence_number_;
735 << data.sequence_number;
736 socket()->OnWriteComplete(rv); 711 socket()->OnWriteComplete(rv);
737 NET_TRACE(1, " *** ") << "Done"; 712 NET_TRACE(1, " *** ") << "Done";
738 } 713 }
739 714
740 SequencedSocketData::~SequencedSocketData() { 715 SequencedSocketData::~SequencedSocketData() {
741 } 716 }
742 717
743 DeterministicSocketData::DeterministicSocketData(MockRead* reads, 718 DeterministicSocketData::DeterministicSocketData(MockRead* reads,
744 size_t reads_count, MockWrite* writes, size_t writes_count) 719 size_t reads_count, MockWrite* writes, size_t writes_count)
745 : StaticSocketDataProvider(reads, reads_count, writes, writes_count), 720 : StaticSocketDataProvider(reads, reads_count, writes, writes_count),
(...skipping 1474 matching lines...) Expand 10 before | Expand all | Expand 10 after
2220 2195
2221 const char kSOCKS5OkRequest[] = 2196 const char kSOCKS5OkRequest[] =
2222 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 }; 2197 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 };
2223 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest); 2198 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest);
2224 2199
2225 const char kSOCKS5OkResponse[] = 2200 const char kSOCKS5OkResponse[] =
2226 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; 2201 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 };
2227 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse); 2202 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse);
2228 2203
2229 } // namespace net 2204 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socket_test_util.h ('k') | net/spdy/spdy_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698