• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "net/quic/mock_quic_data.h"
6 
7 #include "net/base/hex_utils.h"
8 #include "net/socket/socket_test_util.h"
9 
10 namespace net::test {
11 
MockQuicData(quic::ParsedQuicVersion version)12 MockQuicData::MockQuicData(quic::ParsedQuicVersion version)
13     : printer_(version) {}
14 
15 MockQuicData::~MockQuicData() = default;
16 
AddConnect(IoMode mode,int rv)17 void MockQuicData::AddConnect(IoMode mode, int rv) {
18   connect_ = std::make_unique<MockConnect>(mode, rv);
19 }
20 
AddConnect(MockConnectCompleter * completer)21 void MockQuicData::AddConnect(MockConnectCompleter* completer) {
22   connect_ = std::make_unique<MockConnect>(completer);
23 }
24 
AddRead(IoMode mode,std::unique_ptr<quic::QuicReceivedPacket> packet)25 void MockQuicData::AddRead(IoMode mode,
26                            std::unique_ptr<quic::QuicReceivedPacket> packet) {
27   reads_.emplace_back(mode, packet->data(), packet->length(),
28                       sequence_number_++,
29                       static_cast<uint8_t>(packet->ecn_codepoint()));
30   packets_.push_back(std::move(packet));
31 }
AddRead(IoMode mode,std::unique_ptr<quic::QuicEncryptedPacket> packet)32 void MockQuicData::AddRead(IoMode mode,
33                            std::unique_ptr<quic::QuicEncryptedPacket> packet) {
34   reads_.emplace_back(mode, packet->data(), packet->length(),
35                       sequence_number_++, /*tos=*/0);
36   packets_.push_back(std::move(packet));
37 }
AddRead(IoMode mode,int rv)38 void MockQuicData::AddRead(IoMode mode, int rv) {
39   reads_.emplace_back(mode, rv, sequence_number_++);
40 }
41 
AddReadPause()42 void MockQuicData::AddReadPause() {
43   // Add a sentinel value that indicates a read pause.
44   AddRead(ASYNC, ERR_IO_PENDING);
45 }
46 
AddReadPauseForever()47 void MockQuicData::AddReadPauseForever() {
48   // Add a sentinel value that indicates a read pause forever.
49   AddRead(SYNCHRONOUS, ERR_IO_PENDING);
50 }
51 
AddWrite(IoMode mode,std::unique_ptr<quic::QuicEncryptedPacket> packet)52 void MockQuicData::AddWrite(IoMode mode,
53                             std::unique_ptr<quic::QuicEncryptedPacket> packet) {
54   writes_.emplace_back(mode, packet->data(), packet->length(),
55                        sequence_number_++);
56   packets_.push_back(std::move(packet));
57 }
58 
AddWrite(IoMode mode,int rv)59 void MockQuicData::AddWrite(IoMode mode, int rv) {
60   writes_.emplace_back(mode, rv, sequence_number_++);
61 }
62 
AddWrite(IoMode mode,int rv,std::unique_ptr<quic::QuicEncryptedPacket> packet)63 void MockQuicData::AddWrite(IoMode mode,
64                             int rv,
65                             std::unique_ptr<quic::QuicEncryptedPacket> packet) {
66   writes_.emplace_back(mode, rv, sequence_number_++);
67   packets_.push_back(std::move(packet));
68 }
69 
AddWritePause()70 void MockQuicData::AddWritePause() {
71   // Add a sentinel value that indicates a write pause.
72   AddWrite(ASYNC, ERR_IO_PENDING);
73 }
74 
AddSocketDataToFactory(MockClientSocketFactory * factory)75 void MockQuicData::AddSocketDataToFactory(MockClientSocketFactory* factory) {
76   factory->AddSocketDataProvider(InitializeAndGetSequencedSocketData());
77 }
78 
AllReadDataConsumed()79 bool MockQuicData::AllReadDataConsumed() {
80   return socket_data_->AllReadDataConsumed();
81 }
82 
AllWriteDataConsumed()83 bool MockQuicData::AllWriteDataConsumed() {
84   return socket_data_->AllWriteDataConsumed();
85 }
86 
ExpectAllReadDataConsumed()87 void MockQuicData::ExpectAllReadDataConsumed() {
88   socket_data_->ExpectAllReadDataConsumed();
89 }
90 
ExpectAllWriteDataConsumed()91 void MockQuicData::ExpectAllWriteDataConsumed() {
92   socket_data_->ExpectAllWriteDataConsumed();
93 }
94 
Resume()95 void MockQuicData::Resume() {
96   socket_data_->Resume();
97 }
98 
InitializeAndGetSequencedSocketData()99 SequencedSocketData* MockQuicData::InitializeAndGetSequencedSocketData() {
100   socket_data_ = std::make_unique<SequencedSocketData>(reads_, writes_);
101   socket_data_->set_printer(&printer_);
102   if (connect_ != nullptr)
103     socket_data_->set_connect_data(*connect_);
104 
105   return socket_data_.get();
106 }
107 
GetSequencedSocketData()108 SequencedSocketData* MockQuicData::GetSequencedSocketData() {
109   return socket_data_.get();
110 }
111 
112 }  // namespace net::test
113