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 #include "net/base/hex_utils.h"
7
8 namespace net::test {
9
MockQuicData(quic::ParsedQuicVersion version)10 MockQuicData::MockQuicData(quic::ParsedQuicVersion version)
11 : printer_(version) {}
12
13 MockQuicData::~MockQuicData() = default;
14
AddConnect(IoMode mode,int rv)15 void MockQuicData::AddConnect(IoMode mode, int rv) {
16 connect_ = std::make_unique<MockConnect>(mode, rv);
17 }
18
AddRead(IoMode mode,std::unique_ptr<quic::QuicReceivedPacket> packet)19 void MockQuicData::AddRead(IoMode mode,
20 std::unique_ptr<quic::QuicReceivedPacket> packet) {
21 reads_.emplace_back(mode, packet->data(), packet->length(),
22 sequence_number_++,
23 static_cast<uint8_t>(packet->ecn_codepoint()));
24 packets_.push_back(std::move(packet));
25 }
AddRead(IoMode mode,std::unique_ptr<quic::QuicEncryptedPacket> packet)26 void MockQuicData::AddRead(IoMode mode,
27 std::unique_ptr<quic::QuicEncryptedPacket> packet) {
28 reads_.emplace_back(mode, packet->data(), packet->length(),
29 sequence_number_++, /*tos=*/0);
30 packets_.push_back(std::move(packet));
31 }
AddRead(IoMode mode,int rv)32 void MockQuicData::AddRead(IoMode mode, int rv) {
33 reads_.emplace_back(mode, rv, sequence_number_++);
34 }
35
AddReadPause()36 void MockQuicData::AddReadPause() {
37 // Add a sentinel value that indicates a read pause.
38 AddRead(ASYNC, ERR_IO_PENDING);
39 }
40
AddReadPauseForever()41 void MockQuicData::AddReadPauseForever() {
42 // Add a sentinel value that indicates a read pause forever.
43 AddRead(SYNCHRONOUS, ERR_IO_PENDING);
44 }
45
AddWrite(IoMode mode,std::unique_ptr<quic::QuicEncryptedPacket> packet)46 void MockQuicData::AddWrite(IoMode mode,
47 std::unique_ptr<quic::QuicEncryptedPacket> packet) {
48 writes_.emplace_back(mode, packet->data(), packet->length(),
49 sequence_number_++);
50 packets_.push_back(std::move(packet));
51 }
52
AddWrite(IoMode mode,int rv)53 void MockQuicData::AddWrite(IoMode mode, int rv) {
54 writes_.emplace_back(mode, rv, sequence_number_++);
55 }
56
AddWrite(IoMode mode,int rv,std::unique_ptr<quic::QuicEncryptedPacket> packet)57 void MockQuicData::AddWrite(IoMode mode,
58 int rv,
59 std::unique_ptr<quic::QuicEncryptedPacket> packet) {
60 writes_.emplace_back(mode, rv, sequence_number_++);
61 packets_.push_back(std::move(packet));
62 }
63
AddWritePause()64 void MockQuicData::AddWritePause() {
65 // Add a sentinel value that indicates a write pause.
66 AddWrite(ASYNC, ERR_IO_PENDING);
67 }
68
AddSocketDataToFactory(MockClientSocketFactory * factory)69 void MockQuicData::AddSocketDataToFactory(MockClientSocketFactory* factory) {
70 factory->AddSocketDataProvider(InitializeAndGetSequencedSocketData());
71 }
72
AllReadDataConsumed()73 bool MockQuicData::AllReadDataConsumed() {
74 return socket_data_->AllReadDataConsumed();
75 }
76
AllWriteDataConsumed()77 bool MockQuicData::AllWriteDataConsumed() {
78 return socket_data_->AllWriteDataConsumed();
79 }
80
ExpectAllReadDataConsumed()81 void MockQuicData::ExpectAllReadDataConsumed() {
82 socket_data_->ExpectAllReadDataConsumed();
83 }
84
ExpectAllWriteDataConsumed()85 void MockQuicData::ExpectAllWriteDataConsumed() {
86 socket_data_->ExpectAllWriteDataConsumed();
87 }
88
Resume()89 void MockQuicData::Resume() {
90 socket_data_->Resume();
91 }
92
InitializeAndGetSequencedSocketData()93 SequencedSocketData* MockQuicData::InitializeAndGetSequencedSocketData() {
94 socket_data_ = std::make_unique<SequencedSocketData>(reads_, writes_);
95 socket_data_->set_printer(&printer_);
96 if (connect_ != nullptr)
97 socket_data_->set_connect_data(*connect_);
98
99 return socket_data_.get();
100 }
101
GetSequencedSocketData()102 SequencedSocketData* MockQuicData::GetSequencedSocketData() {
103 return socket_data_.get();
104 }
105
106 } // namespace net::test
107