| 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 |