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

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

Issue 1540463003: Change the interface of GetAlternativeServicesFor, always return the best Alt-Svc entry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change hanging_data_ to vector Created 4 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"
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 header.entropy_flag = false; 160 header.entropy_flag = false;
161 header.fec_flag = false; 161 header.fec_flag = false;
162 header.fec_group = 0; 162 header.fec_group = 0;
163 163
164 QuicConnectionCloseFrame close; 164 QuicConnectionCloseFrame close;
165 close.error_code = QUIC_CRYPTO_VERSION_NOT_SUPPORTED; 165 close.error_code = QUIC_CRYPTO_VERSION_NOT_SUPPORTED;
166 close.error_details = "Time to panic!"; 166 close.error_details = "Time to panic!";
167 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(&close))); 167 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(&close)));
168 } 168 }
169 169
170 // Sets both least_unacked fields in stop waiting frame and ack frame
171 // to be |least_unacked|.
172 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket(
173 QuicPacketNumber packet_number,
174 QuicPacketNumber largest_received,
175 QuicPacketNumber least_unacked,
176 bool send_feedback) {
177 return MakeAckPacket(packet_number, largest_received, least_unacked,
178 least_unacked, send_feedback);
179 }
180
170 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket( 181 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket(
171 QuicPacketNumber packet_number, 182 QuicPacketNumber packet_number,
172 QuicPacketNumber largest_received, 183 QuicPacketNumber largest_received,
173 QuicPacketNumber least_unacked, 184 QuicPacketNumber ack_least_unacked,
185 QuicPacketNumber stop_least_unacked,
174 bool send_feedback) { 186 bool send_feedback) {
175 QuicPacketHeader header; 187 QuicPacketHeader header;
176 header.public_header.connection_id = connection_id_; 188 header.public_header.connection_id = connection_id_;
177 header.public_header.reset_flag = false; 189 header.public_header.reset_flag = false;
178 header.public_header.version_flag = false; 190 header.public_header.version_flag = false;
179 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 191 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
180 header.packet_number = packet_number; 192 header.packet_number = packet_number;
181 header.entropy_flag = false; 193 header.entropy_flag = false;
182 header.fec_flag = false; 194 header.fec_flag = false;
183 header.fec_group = 0; 195 header.fec_group = 0;
184 196
185 QuicAckFrame ack(MakeAckFrame(largest_received)); 197 QuicAckFrame ack(MakeAckFrame(largest_received));
186 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); 198 ack.delta_time_largest_observed = QuicTime::Delta::Zero();
187 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { 199 for (QuicPacketNumber i = ack_least_unacked; i <= largest_received; ++i) {
188 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); 200 ack.received_packet_times.push_back(make_pair(i, clock_->Now()));
189 } 201 }
190 202
191 QuicFramer framer(SupportedVersions(version_), clock_->Now(), 203 QuicFramer framer(SupportedVersions(version_), clock_->Now(),
192 Perspective::IS_CLIENT); 204 Perspective::IS_CLIENT);
193 QuicFrames frames; 205 QuicFrames frames;
194 frames.push_back(QuicFrame(&ack)); 206 frames.push_back(QuicFrame(&ack));
195 207
196 QuicStopWaitingFrame stop_waiting; 208 QuicStopWaitingFrame stop_waiting;
197 stop_waiting.least_unacked = least_unacked; 209 stop_waiting.least_unacked = stop_least_unacked;
198 frames.push_back(QuicFrame(&stop_waiting)); 210 frames.push_back(QuicFrame(&stop_waiting));
199 211
200 scoped_ptr<QuicPacket> packet( 212 scoped_ptr<QuicPacket> packet(
201 BuildUnsizedDataPacket(&framer, header, frames)); 213 BuildUnsizedDataPacket(&framer, header, frames));
202 char buffer[kMaxPacketSize]; 214 char buffer[kMaxPacketSize];
203 size_t encrypted_size = framer.EncryptPayload( 215 size_t encrypted_size = framer.EncryptPayload(
204 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize); 216 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize);
205 EXPECT_NE(0u, encrypted_size); 217 EXPECT_NE(0u, encrypted_size);
206 QuicEncryptedPacket encrypted(buffer, encrypted_size, false); 218 QuicEncryptedPacket encrypted(buffer, encrypted_size, false);
207 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone()); 219 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone());
(...skipping 13 matching lines...) Expand all
221 } 233 }
222 234
223 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( 235 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket(
224 QuicPacketNumber packet_number, 236 QuicPacketNumber packet_number,
225 QuicStreamId stream_id, 237 QuicStreamId stream_id,
226 bool should_include_version, 238 bool should_include_version,
227 bool fin, 239 bool fin,
228 SpdyPriority priority, 240 SpdyPriority priority,
229 const SpdyHeaderBlock& headers, 241 const SpdyHeaderBlock& headers,
230 size_t* spdy_headers_frame_length) { 242 size_t* spdy_headers_frame_length) {
243 return MakeRequestHeadersPacket(packet_number, stream_id,
244 should_include_version, fin, priority,
245 headers, spdy_headers_frame_length, nullptr);
246 }
247
248 // If |offset| is provided, will use the value when creating the packet.
249 // Will also update the value after packet creation.
250 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket(
251 QuicPacketNumber packet_number,
252 QuicStreamId stream_id,
253 bool should_include_version,
254 bool fin,
255 SpdyPriority priority,
256 const SpdyHeaderBlock& headers,
257 size_t* spdy_headers_frame_length,
258 QuicStreamOffset* offset) {
231 InitializeHeader(packet_number, should_include_version); 259 InitializeHeader(packet_number, should_include_version);
232 scoped_ptr<SpdySerializedFrame> spdy_frame; 260 scoped_ptr<SpdySerializedFrame> spdy_frame;
233 if (spdy_request_framer_.protocol_version() == SPDY3) { 261 if (spdy_request_framer_.protocol_version() == SPDY3) {
234 SpdySynStreamIR syn_stream(stream_id); 262 SpdySynStreamIR syn_stream(stream_id);
235 syn_stream.set_header_block(headers); 263 syn_stream.set_header_block(headers);
236 syn_stream.set_fin(fin); 264 syn_stream.set_fin(fin);
237 syn_stream.set_priority(priority); 265 syn_stream.set_priority(priority);
238 spdy_frame.reset(spdy_request_framer_.SerializeSynStream(syn_stream)); 266 spdy_frame.reset(spdy_request_framer_.SerializeSynStream(syn_stream));
239 } else { 267 } else {
240 SpdyHeadersIR headers_frame(stream_id); 268 SpdyHeadersIR headers_frame(stream_id);
241 headers_frame.set_header_block(headers); 269 headers_frame.set_header_block(headers);
242 headers_frame.set_fin(fin); 270 headers_frame.set_fin(fin);
243 headers_frame.set_priority(priority); 271 headers_frame.set_priority(priority);
244 headers_frame.set_has_priority(true); 272 headers_frame.set_has_priority(true);
245 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); 273 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame));
246 } 274 }
247 if (spdy_headers_frame_length) { 275 if (spdy_headers_frame_length) {
248 *spdy_headers_frame_length = spdy_frame->size(); 276 *spdy_headers_frame_length = spdy_frame->size();
249 } 277 }
250 QuicStreamFrame frame( 278 if (offset != nullptr) {
251 kHeadersStreamId, false, 0, 279 QuicStreamFrame frame(
252 base::StringPiece(spdy_frame->data(), spdy_frame->size())); 280 kHeadersStreamId, false, *offset,
253 return MakePacket(header_, QuicFrame(&frame)); 281 base::StringPiece(spdy_frame->data(), spdy_frame->size()));
282 *offset += spdy_frame->size();
283 return MakePacket(header_, QuicFrame(&frame));
284 } else {
285 QuicStreamFrame frame(
286 kHeadersStreamId, false, 0,
287 base::StringPiece(spdy_frame->data(), spdy_frame->size()));
288
289 return MakePacket(header_, QuicFrame(&frame));
290 }
254 } 291 }
255 292
256 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( 293 // Convenience method for calling MakeRequestHeadersPacket with nullptr for
294 // |spdy_headers_frame_length|.
295 scoped_ptr<QuicEncryptedPacket>
296 QuicTestPacketMaker::MakeRequestHeadersPacketWithOffsetTracking(
257 QuicPacketNumber packet_number, 297 QuicPacketNumber packet_number,
258 QuicStreamId stream_id, 298 QuicStreamId stream_id,
259 bool should_include_version, 299 bool should_include_version,
260 bool fin, 300 bool fin,
261 SpdyPriority priority, 301 SpdyPriority priority,
262 const SpdyHeaderBlock& headers) { 302 const SpdyHeaderBlock& headers,
303 QuicStreamOffset* offset) {
263 return MakeRequestHeadersPacket(packet_number, stream_id, 304 return MakeRequestHeadersPacket(packet_number, stream_id,
264 should_include_version, fin, priority, 305 should_include_version, fin, priority,
265 headers, nullptr); 306 headers, nullptr, offset);
266 } 307 }
267 308
309 // If |offset| is provided, will use the value when creating the packet.
310 // Will also update the value after packet creation.
268 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( 311 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket(
269 QuicPacketNumber packet_number, 312 QuicPacketNumber packet_number,
270 QuicStreamId stream_id, 313 QuicStreamId stream_id,
271 bool should_include_version, 314 bool should_include_version,
272 bool fin, 315 bool fin,
273 const SpdyHeaderBlock& headers, 316 const SpdyHeaderBlock& headers,
274 size_t* spdy_headers_frame_length) { 317 size_t* spdy_headers_frame_length,
318 QuicStreamOffset* offset) {
275 InitializeHeader(packet_number, should_include_version); 319 InitializeHeader(packet_number, should_include_version);
276 scoped_ptr<SpdySerializedFrame> spdy_frame; 320 scoped_ptr<SpdySerializedFrame> spdy_frame;
277 if (spdy_request_framer_.protocol_version() == SPDY3) { 321 if (spdy_response_framer_.protocol_version() == SPDY3) {
278 SpdySynReplyIR syn_reply(stream_id); 322 SpdySynReplyIR syn_reply(stream_id);
279 syn_reply.set_header_block(headers); 323 syn_reply.set_header_block(headers);
280 syn_reply.set_fin(fin); 324 syn_reply.set_fin(fin);
281 spdy_frame.reset(spdy_response_framer_.SerializeSynReply(syn_reply)); 325 spdy_frame.reset(spdy_response_framer_.SerializeSynReply(syn_reply));
282 } else { 326 } else {
283 SpdyHeadersIR headers_frame(stream_id); 327 SpdyHeadersIR headers_frame(stream_id);
284 headers_frame.set_header_block(headers); 328 headers_frame.set_header_block(headers);
285 headers_frame.set_fin(fin); 329 headers_frame.set_fin(fin);
286 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); 330 spdy_frame.reset(spdy_response_framer_.SerializeFrame(headers_frame));
287 } 331 }
288 if (spdy_headers_frame_length) { 332 if (spdy_headers_frame_length) {
289 *spdy_headers_frame_length = spdy_frame->size(); 333 *spdy_headers_frame_length = spdy_frame->size();
290 } 334 }
291 QuicStreamFrame frame( 335 if (offset != nullptr) {
292 kHeadersStreamId, false, 0, 336 QuicStreamFrame frame(
293 base::StringPiece(spdy_frame->data(), spdy_frame->size())); 337 kHeadersStreamId, false, *offset,
294 return MakePacket(header_, QuicFrame(&frame)); 338 base::StringPiece(spdy_frame->data(), spdy_frame->size()));
339 *offset += spdy_frame->size();
340 return MakePacket(header_, QuicFrame(&frame));
341 } else {
342 QuicStreamFrame frame(
343 kHeadersStreamId, false, 0,
344 base::StringPiece(spdy_frame->data(), spdy_frame->size()));
345 return MakePacket(header_, QuicFrame(&frame));
346 }
295 } 347 }
296 348
297 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( 349 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket(
298 QuicPacketNumber packet_number, 350 QuicPacketNumber packet_number,
299 QuicStreamId stream_id, 351 QuicStreamId stream_id,
300 bool should_include_version, 352 bool should_include_version,
301 bool fin, 353 bool fin,
302 const SpdyHeaderBlock& headers) { 354 const SpdyHeaderBlock& headers,
303 return MakeResponseHeadersPacket( 355 size_t* spdy_headers_frame_length) {
304 packet_number, stream_id, should_include_version, fin, headers, nullptr); 356 return MakeResponseHeadersPacket(packet_number, stream_id,
357 should_include_version, fin, headers,
358 spdy_headers_frame_length, nullptr);
359 }
360
361 // Convenience method for calling MakeResponseHeadersPacket with nullptr for
362 // |spdy_headers_frame_length|.
363 scoped_ptr<QuicEncryptedPacket>
364 QuicTestPacketMaker::MakeResponseHeadersPacketWithOffsetTracking(
365 QuicPacketNumber packet_number,
366 QuicStreamId stream_id,
367 bool should_include_version,
368 bool fin,
369 const SpdyHeaderBlock& headers,
370 QuicStreamOffset* offset) {
371 return MakeResponseHeadersPacket(packet_number, stream_id,
372 should_include_version, fin, headers,
373 nullptr, offset);
305 } 374 }
306 375
307 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( 376 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders(
308 const std::string& method, 377 const std::string& method,
309 const std::string& scheme, 378 const std::string& scheme,
310 const std::string& path) { 379 const std::string& path) {
311 SpdyHeaderBlock headers; 380 SpdyHeaderBlock headers;
312 headers[":method"] = method; 381 headers[":method"] = method;
313 headers[":authority"] = host_; 382 headers[":authority"] = host_;
314 headers[":scheme"] = scheme; 383 headers[":scheme"] = scheme;
315 headers[":path"] = path; 384 headers[":path"] = path;
316 return headers; 385 return headers;
317 } 386 }
318 387
319 SpdyHeaderBlock QuicTestPacketMaker::GetResponseHeaders( 388 SpdyHeaderBlock QuicTestPacketMaker::GetResponseHeaders(
320 const std::string& status) { 389 const std::string& status) {
321 SpdyHeaderBlock headers; 390 SpdyHeaderBlock headers;
322 headers[":status"] = status; 391 headers[":status"] = status;
323 headers["content-type"] = "text/plain"; 392 headers["content-type"] = "text/plain";
324 return headers; 393 return headers;
325 } 394 }
326 395
396 SpdyHeaderBlock QuicTestPacketMaker::GetResponseHeaders(
397 const std::string& status,
398 const std::string& alt_svc) {
399 SpdyHeaderBlock headers;
400 headers[":status"] = status;
401 headers["Alt-Svc"] = alt_svc;
402 headers["content-type"] = "text/plain";
403 return headers;
404 }
405
327 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket( 406 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket(
328 const QuicPacketHeader& header, 407 const QuicPacketHeader& header,
329 const QuicFrame& frame) { 408 const QuicFrame& frame) {
330 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), 409 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(),
331 Perspective::IS_CLIENT); 410 Perspective::IS_CLIENT);
332 QuicFrames frames; 411 QuicFrames frames;
333 frames.push_back(frame); 412 frames.push_back(frame);
334 scoped_ptr<QuicPacket> packet( 413 scoped_ptr<QuicPacket> packet(
335 BuildUnsizedDataPacket(&framer, header, frames)); 414 BuildUnsizedDataPacket(&framer, header, frames));
336 char buffer[kMaxPacketSize]; 415 char buffer[kMaxPacketSize];
(...skipping 11 matching lines...) Expand all
348 header_.public_header.version_flag = should_include_version; 427 header_.public_header.version_flag = should_include_version;
349 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 428 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
350 header_.packet_number = packet_number; 429 header_.packet_number = packet_number;
351 header_.fec_group = 0; 430 header_.fec_group = 0;
352 header_.entropy_flag = false; 431 header_.entropy_flag = false;
353 header_.fec_flag = false; 432 header_.fec_flag = false;
354 } 433 }
355 434
356 } // namespace test 435 } // namespace test
357 } // namespace net 436 } // namespace net
OLDNEW
« net/http/http_stream_factory_impl.cc ('K') | « net/quic/test_tools/quic_test_packet_maker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698