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

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

Issue 1113203002: Convert DnsTransactionTest to use SequencedSocketData (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final fixes 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
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 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 base::MessageLoop::current()->PostTask( 656 base::MessageLoop::current()->PostTask(
657 FROM_HERE, base::Bind(&SequencedSocketData::OnWriteComplete, 657 FROM_HERE, base::Bind(&SequencedSocketData::OnWriteComplete,
658 weak_factory_.GetWeakPtr())); 658 weak_factory_.GetWeakPtr()));
659 CHECK_NE(COMPLETING, read_state_); 659 CHECK_NE(COMPLETING, read_state_);
660 write_state_ = COMPLETING; 660 write_state_ = COMPLETING;
661 } 661 }
662 662
663 void SequencedSocketData::OnReadComplete() { 663 void SequencedSocketData::OnReadComplete() {
664 CHECK_EQ(COMPLETING, read_state_); 664 CHECK_EQ(COMPLETING, read_state_);
665 NET_TRACE(1, " *** ") << "Completing read for: " << sequence_number_; 665 NET_TRACE(1, " *** ") << "Completing read for: " << sequence_number_;
666 if (!socket()) {
667 NET_TRACE(1, " *** ") << "No socket available to complete read";
668 return;
669 }
670 666
671 MockRead data = helper_.AdvanceRead(); 667 MockRead data = helper_.AdvanceRead();
672 DCHECK_EQ(sequence_number_, data.sequence_number); 668 DCHECK_EQ(sequence_number_, data.sequence_number);
673 sequence_number_++; 669 sequence_number_++;
674 read_state_ = IDLE; 670 read_state_ = IDLE;
675 671
676 // The result of this read completing might trigger the completion 672 // The result of this read completing might trigger the completion
677 // of a pending write. If so, post a task to complete the write later. 673 // of a pending write. If so, post a task to complete the write later.
678 // Since the socket may call back into the SequencedSocketData 674 // Since the socket may call back into the SequencedSocketData
679 // from socket()->OnReadComplete(), trigger the write task to be posted 675 // from socket()->OnReadComplete(), trigger the write task to be posted
680 // before calling that. 676 // before calling that.
681 MaybePostWriteCompleteTask(); 677 MaybePostWriteCompleteTask();
682 678
679 if (!socket()) {
680 NET_TRACE(1, " *** ") << "No socket available to complete read";
681 return;
682 }
683
683 NET_TRACE(1, " *** ") << "Completing socket read for: " << sequence_number_; 684 NET_TRACE(1, " *** ") << "Completing socket read for: " << sequence_number_;
684 DumpMockReadWrite(data); 685 DumpMockReadWrite(data);
685 socket()->OnReadComplete(data); 686 socket()->OnReadComplete(data);
686 NET_TRACE(1, " *** ") << "Done"; 687 NET_TRACE(1, " *** ") << "Done";
687 } 688 }
688 689
689 void SequencedSocketData::OnWriteComplete() { 690 void SequencedSocketData::OnWriteComplete() {
690 CHECK_EQ(COMPLETING, write_state_); 691 CHECK_EQ(COMPLETING, write_state_);
691 NET_TRACE(1, " *** ") << " Completing write for: " << sequence_number_; 692 NET_TRACE(1, " *** ") << " Completing write for: " << sequence_number_;
692 if (!socket()) {
693 NET_TRACE(1, " *** ") << "No socket available to complete write.";
694 return;
695 }
696 693
697 const MockWrite& data = helper_.AdvanceWrite(); 694 const MockWrite& data = helper_.AdvanceWrite();
698 DCHECK_EQ(sequence_number_, data.sequence_number); 695 DCHECK_EQ(sequence_number_, data.sequence_number);
699 sequence_number_++; 696 sequence_number_++;
700 write_state_ = IDLE; 697 write_state_ = IDLE;
701 int rv = data.result == OK ? data.data_len : data.result; 698 int rv = data.result == OK ? data.data_len : data.result;
702 699
703 // The result of this write completing might trigger the completion 700 // The result of this write completing might trigger the completion
704 // of a pending read. If so, post a task to complete the read later. 701 // of a pending read. If so, post a task to complete the read later.
705 // Since the socket may call back into the SequencedSocketData 702 // Since the socket may call back into the SequencedSocketData
706 // from socket()->OnWriteComplete(), trigger the write task to be posted 703 // from socket()->OnWriteComplete(), trigger the write task to be posted
707 // before calling that. 704 // before calling that.
708 MaybePostReadCompleteTask(); 705 MaybePostReadCompleteTask();
709 706
707 if (!socket()) {
708 NET_TRACE(1, " *** ") << "No socket available to complete write.";
709 return;
710 }
711
710 NET_TRACE(1, " *** ") << " Completing socket write for: " << sequence_number_; 712 NET_TRACE(1, " *** ") << " Completing socket write for: " << sequence_number_;
711 socket()->OnWriteComplete(rv); 713 socket()->OnWriteComplete(rv);
712 NET_TRACE(1, " *** ") << "Done"; 714 NET_TRACE(1, " *** ") << "Done";
713 } 715 }
714 716
715 SequencedSocketData::~SequencedSocketData() { 717 SequencedSocketData::~SequencedSocketData() {
716 } 718 }
717 719
718 DeterministicSocketData::DeterministicSocketData(MockRead* reads, 720 DeterministicSocketData::DeterministicSocketData(MockRead* reads,
719 size_t reads_count, MockWrite* writes, size_t writes_count) 721 size_t reads_count, MockWrite* writes, size_t writes_count)
(...skipping 991 matching lines...) Expand 10 before | Expand all | Expand 10 after
1711 source_port_(123), 1713 source_port_(123),
1712 pending_read_buf_(NULL), 1714 pending_read_buf_(NULL),
1713 pending_read_buf_len_(0), 1715 pending_read_buf_len_(0),
1714 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_NONE)), 1716 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_NONE)),
1715 weak_factory_(this) { 1717 weak_factory_(this) {
1716 DCHECK(data_); 1718 DCHECK(data_);
1717 data_->Reset(); 1719 data_->Reset();
1718 peer_addr_ = data->connect_data().peer_addr; 1720 peer_addr_ = data->connect_data().peer_addr;
1719 } 1721 }
1720 1722
1721 MockUDPClientSocket::~MockUDPClientSocket() {} 1723 MockUDPClientSocket::~MockUDPClientSocket() {
1724 data_->set_socket(nullptr);
mmenke 2015/05/04 20:08:32 This seems reasonable. Should probably do it in ~
Ryan Hamilton 2015/05/04 20:12:33 Done.
Ryan Hamilton 2015/05/04 20:15:09 Actually, I take it back. Doing that causes other
1725 }
1722 1726
1723 int MockUDPClientSocket::Read(IOBuffer* buf, 1727 int MockUDPClientSocket::Read(IOBuffer* buf,
1724 int buf_len, 1728 int buf_len,
1725 const CompletionCallback& callback) { 1729 const CompletionCallback& callback) {
1726 if (!connected_) 1730 if (!connected_)
1727 return ERR_UNEXPECTED; 1731 return ERR_UNEXPECTED;
1728 1732
1729 // If the buffer is already in use, a read is already in progress! 1733 // If the buffer is already in use, a read is already in progress!
1730 DCHECK(pending_read_buf_.get() == NULL); 1734 DCHECK(pending_read_buf_.get() == NULL);
1731 1735
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
2195 2199
2196 const char kSOCKS5OkRequest[] = 2200 const char kSOCKS5OkRequest[] =
2197 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 }; 2201 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 };
2198 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest); 2202 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest);
2199 2203
2200 const char kSOCKS5OkResponse[] = 2204 const char kSOCKS5OkResponse[] =
2201 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; 2205 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 };
2202 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse); 2206 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse);
2203 2207
2204 } // namespace net 2208 } // namespace net
OLDNEW
« net/dns/dns_transaction_unittest.cc ('K') | « net/dns/dns_transaction_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698