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

Side by Side Diff: net/quic/test_tools/quic_test_packet_maker.cc

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/quic/test_tools/quic_test_packet_maker.h" 5 #include "net/quic/test_tools/quic_test_packet_maker.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "net/quic/quic_framer.h" 9 #include "net/quic/quic_framer.h"
10 #include "net/quic/quic_http_utils.h" 10 #include "net/quic/quic_http_utils.h"
11 #include "net/quic/quic_utils.h" 11 #include "net/quic/quic_utils.h"
12 #include "net/quic/test_tools/quic_test_utils.h" 12 #include "net/quic/test_tools/quic_test_utils.h"
13 13
14 using std::make_pair; 14 using std::make_pair;
15 15
16 namespace net { 16 namespace net {
17 namespace test { 17 namespace test {
18 18
19 QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version, 19 QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version,
20 QuicConnectionId connection_id, 20 QuicConnectionId connection_id,
21 MockClock* clock) 21 MockClock* clock)
22 : version_(version), 22 : version_(version),
23 connection_id_(connection_id), 23 connection_id_(connection_id),
24 clock_(clock), 24 clock_(clock),
25 spdy_request_framer_(SPDY3), 25 spdy_request_framer_(version > QUIC_VERSION_23 ? SPDY4 : SPDY3),
26 spdy_response_framer_(SPDY3) { 26 spdy_response_framer_(version > QUIC_VERSION_23 ? SPDY4 : SPDY3) {
27 } 27 }
28 28
29 QuicTestPacketMaker::~QuicTestPacketMaker() { 29 QuicTestPacketMaker::~QuicTestPacketMaker() {
30 } 30 }
31 31
32 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( 32 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket(
33 QuicPacketSequenceNumber num, 33 QuicPacketSequenceNumber num,
34 bool include_version, 34 bool include_version,
35 QuicStreamId stream_id, 35 QuicStreamId stream_id,
36 QuicRstStreamErrorCode error_code) { 36 QuicRstStreamErrorCode error_code) {
(...skipping 25 matching lines...) Expand all
62 header.public_header.reset_flag = false; 62 header.public_header.reset_flag = false;
63 header.public_header.version_flag = include_version; 63 header.public_header.version_flag = include_version;
64 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; 64 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER;
65 header.packet_sequence_number = num; 65 header.packet_sequence_number = num;
66 header.entropy_flag = false; 66 header.entropy_flag = false;
67 header.fec_flag = false; 67 header.fec_flag = false;
68 header.fec_group = 0; 68 header.fec_group = 0;
69 69
70 QuicAckFrame ack(MakeAckFrame(largest_received)); 70 QuicAckFrame ack(MakeAckFrame(largest_received));
71 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); 71 ack.delta_time_largest_observed = QuicTime::Delta::Zero();
72 if (version_ > QUIC_VERSION_22) { 72 for (QuicPacketSequenceNumber i = least_unacked; i <= largest_received; ++i) {
73 for (QuicPacketSequenceNumber i = least_unacked; i <= largest_received; 73 ack.received_packet_times.push_back(make_pair(i, clock_->Now()));
74 ++i) {
75 ack.received_packet_times.push_back(make_pair(i, clock_->Now()));
76 }
77 } 74 }
78 QuicFrames frames; 75 QuicFrames frames;
79 frames.push_back(QuicFrame(&ack)); 76 frames.push_back(QuicFrame(&ack));
80 QuicCongestionFeedbackFrame feedback;
81 if (send_feedback && version_ <= QUIC_VERSION_22) {
82 feedback.type = kTCP;
83 feedback.tcp.receive_window = 256000;
84
85 frames.push_back(QuicFrame(&feedback));
86 }
87 77
88 QuicStopWaitingFrame stop_waiting; 78 QuicStopWaitingFrame stop_waiting;
89 stop_waiting.least_unacked = least_unacked; 79 stop_waiting.least_unacked = least_unacked;
90 frames.push_back(QuicFrame(&stop_waiting)); 80 frames.push_back(QuicFrame(&stop_waiting));
91 81
92 QuicRstStreamFrame rst(stream_id, error_code, 0); 82 QuicRstStreamFrame rst(stream_id, error_code, 0);
93 frames.push_back(QuicFrame(&rst)); 83 frames.push_back(QuicFrame(&rst));
94 84
95 QuicFramer framer(SupportedVersions(version_), clock_->Now(), false); 85 QuicFramer framer(SupportedVersions(version_), clock_->Now(), false);
96 scoped_ptr<QuicPacket> packet( 86 scoped_ptr<QuicPacket> packet(
(...skipping 30 matching lines...) Expand all
127 header.public_header.reset_flag = false; 117 header.public_header.reset_flag = false;
128 header.public_header.version_flag = false; 118 header.public_header.version_flag = false;
129 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; 119 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER;
130 header.packet_sequence_number = sequence_number; 120 header.packet_sequence_number = sequence_number;
131 header.entropy_flag = false; 121 header.entropy_flag = false;
132 header.fec_flag = false; 122 header.fec_flag = false;
133 header.fec_group = 0; 123 header.fec_group = 0;
134 124
135 QuicAckFrame ack(MakeAckFrame(largest_received)); 125 QuicAckFrame ack(MakeAckFrame(largest_received));
136 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); 126 ack.delta_time_largest_observed = QuicTime::Delta::Zero();
137 if (version_ > QUIC_VERSION_22) { 127 for (QuicPacketSequenceNumber i = least_unacked; i <= largest_received; ++i) {
138 for (QuicPacketSequenceNumber i = least_unacked; i <= largest_received; 128 ack.received_packet_times.push_back(make_pair(i, clock_->Now()));
139 ++i) {
140 ack.received_packet_times.push_back(make_pair(i, clock_->Now()));
141 }
142 } 129 }
143 130
144 QuicFramer framer(SupportedVersions(version_), clock_->Now(), false); 131 QuicFramer framer(SupportedVersions(version_), clock_->Now(), false);
145 QuicFrames frames; 132 QuicFrames frames;
146 frames.push_back(QuicFrame(&ack)); 133 frames.push_back(QuicFrame(&ack));
147 QuicCongestionFeedbackFrame feedback;
148 if (send_feedback && version_ <= QUIC_VERSION_22) {
149 feedback.type = kTCP;
150 feedback.tcp.receive_window = 256000;
151 frames.push_back(QuicFrame(&feedback));
152 }
153 134
154 QuicStopWaitingFrame stop_waiting; 135 QuicStopWaitingFrame stop_waiting;
155 stop_waiting.least_unacked = least_unacked; 136 stop_waiting.least_unacked = least_unacked;
156 frames.push_back(QuicFrame(&stop_waiting)); 137 frames.push_back(QuicFrame(&stop_waiting));
157 138
158 scoped_ptr<QuicPacket> packet( 139 scoped_ptr<QuicPacket> packet(
159 BuildUnsizedDataPacket(&framer, header, frames).packet); 140 BuildUnsizedDataPacket(&framer, header, frames).packet);
160 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( 141 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(
161 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); 142 ENCRYPTION_NONE, header.packet_sequence_number, *packet));
162 } 143 }
163 144
164 // Returns a newly created packet to send kData on stream 1. 145 // Returns a newly created packet to send kData on stream 1.
165 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeDataPacket( 146 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeDataPacket(
166 QuicPacketSequenceNumber sequence_number, 147 QuicPacketSequenceNumber sequence_number,
167 QuicStreamId stream_id, 148 QuicStreamId stream_id,
168 bool should_include_version, 149 bool should_include_version,
169 bool fin, 150 bool fin,
170 QuicStreamOffset offset, 151 QuicStreamOffset offset,
171 base::StringPiece data) { 152 base::StringPiece data) {
172 InitializeHeader(sequence_number, should_include_version); 153 InitializeHeader(sequence_number, should_include_version);
173 QuicStreamFrame frame(stream_id, fin, offset, MakeIOVector(data)); 154 QuicStreamFrame frame(stream_id, fin, offset, MakeIOVector(data));
174 return MakePacket(header_, QuicFrame(&frame)); 155 return MakePacket(header_, QuicFrame(&frame));
175 } 156 }
176 157
177 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( 158 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket(
178 QuicPacketSequenceNumber sequence_number, 159 QuicPacketSequenceNumber sequence_number,
179 QuicStreamId stream_id, 160 QuicStreamId stream_id,
180 bool should_include_version, 161 bool should_include_version,
181 bool fin, 162 bool fin,
163 QuicPriority priority,
182 const SpdyHeaderBlock& headers) { 164 const SpdyHeaderBlock& headers) {
183 InitializeHeader(sequence_number, should_include_version); 165 InitializeHeader(sequence_number, should_include_version);
184 SpdySynStreamIR syn_stream(stream_id); 166 scoped_ptr<SpdySerializedFrame> spdy_frame;
185 syn_stream.set_name_value_block(headers); 167 if (spdy_request_framer_.protocol_version() == SPDY3) {
186 syn_stream.set_fin(fin); 168 SpdySynStreamIR syn_stream(stream_id);
187 syn_stream.set_priority(0); 169 syn_stream.set_name_value_block(headers);
188 scoped_ptr<SpdySerializedFrame> spdy_frame( 170 syn_stream.set_fin(fin);
189 spdy_request_framer_.SerializeSynStream(syn_stream)); 171 syn_stream.set_priority(priority);
172 spdy_frame.reset(spdy_request_framer_.SerializeSynStream(syn_stream));
173 } else {
174 SpdyHeadersIR headers_frame(stream_id);
175 headers_frame.set_name_value_block(headers);
176 headers_frame.set_fin(fin);
177 headers_frame.set_priority(priority);
178 headers_frame.set_has_priority(true);
179 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame));
180 }
190 QuicStreamFrame frame(kHeadersStreamId, false, 0, 181 QuicStreamFrame frame(kHeadersStreamId, false, 0,
191 MakeIOVector(base::StringPiece(spdy_frame->data(), 182 MakeIOVector(base::StringPiece(spdy_frame->data(),
192 spdy_frame->size()))); 183 spdy_frame->size())));
193 return MakePacket(header_, QuicFrame(&frame)); 184 return MakePacket(header_, QuicFrame(&frame));
194 } 185 }
195 186
196 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( 187 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket(
197 QuicPacketSequenceNumber sequence_number, 188 QuicPacketSequenceNumber sequence_number,
198 QuicStreamId stream_id, 189 QuicStreamId stream_id,
199 bool should_include_version, 190 bool should_include_version,
200 bool fin, 191 bool fin,
201 const SpdyHeaderBlock& headers) { 192 const SpdyHeaderBlock& headers) {
202 InitializeHeader(sequence_number, should_include_version); 193 InitializeHeader(sequence_number, should_include_version);
203 SpdySynReplyIR syn_reply(stream_id); 194 scoped_ptr<SpdySerializedFrame> spdy_frame;
204 syn_reply.set_name_value_block(headers); 195 if (spdy_request_framer_.protocol_version() == SPDY3) {
205 syn_reply.set_fin(fin); 196 SpdySynReplyIR syn_reply(stream_id);
206 scoped_ptr<SpdySerializedFrame> spdy_frame( 197 syn_reply.set_name_value_block(headers);
207 spdy_response_framer_.SerializeSynReply(syn_reply)); 198 syn_reply.set_fin(fin);
199 spdy_frame.reset(spdy_response_framer_.SerializeSynReply(syn_reply));
200 } else {
201 SpdyHeadersIR headers_frame(stream_id);
202 headers_frame.set_name_value_block(headers);
203 headers_frame.set_fin(fin);
204 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame));
205 }
208 QuicStreamFrame frame(kHeadersStreamId, false, 0, 206 QuicStreamFrame frame(kHeadersStreamId, false, 0,
209 MakeIOVector(base::StringPiece(spdy_frame->data(), 207 MakeIOVector(base::StringPiece(spdy_frame->data(),
210 spdy_frame->size()))); 208 spdy_frame->size())));
211 return MakePacket(header_, QuicFrame(&frame)); 209 return MakePacket(header_, QuicFrame(&frame));
212 } 210 }
213 211
214 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( 212 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders(
215 const std::string& method, 213 const std::string& method,
216 const std::string& scheme, 214 const std::string& scheme,
217 const std::string& path) { 215 const std::string& path) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 header_.public_header.version_flag = should_include_version; 251 header_.public_header.version_flag = should_include_version;
254 header_.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; 252 header_.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER;
255 header_.packet_sequence_number = sequence_number; 253 header_.packet_sequence_number = sequence_number;
256 header_.fec_group = 0; 254 header_.fec_group = 0;
257 header_.entropy_flag = false; 255 header_.entropy_flag = false;
258 header_.fec_flag = false; 256 header_.fec_flag = false;
259 } 257 }
260 258
261 } // namespace test 259 } // namespace test
262 } // namespace net 260 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698