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