xref: /aosp_15_r20/external/cronet/net/quic/mock_quic_data.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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