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 "net/quic/quic_framer.h" | 7 #include "net/quic/quic_framer.h" |
8 #include "net/quic/quic_http_utils.h" | 8 #include "net/quic/quic_http_utils.h" |
9 #include "net/quic/quic_utils.h" | 9 #include "net/quic/quic_utils.h" |
10 #include "net/quic/test_tools/quic_test_utils.h" | 10 #include "net/quic/test_tools/quic_test_utils.h" |
11 | 11 |
12 namespace net { | 12 namespace net { |
13 namespace test { | 13 namespace test { |
14 | 14 |
15 QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version, QuicGuid guid) | 15 QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version, |
| 16 QuicConnectionId connection_id) |
16 : version_(version), | 17 : version_(version), |
17 guid_(guid), | 18 connection_id_(connection_id), |
18 spdy_request_framer_(SPDY3), | 19 spdy_request_framer_(SPDY3), |
19 spdy_response_framer_(SPDY3) { | 20 spdy_response_framer_(SPDY3) { |
20 } | 21 } |
21 | 22 |
22 QuicTestPacketMaker::~QuicTestPacketMaker() { | 23 QuicTestPacketMaker::~QuicTestPacketMaker() { |
23 } | 24 } |
24 | 25 |
25 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( | 26 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( |
26 QuicPacketSequenceNumber num, | 27 QuicPacketSequenceNumber num, |
27 bool include_version, | 28 bool include_version, |
28 QuicStreamId stream_id, | 29 QuicStreamId stream_id, |
29 QuicRstStreamErrorCode error_code) { | 30 QuicRstStreamErrorCode error_code) { |
30 QuicPacketHeader header; | 31 QuicPacketHeader header; |
31 header.public_header.guid = guid_; | 32 header.public_header.connection_id = connection_id_; |
32 header.public_header.reset_flag = false; | 33 header.public_header.reset_flag = false; |
33 header.public_header.version_flag = include_version; | 34 header.public_header.version_flag = include_version; |
34 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 35 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
35 header.packet_sequence_number = num; | 36 header.packet_sequence_number = num; |
36 header.entropy_flag = false; | 37 header.entropy_flag = false; |
37 header.fec_flag = false; | 38 header.fec_flag = false; |
38 header.fec_group = 0; | 39 header.fec_group = 0; |
39 | 40 |
40 QuicRstStreamFrame rst(stream_id, error_code, 0); | 41 QuicRstStreamFrame rst(stream_id, error_code, 0); |
41 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(&rst))); | 42 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(&rst))); |
42 } | 43 } |
43 | 44 |
44 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckAndRstPacket( | 45 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckAndRstPacket( |
45 QuicPacketSequenceNumber num, | 46 QuicPacketSequenceNumber num, |
46 bool include_version, | 47 bool include_version, |
47 QuicStreamId stream_id, | 48 QuicStreamId stream_id, |
48 QuicRstStreamErrorCode error_code, | 49 QuicRstStreamErrorCode error_code, |
49 QuicPacketSequenceNumber largest_received, | 50 QuicPacketSequenceNumber largest_received, |
50 QuicPacketSequenceNumber least_unacked, | 51 QuicPacketSequenceNumber least_unacked, |
51 bool send_feedback) { | 52 bool send_feedback) { |
52 | 53 |
53 QuicPacketHeader header; | 54 QuicPacketHeader header; |
54 header.public_header.guid = guid_; | 55 header.public_header.connection_id = connection_id_; |
55 header.public_header.reset_flag = false; | 56 header.public_header.reset_flag = false; |
56 header.public_header.version_flag = include_version; | 57 header.public_header.version_flag = include_version; |
57 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 58 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
58 header.packet_sequence_number = num; | 59 header.packet_sequence_number = num; |
59 header.entropy_flag = false; | 60 header.entropy_flag = false; |
60 header.fec_flag = false; | 61 header.fec_flag = false; |
61 header.fec_group = 0; | 62 header.fec_group = 0; |
62 | 63 |
63 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked); | 64 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked); |
64 QuicFrames frames; | 65 QuicFrames frames; |
(...skipping 18 matching lines...) Expand all Loading... |
83 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), false); | 84 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), false); |
84 scoped_ptr<QuicPacket> packet( | 85 scoped_ptr<QuicPacket> packet( |
85 framer.BuildUnsizedDataPacket(header, frames).packet); | 86 framer.BuildUnsizedDataPacket(header, frames).packet); |
86 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( | 87 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( |
87 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); | 88 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); |
88 } | 89 } |
89 | 90 |
90 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeConnectionClosePacket( | 91 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeConnectionClosePacket( |
91 QuicPacketSequenceNumber num) { | 92 QuicPacketSequenceNumber num) { |
92 QuicPacketHeader header; | 93 QuicPacketHeader header; |
93 header.public_header.guid = guid_; | 94 header.public_header.connection_id = connection_id_; |
94 header.public_header.reset_flag = false; | 95 header.public_header.reset_flag = false; |
95 header.public_header.version_flag = false; | 96 header.public_header.version_flag = false; |
96 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 97 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
97 header.packet_sequence_number = num; | 98 header.packet_sequence_number = num; |
98 header.entropy_flag = false; | 99 header.entropy_flag = false; |
99 header.fec_flag = false; | 100 header.fec_flag = false; |
100 header.fec_group = 0; | 101 header.fec_group = 0; |
101 | 102 |
102 QuicConnectionCloseFrame close; | 103 QuicConnectionCloseFrame close; |
103 close.error_code = QUIC_CRYPTO_VERSION_NOT_SUPPORTED; | 104 close.error_code = QUIC_CRYPTO_VERSION_NOT_SUPPORTED; |
104 close.error_details = "Time to panic!"; | 105 close.error_details = "Time to panic!"; |
105 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(&close))); | 106 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(&close))); |
106 } | 107 } |
107 | 108 |
108 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket( | 109 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket( |
109 QuicPacketSequenceNumber sequence_number, | 110 QuicPacketSequenceNumber sequence_number, |
110 QuicPacketSequenceNumber largest_received, | 111 QuicPacketSequenceNumber largest_received, |
111 QuicPacketSequenceNumber least_unacked, | 112 QuicPacketSequenceNumber least_unacked, |
112 bool send_feedback) { | 113 bool send_feedback) { |
113 QuicPacketHeader header; | 114 QuicPacketHeader header; |
114 header.public_header.guid = guid_; | 115 header.public_header.connection_id = connection_id_; |
115 header.public_header.reset_flag = false; | 116 header.public_header.reset_flag = false; |
116 header.public_header.version_flag = false; | 117 header.public_header.version_flag = false; |
117 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 118 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
118 header.packet_sequence_number = sequence_number; | 119 header.packet_sequence_number = sequence_number; |
119 header.entropy_flag = false; | 120 header.entropy_flag = false; |
120 header.fec_flag = false; | 121 header.fec_flag = false; |
121 header.fec_group = 0; | 122 header.fec_group = 0; |
122 | 123 |
123 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked); | 124 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked); |
124 | 125 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 frames.push_back(frame); | 242 frames.push_back(frame); |
242 scoped_ptr<QuicPacket> packet( | 243 scoped_ptr<QuicPacket> packet( |
243 framer.BuildUnsizedDataPacket(header, frames).packet); | 244 framer.BuildUnsizedDataPacket(header, frames).packet); |
244 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( | 245 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( |
245 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); | 246 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); |
246 } | 247 } |
247 | 248 |
248 void QuicTestPacketMaker::InitializeHeader( | 249 void QuicTestPacketMaker::InitializeHeader( |
249 QuicPacketSequenceNumber sequence_number, | 250 QuicPacketSequenceNumber sequence_number, |
250 bool should_include_version) { | 251 bool should_include_version) { |
251 header_.public_header.guid = guid_; | 252 header_.public_header.connection_id = connection_id_; |
252 header_.public_header.reset_flag = false; | 253 header_.public_header.reset_flag = false; |
253 header_.public_header.version_flag = should_include_version; | 254 header_.public_header.version_flag = should_include_version; |
254 header_.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 255 header_.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
255 header_.packet_sequence_number = sequence_number; | 256 header_.packet_sequence_number = sequence_number; |
256 header_.fec_group = 0; | 257 header_.fec_group = 0; |
257 header_.entropy_flag = false; | 258 header_.entropy_flag = false; |
258 header_.fec_flag = false; | 259 header_.fec_flag = false; |
259 } | 260 } |
260 | 261 |
261 std::string QuicTestPacketMaker::SerializeHeaderBlock( | 262 std::string QuicTestPacketMaker::SerializeHeaderBlock( |
262 const SpdyHeaderBlock& headers) { | 263 const SpdyHeaderBlock& headers) { |
263 QuicSpdyCompressor compressor; | 264 QuicSpdyCompressor compressor; |
264 return compressor.CompressHeadersWithPriority( | 265 return compressor.CompressHeadersWithPriority( |
265 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY), headers); | 266 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY), headers); |
266 } | 267 } |
267 | 268 |
268 } // namespace test | 269 } // namespace test |
269 } // namespace net | 270 } // namespace net |
OLD | NEW |