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 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 28 matching lines...) Expand all Loading... |
39 | 39 |
40 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakePingPacket( | 40 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakePingPacket( |
41 QuicPacketNumber num, | 41 QuicPacketNumber num, |
42 bool include_version) { | 42 bool include_version) { |
43 QuicPacketHeader header; | 43 QuicPacketHeader header; |
44 header.public_header.connection_id = connection_id_; | 44 header.public_header.connection_id = connection_id_; |
45 header.public_header.reset_flag = false; | 45 header.public_header.reset_flag = false; |
46 header.public_header.version_flag = include_version; | 46 header.public_header.version_flag = include_version; |
47 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 47 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
48 header.packet_number = num; | 48 header.packet_number = num; |
49 header.entropy_flag = false; | |
50 | 49 |
51 QuicPingFrame ping; | 50 QuicPingFrame ping; |
52 return std::unique_ptr<QuicReceivedPacket>( | 51 return std::unique_ptr<QuicReceivedPacket>( |
53 MakePacket(header, QuicFrame(ping))); | 52 MakePacket(header, QuicFrame(ping))); |
54 } | 53 } |
55 | 54 |
56 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeRstPacket( | 55 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeRstPacket( |
57 QuicPacketNumber num, | 56 QuicPacketNumber num, |
58 bool include_version, | 57 bool include_version, |
59 QuicStreamId stream_id, | 58 QuicStreamId stream_id, |
60 QuicRstStreamErrorCode error_code) { | 59 QuicRstStreamErrorCode error_code) { |
61 return MakeRstPacket(num, include_version, stream_id, error_code, 0); | 60 return MakeRstPacket(num, include_version, stream_id, error_code, 0); |
62 } | 61 } |
63 | 62 |
64 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeRstPacket( | 63 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeRstPacket( |
65 QuicPacketNumber num, | 64 QuicPacketNumber num, |
66 bool include_version, | 65 bool include_version, |
67 QuicStreamId stream_id, | 66 QuicStreamId stream_id, |
68 QuicRstStreamErrorCode error_code, | 67 QuicRstStreamErrorCode error_code, |
69 size_t bytes_written) { | 68 size_t bytes_written) { |
70 QuicPacketHeader header; | 69 QuicPacketHeader header; |
71 header.public_header.connection_id = connection_id_; | 70 header.public_header.connection_id = connection_id_; |
72 header.public_header.reset_flag = false; | 71 header.public_header.reset_flag = false; |
73 header.public_header.version_flag = include_version; | 72 header.public_header.version_flag = include_version; |
74 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 73 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
75 header.packet_number = num; | 74 header.packet_number = num; |
76 header.entropy_flag = false; | |
77 | 75 |
78 QuicRstStreamFrame rst(stream_id, error_code, bytes_written); | 76 QuicRstStreamFrame rst(stream_id, error_code, bytes_written); |
79 DVLOG(1) << "Adding frame: " << QuicFrame(&rst); | 77 DVLOG(1) << "Adding frame: " << QuicFrame(&rst); |
80 return std::unique_ptr<QuicReceivedPacket>( | 78 return std::unique_ptr<QuicReceivedPacket>( |
81 MakePacket(header, QuicFrame(&rst))); | 79 MakePacket(header, QuicFrame(&rst))); |
82 } | 80 } |
83 | 81 |
84 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndRstPacket( | 82 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndRstPacket( |
85 QuicPacketNumber num, | 83 QuicPacketNumber num, |
86 bool include_version, | 84 bool include_version, |
87 QuicStreamId stream_id, | 85 QuicStreamId stream_id, |
88 QuicRstStreamErrorCode error_code, | 86 QuicRstStreamErrorCode error_code, |
89 QuicPacketNumber largest_received, | 87 QuicPacketNumber largest_received, |
90 QuicPacketNumber ack_least_unacked, | 88 QuicPacketNumber ack_least_unacked, |
91 QuicPacketNumber stop_least_unacked, | 89 QuicPacketNumber stop_least_unacked, |
92 bool send_feedback) { | 90 bool send_feedback) { |
93 QuicPacketHeader header; | 91 QuicPacketHeader header; |
94 header.public_header.connection_id = connection_id_; | 92 header.public_header.connection_id = connection_id_; |
95 header.public_header.reset_flag = false; | 93 header.public_header.reset_flag = false; |
96 header.public_header.version_flag = include_version; | 94 header.public_header.version_flag = include_version; |
97 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 95 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
98 header.packet_number = num; | 96 header.packet_number = num; |
99 header.entropy_flag = false; | |
100 | 97 |
101 QuicAckFrame ack(MakeAckFrame(largest_received)); | 98 QuicAckFrame ack(MakeAckFrame(largest_received)); |
102 ack.ack_delay_time = QuicTime::Delta::Zero(); | 99 ack.ack_delay_time = QuicTime::Delta::Zero(); |
103 for (QuicPacketNumber i = ack_least_unacked; i <= largest_received; ++i) { | 100 for (QuicPacketNumber i = ack_least_unacked; i <= largest_received; ++i) { |
104 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); | 101 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); |
105 } | 102 } |
106 if (largest_received > 0 && version_ > QUIC_VERSION_33) { | 103 if (largest_received > 0) { |
107 ack.missing = false; | |
108 ack.packets.Add(1, largest_received + 1); | 104 ack.packets.Add(1, largest_received + 1); |
109 } | 105 } |
110 QuicFrames frames; | 106 QuicFrames frames; |
111 frames.push_back(QuicFrame(&ack)); | 107 frames.push_back(QuicFrame(&ack)); |
112 DVLOG(1) << "Adding frame: " << frames[0]; | 108 DVLOG(1) << "Adding frame: " << frames[0]; |
113 | 109 |
114 QuicStopWaitingFrame stop_waiting; | 110 QuicStopWaitingFrame stop_waiting; |
115 stop_waiting.least_unacked = stop_least_unacked; | 111 stop_waiting.least_unacked = stop_least_unacked; |
116 frames.push_back(QuicFrame(&stop_waiting)); | 112 frames.push_back(QuicFrame(&stop_waiting)); |
117 DVLOG(1) << "Adding frame: " << frames[1]; | 113 DVLOG(1) << "Adding frame: " << frames[1]; |
(...skipping 22 matching lines...) Expand all Loading... |
140 QuicPacketNumber largest_received, | 136 QuicPacketNumber largest_received, |
141 QuicPacketNumber least_unacked, | 137 QuicPacketNumber least_unacked, |
142 QuicErrorCode quic_error, | 138 QuicErrorCode quic_error, |
143 const std::string& quic_error_details) { | 139 const std::string& quic_error_details) { |
144 QuicPacketHeader header; | 140 QuicPacketHeader header; |
145 header.public_header.connection_id = connection_id_; | 141 header.public_header.connection_id = connection_id_; |
146 header.public_header.reset_flag = false; | 142 header.public_header.reset_flag = false; |
147 header.public_header.version_flag = include_version; | 143 header.public_header.version_flag = include_version; |
148 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 144 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
149 header.packet_number = num; | 145 header.packet_number = num; |
150 header.entropy_flag = false; | |
151 | 146 |
152 QuicAckFrame ack(MakeAckFrame(largest_received)); | 147 QuicAckFrame ack(MakeAckFrame(largest_received)); |
153 ack.ack_delay_time = ack_delay_time; | 148 ack.ack_delay_time = ack_delay_time; |
154 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { | 149 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { |
155 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); | 150 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); |
156 } | 151 } |
157 if (largest_received > 0 && version_ > QUIC_VERSION_33) { | 152 if (largest_received > 0) { |
158 ack.missing = false; | |
159 ack.packets.Add(1, largest_received + 1); | 153 ack.packets.Add(1, largest_received + 1); |
160 } | 154 } |
161 QuicFrames frames; | 155 QuicFrames frames; |
162 frames.push_back(QuicFrame(&ack)); | 156 frames.push_back(QuicFrame(&ack)); |
163 DVLOG(1) << "Adding frame: " << frames[0]; | 157 DVLOG(1) << "Adding frame: " << frames[0]; |
164 | 158 |
165 QuicStopWaitingFrame stop_waiting; | 159 QuicStopWaitingFrame stop_waiting; |
166 stop_waiting.least_unacked = least_unacked; | 160 stop_waiting.least_unacked = least_unacked; |
167 frames.push_back(QuicFrame(&stop_waiting)); | 161 frames.push_back(QuicFrame(&stop_waiting)); |
168 DVLOG(1) << "Adding frame: " << frames[1]; | 162 DVLOG(1) << "Adding frame: " << frames[1]; |
(...skipping 18 matching lines...) Expand all Loading... |
187 } | 181 } |
188 | 182 |
189 std::unique_ptr<QuicReceivedPacket> | 183 std::unique_ptr<QuicReceivedPacket> |
190 QuicTestPacketMaker::MakeConnectionClosePacket(QuicPacketNumber num) { | 184 QuicTestPacketMaker::MakeConnectionClosePacket(QuicPacketNumber num) { |
191 QuicPacketHeader header; | 185 QuicPacketHeader header; |
192 header.public_header.connection_id = connection_id_; | 186 header.public_header.connection_id = connection_id_; |
193 header.public_header.reset_flag = false; | 187 header.public_header.reset_flag = false; |
194 header.public_header.version_flag = false; | 188 header.public_header.version_flag = false; |
195 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 189 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
196 header.packet_number = num; | 190 header.packet_number = num; |
197 header.entropy_flag = false; | |
198 | 191 |
199 QuicConnectionCloseFrame close; | 192 QuicConnectionCloseFrame close; |
200 close.error_code = QUIC_CRYPTO_VERSION_NOT_SUPPORTED; | 193 close.error_code = QUIC_CRYPTO_VERSION_NOT_SUPPORTED; |
201 close.error_details = "Time to panic!"; | 194 close.error_details = "Time to panic!"; |
202 return std::unique_ptr<QuicReceivedPacket>( | 195 return std::unique_ptr<QuicReceivedPacket>( |
203 MakePacket(header, QuicFrame(&close))); | 196 MakePacket(header, QuicFrame(&close))); |
204 } | 197 } |
205 | 198 |
206 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeGoAwayPacket( | 199 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeGoAwayPacket( |
207 QuicPacketNumber num, | 200 QuicPacketNumber num, |
208 QuicErrorCode error_code, | 201 QuicErrorCode error_code, |
209 std::string reason_phrase) { | 202 std::string reason_phrase) { |
210 QuicPacketHeader header; | 203 QuicPacketHeader header; |
211 header.public_header.connection_id = connection_id_; | 204 header.public_header.connection_id = connection_id_; |
212 header.public_header.reset_flag = false; | 205 header.public_header.reset_flag = false; |
213 header.public_header.version_flag = false; | 206 header.public_header.version_flag = false; |
214 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 207 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
215 header.packet_number = num; | 208 header.packet_number = num; |
216 header.entropy_flag = false; | |
217 | 209 |
218 QuicGoAwayFrame goaway; | 210 QuicGoAwayFrame goaway; |
219 goaway.error_code = error_code; | 211 goaway.error_code = error_code; |
220 goaway.last_good_stream_id = 0; | 212 goaway.last_good_stream_id = 0; |
221 goaway.reason_phrase = reason_phrase; | 213 goaway.reason_phrase = reason_phrase; |
222 return std::unique_ptr<QuicReceivedPacket>( | 214 return std::unique_ptr<QuicReceivedPacket>( |
223 MakePacket(header, QuicFrame(&goaway))); | 215 MakePacket(header, QuicFrame(&goaway))); |
224 } | 216 } |
225 | 217 |
226 // Sets both least_unacked fields in stop waiting frame and ack frame | 218 // Sets both least_unacked fields in stop waiting frame and ack frame |
(...skipping 12 matching lines...) Expand all Loading... |
239 QuicPacketNumber largest_received, | 231 QuicPacketNumber largest_received, |
240 QuicPacketNumber ack_least_unacked, | 232 QuicPacketNumber ack_least_unacked, |
241 QuicPacketNumber stop_least_unacked, | 233 QuicPacketNumber stop_least_unacked, |
242 bool send_feedback) { | 234 bool send_feedback) { |
243 QuicPacketHeader header; | 235 QuicPacketHeader header; |
244 header.public_header.connection_id = connection_id_; | 236 header.public_header.connection_id = connection_id_; |
245 header.public_header.reset_flag = false; | 237 header.public_header.reset_flag = false; |
246 header.public_header.version_flag = false; | 238 header.public_header.version_flag = false; |
247 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 239 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
248 header.packet_number = packet_number; | 240 header.packet_number = packet_number; |
249 header.entropy_flag = false; | |
250 | 241 |
251 QuicAckFrame ack(MakeAckFrame(largest_received)); | 242 QuicAckFrame ack(MakeAckFrame(largest_received)); |
252 ack.ack_delay_time = QuicTime::Delta::Zero(); | 243 ack.ack_delay_time = QuicTime::Delta::Zero(); |
253 for (QuicPacketNumber i = ack_least_unacked; i <= largest_received; ++i) { | 244 for (QuicPacketNumber i = ack_least_unacked; i <= largest_received; ++i) { |
254 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); | 245 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); |
255 } | 246 } |
256 if (largest_received > 0 && version_ > QUIC_VERSION_33) { | 247 if (largest_received > 0) { |
257 ack.missing = false; | |
258 ack.packets.Add(1, largest_received + 1); | 248 ack.packets.Add(1, largest_received + 1); |
259 } | 249 } |
260 | 250 |
261 QuicFramer framer(SupportedVersions(version_), clock_->Now(), perspective_); | 251 QuicFramer framer(SupportedVersions(version_), clock_->Now(), perspective_); |
262 QuicFrames frames; | 252 QuicFrames frames; |
263 QuicFrame ack_frame(&ack); | 253 QuicFrame ack_frame(&ack); |
264 DVLOG(1) << "Adding frame: " << ack_frame; | 254 DVLOG(1) << "Adding frame: " << ack_frame; |
265 frames.push_back(ack_frame); | 255 frames.push_back(ack_frame); |
266 | 256 |
267 QuicStopWaitingFrame stop_waiting; | 257 QuicStopWaitingFrame stop_waiting; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 bool fin, | 319 bool fin, |
330 QuicStreamOffset offset, | 320 QuicStreamOffset offset, |
331 base::StringPiece data) { | 321 base::StringPiece data) { |
332 InitializeHeader(packet_number, include_version); | 322 InitializeHeader(packet_number, include_version); |
333 | 323 |
334 QuicAckFrame ack(MakeAckFrame(largest_received)); | 324 QuicAckFrame ack(MakeAckFrame(largest_received)); |
335 ack.ack_delay_time = QuicTime::Delta::Zero(); | 325 ack.ack_delay_time = QuicTime::Delta::Zero(); |
336 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { | 326 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { |
337 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); | 327 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); |
338 } | 328 } |
339 if (largest_received > 0 && version_ > QUIC_VERSION_33) { | 329 if (largest_received > 0) { |
340 ack.missing = false; | |
341 ack.packets.Add(1, largest_received + 1); | 330 ack.packets.Add(1, largest_received + 1); |
342 } | 331 } |
343 QuicFrames frames; | 332 QuicFrames frames; |
344 frames.push_back(QuicFrame(&ack)); | 333 frames.push_back(QuicFrame(&ack)); |
345 | 334 |
346 QuicStopWaitingFrame stop_waiting; | 335 QuicStopWaitingFrame stop_waiting; |
347 stop_waiting.least_unacked = least_unacked; | 336 stop_waiting.least_unacked = least_unacked; |
348 frames.push_back(QuicFrame(&stop_waiting)); | 337 frames.push_back(QuicFrame(&stop_waiting)); |
349 | 338 |
350 QuicStreamFrame stream_frame(stream_id, fin, offset, data); | 339 QuicStreamFrame stream_frame(stream_id, fin, offset, data); |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 return std::unique_ptr<QuicReceivedPacket>(encrypted.Clone()); | 639 return std::unique_ptr<QuicReceivedPacket>(encrypted.Clone()); |
651 } | 640 } |
652 | 641 |
653 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, | 642 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, |
654 bool should_include_version) { | 643 bool should_include_version) { |
655 header_.public_header.connection_id = connection_id_; | 644 header_.public_header.connection_id = connection_id_; |
656 header_.public_header.reset_flag = false; | 645 header_.public_header.reset_flag = false; |
657 header_.public_header.version_flag = should_include_version; | 646 header_.public_header.version_flag = should_include_version; |
658 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 647 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
659 header_.packet_number = packet_number; | 648 header_.packet_number = packet_number; |
660 header_.entropy_flag = false; | |
661 } | 649 } |
662 | 650 |
663 } // namespace test | 651 } // namespace test |
664 } // namespace net | 652 } // namespace net |
OLD | NEW |