OLD | NEW |
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 15 matching lines...) Expand all Loading... |
26 host_(host), | 26 host_(host), |
27 spdy_request_framer_(HTTP2), | 27 spdy_request_framer_(HTTP2), |
28 spdy_response_framer_(HTTP2) {} | 28 spdy_response_framer_(HTTP2) {} |
29 | 29 |
30 QuicTestPacketMaker::~QuicTestPacketMaker() {} | 30 QuicTestPacketMaker::~QuicTestPacketMaker() {} |
31 | 31 |
32 void QuicTestPacketMaker::set_hostname(const std::string& host) { | 32 void QuicTestPacketMaker::set_hostname(const std::string& host) { |
33 host_.assign(host); | 33 host_.assign(host); |
34 } | 34 } |
35 | 35 |
| 36 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePingPacket( |
| 37 QuicPacketNumber num, |
| 38 bool include_version) { |
| 39 QuicPacketHeader header; |
| 40 header.public_header.connection_id = connection_id_; |
| 41 header.public_header.reset_flag = false; |
| 42 header.public_header.version_flag = include_version; |
| 43 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
| 44 header.packet_number = num; |
| 45 header.entropy_flag = false; |
| 46 header.fec_flag = false; |
| 47 header.fec_group = 0; |
| 48 |
| 49 QuicPingFrame ping; |
| 50 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(ping))); |
| 51 } |
| 52 |
36 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( | 53 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( |
37 QuicPacketNumber num, | 54 QuicPacketNumber num, |
38 bool include_version, | 55 bool include_version, |
39 QuicStreamId stream_id, | 56 QuicStreamId stream_id, |
40 QuicRstStreamErrorCode error_code) { | 57 QuicRstStreamErrorCode error_code) { |
41 QuicPacketHeader header; | 58 QuicPacketHeader header; |
42 header.public_header.connection_id = connection_id_; | 59 header.public_header.connection_id = connection_id_; |
43 header.public_header.reset_flag = false; | 60 header.public_header.reset_flag = false; |
44 header.public_header.version_flag = include_version; | 61 header.public_header.version_flag = include_version; |
45 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 62 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 QuicStreamId stream_id, | 242 QuicStreamId stream_id, |
226 bool should_include_version, | 243 bool should_include_version, |
227 bool fin, | 244 bool fin, |
228 QuicStreamOffset offset, | 245 QuicStreamOffset offset, |
229 base::StringPiece data) { | 246 base::StringPiece data) { |
230 InitializeHeader(packet_number, should_include_version); | 247 InitializeHeader(packet_number, should_include_version); |
231 QuicStreamFrame frame(stream_id, fin, offset, data); | 248 QuicStreamFrame frame(stream_id, fin, offset, data); |
232 return MakePacket(header_, QuicFrame(&frame)); | 249 return MakePacket(header_, QuicFrame(&frame)); |
233 } | 250 } |
234 | 251 |
| 252 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( |
| 253 QuicPacketNumber packet_number, |
| 254 bool include_version, |
| 255 QuicStreamId stream_id, |
| 256 QuicPacketNumber largest_received, |
| 257 QuicPacketNumber least_unacked, |
| 258 bool fin, |
| 259 QuicStreamOffset offset, |
| 260 base::StringPiece data) { |
| 261 InitializeHeader(packet_number, include_version); |
| 262 |
| 263 QuicAckFrame ack(MakeAckFrame(largest_received)); |
| 264 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); |
| 265 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { |
| 266 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); |
| 267 } |
| 268 QuicFrames frames; |
| 269 frames.push_back(QuicFrame(&ack)); |
| 270 |
| 271 QuicStopWaitingFrame stop_waiting; |
| 272 stop_waiting.least_unacked = least_unacked; |
| 273 frames.push_back(QuicFrame(&stop_waiting)); |
| 274 |
| 275 QuicStreamFrame stream_frame(stream_id, fin, offset, data); |
| 276 frames.push_back(QuicFrame(&stream_frame)); |
| 277 |
| 278 return MakeMultipleFramesPacket(header_, frames); |
| 279 } |
| 280 |
235 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( | 281 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( |
236 QuicPacketNumber packet_number, | 282 QuicPacketNumber packet_number, |
237 QuicStreamId stream_id, | 283 QuicStreamId stream_id, |
238 bool should_include_version, | 284 bool should_include_version, |
239 bool fin, | 285 bool fin, |
240 SpdyPriority priority, | 286 SpdyPriority priority, |
241 const SpdyHeaderBlock& headers, | 287 const SpdyHeaderBlock& headers, |
242 size_t* spdy_headers_frame_length) { | 288 size_t* spdy_headers_frame_length) { |
243 return MakeRequestHeadersPacket(packet_number, stream_id, | 289 return MakeRequestHeadersPacket(packet_number, stream_id, |
244 should_include_version, fin, priority, | 290 should_include_version, fin, priority, |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 SpdyHeaderBlock headers; | 445 SpdyHeaderBlock headers; |
400 headers[":status"] = status; | 446 headers[":status"] = status; |
401 headers["Alt-Svc"] = alt_svc; | 447 headers["Alt-Svc"] = alt_svc; |
402 headers["content-type"] = "text/plain"; | 448 headers["content-type"] = "text/plain"; |
403 return headers; | 449 return headers; |
404 } | 450 } |
405 | 451 |
406 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket( | 452 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket( |
407 const QuicPacketHeader& header, | 453 const QuicPacketHeader& header, |
408 const QuicFrame& frame) { | 454 const QuicFrame& frame) { |
| 455 QuicFrames frames; |
| 456 frames.push_back(frame); |
| 457 return MakeMultipleFramesPacket(header, frames); |
| 458 } |
| 459 |
| 460 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeMultipleFramesPacket( |
| 461 const QuicPacketHeader& header, |
| 462 const QuicFrames& frames) { |
409 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), | 463 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), |
410 Perspective::IS_CLIENT); | 464 Perspective::IS_CLIENT); |
411 QuicFrames frames; | |
412 frames.push_back(frame); | |
413 scoped_ptr<QuicPacket> packet( | 465 scoped_ptr<QuicPacket> packet( |
414 BuildUnsizedDataPacket(&framer, header, frames)); | 466 BuildUnsizedDataPacket(&framer, header, frames)); |
415 char buffer[kMaxPacketSize]; | 467 char buffer[kMaxPacketSize]; |
416 size_t encrypted_size = framer.EncryptPayload( | 468 size_t encrypted_size = framer.EncryptPayload( |
417 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize); | 469 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize); |
418 EXPECT_NE(0u, encrypted_size); | 470 EXPECT_NE(0u, encrypted_size); |
419 QuicEncryptedPacket encrypted(buffer, encrypted_size, false); | 471 QuicEncryptedPacket encrypted(buffer, encrypted_size, false); |
420 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone()); | 472 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone()); |
421 } | 473 } |
422 | 474 |
423 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, | 475 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, |
424 bool should_include_version) { | 476 bool should_include_version) { |
425 header_.public_header.connection_id = connection_id_; | 477 header_.public_header.connection_id = connection_id_; |
426 header_.public_header.reset_flag = false; | 478 header_.public_header.reset_flag = false; |
427 header_.public_header.version_flag = should_include_version; | 479 header_.public_header.version_flag = should_include_version; |
428 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 480 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
429 header_.packet_number = packet_number; | 481 header_.packet_number = packet_number; |
430 header_.fec_group = 0; | 482 header_.fec_group = 0; |
431 header_.entropy_flag = false; | 483 header_.entropy_flag = false; |
432 header_.fec_flag = false; | 484 header_.fec_flag = false; |
433 } | 485 } |
434 | 486 |
435 } // namespace test | 487 } // namespace test |
436 } // namespace net | 488 } // namespace net |
OLD | NEW |