| 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> |
| 8 |
| 7 #include "net/quic/quic_framer.h" | 9 #include "net/quic/quic_framer.h" |
| 8 #include "net/quic/quic_http_utils.h" | 10 #include "net/quic/quic_http_utils.h" |
| 9 #include "net/quic/quic_utils.h" | 11 #include "net/quic/quic_utils.h" |
| 10 #include "net/quic/test_tools/quic_test_utils.h" | 12 #include "net/quic/test_tools/quic_test_utils.h" |
| 11 | 13 |
| 14 using std::make_pair; |
| 15 |
| 12 namespace net { | 16 namespace net { |
| 13 namespace test { | 17 namespace test { |
| 14 | 18 |
| 15 QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version, | 19 QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version, |
| 16 QuicConnectionId connection_id) | 20 QuicConnectionId connection_id, |
| 21 MockClock* clock) |
| 17 : version_(version), | 22 : version_(version), |
| 18 connection_id_(connection_id), | 23 connection_id_(connection_id), |
| 24 clock_(clock), |
| 19 spdy_request_framer_(SPDY3), | 25 spdy_request_framer_(SPDY3), |
| 20 spdy_response_framer_(SPDY3) { | 26 spdy_response_framer_(SPDY3) { |
| 21 } | 27 } |
| 22 | 28 |
| 23 QuicTestPacketMaker::~QuicTestPacketMaker() { | 29 QuicTestPacketMaker::~QuicTestPacketMaker() { |
| 24 } | 30 } |
| 25 | 31 |
| 26 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( | 32 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( |
| 27 QuicPacketSequenceNumber num, | 33 QuicPacketSequenceNumber num, |
| 28 bool include_version, | 34 bool include_version, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 56 header.public_header.reset_flag = false; | 62 header.public_header.reset_flag = false; |
| 57 header.public_header.version_flag = include_version; | 63 header.public_header.version_flag = include_version; |
| 58 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 64 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
| 59 header.packet_sequence_number = num; | 65 header.packet_sequence_number = num; |
| 60 header.entropy_flag = false; | 66 header.entropy_flag = false; |
| 61 header.fec_flag = false; | 67 header.fec_flag = false; |
| 62 header.fec_group = 0; | 68 header.fec_group = 0; |
| 63 | 69 |
| 64 QuicAckFrame ack(MakeAckFrame(largest_received)); | 70 QuicAckFrame ack(MakeAckFrame(largest_received)); |
| 65 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); | 71 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); |
| 72 if (version_ > QUIC_VERSION_22) { |
| 73 for (QuicPacketSequenceNumber i = least_unacked; i <= largest_received; |
| 74 ++i) { |
| 75 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); |
| 76 } |
| 77 } |
| 66 QuicFrames frames; | 78 QuicFrames frames; |
| 67 frames.push_back(QuicFrame(&ack)); | 79 frames.push_back(QuicFrame(&ack)); |
| 68 QuicCongestionFeedbackFrame feedback; | 80 QuicCongestionFeedbackFrame feedback; |
| 69 if (send_feedback) { | 81 if (send_feedback && version_ <= QUIC_VERSION_22) { |
| 70 feedback.type = kTCP; | 82 feedback.type = kTCP; |
| 71 feedback.tcp.receive_window = 256000; | 83 feedback.tcp.receive_window = 256000; |
| 72 | 84 |
| 73 frames.push_back(QuicFrame(&feedback)); | 85 frames.push_back(QuicFrame(&feedback)); |
| 74 } | 86 } |
| 75 | 87 |
| 76 QuicStopWaitingFrame stop_waiting; | 88 QuicStopWaitingFrame stop_waiting; |
| 77 stop_waiting.least_unacked = least_unacked; | 89 stop_waiting.least_unacked = least_unacked; |
| 78 frames.push_back(QuicFrame(&stop_waiting)); | 90 frames.push_back(QuicFrame(&stop_waiting)); |
| 79 | 91 |
| 80 QuicRstStreamFrame rst(stream_id, error_code, 0); | 92 QuicRstStreamFrame rst(stream_id, error_code, 0); |
| 81 frames.push_back(QuicFrame(&rst)); | 93 frames.push_back(QuicFrame(&rst)); |
| 82 | 94 |
| 83 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), false); | 95 QuicFramer framer(SupportedVersions(version_), clock_->Now(), false); |
| 84 scoped_ptr<QuicPacket> packet( | 96 scoped_ptr<QuicPacket> packet( |
| 85 BuildUnsizedDataPacket(&framer, header, frames).packet); | 97 BuildUnsizedDataPacket(&framer, header, frames).packet); |
| 86 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( | 98 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( |
| 87 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); | 99 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); |
| 88 } | 100 } |
| 89 | 101 |
| 90 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeConnectionClosePacket( | 102 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeConnectionClosePacket( |
| 91 QuicPacketSequenceNumber num) { | 103 QuicPacketSequenceNumber num) { |
| 92 QuicPacketHeader header; | 104 QuicPacketHeader header; |
| 93 header.public_header.connection_id = connection_id_; | 105 header.public_header.connection_id = connection_id_; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 115 header.public_header.reset_flag = false; | 127 header.public_header.reset_flag = false; |
| 116 header.public_header.version_flag = false; | 128 header.public_header.version_flag = false; |
| 117 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 129 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
| 118 header.packet_sequence_number = sequence_number; | 130 header.packet_sequence_number = sequence_number; |
| 119 header.entropy_flag = false; | 131 header.entropy_flag = false; |
| 120 header.fec_flag = false; | 132 header.fec_flag = false; |
| 121 header.fec_group = 0; | 133 header.fec_group = 0; |
| 122 | 134 |
| 123 QuicAckFrame ack(MakeAckFrame(largest_received)); | 135 QuicAckFrame ack(MakeAckFrame(largest_received)); |
| 124 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); | 136 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); |
| 137 if (version_ > QUIC_VERSION_22) { |
| 138 for (QuicPacketSequenceNumber i = least_unacked; i <= largest_received; |
| 139 ++i) { |
| 140 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); |
| 141 } |
| 142 } |
| 125 | 143 |
| 126 QuicCongestionFeedbackFrame feedback; | 144 QuicFramer framer(SupportedVersions(version_), clock_->Now(), false); |
| 127 feedback.type = kTCP; | |
| 128 feedback.tcp.receive_window = 256000; | |
| 129 | |
| 130 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), false); | |
| 131 QuicFrames frames; | 145 QuicFrames frames; |
| 132 frames.push_back(QuicFrame(&ack)); | 146 frames.push_back(QuicFrame(&ack)); |
| 133 if (send_feedback) { | 147 QuicCongestionFeedbackFrame feedback; |
| 148 if (send_feedback && version_ <= QUIC_VERSION_22) { |
| 149 feedback.type = kTCP; |
| 150 feedback.tcp.receive_window = 256000; |
| 134 frames.push_back(QuicFrame(&feedback)); | 151 frames.push_back(QuicFrame(&feedback)); |
| 135 } | 152 } |
| 136 | 153 |
| 137 QuicStopWaitingFrame stop_waiting; | 154 QuicStopWaitingFrame stop_waiting; |
| 138 stop_waiting.least_unacked = least_unacked; | 155 stop_waiting.least_unacked = least_unacked; |
| 139 frames.push_back(QuicFrame(&stop_waiting)); | 156 frames.push_back(QuicFrame(&stop_waiting)); |
| 140 | 157 |
| 141 scoped_ptr<QuicPacket> packet( | 158 scoped_ptr<QuicPacket> packet( |
| 142 BuildUnsizedDataPacket(&framer, header, frames).packet); | 159 BuildUnsizedDataPacket(&framer, header, frames).packet); |
| 143 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( | 160 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 header_.public_header.version_flag = should_include_version; | 253 header_.public_header.version_flag = should_include_version; |
| 237 header_.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 254 header_.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
| 238 header_.packet_sequence_number = sequence_number; | 255 header_.packet_sequence_number = sequence_number; |
| 239 header_.fec_group = 0; | 256 header_.fec_group = 0; |
| 240 header_.entropy_flag = false; | 257 header_.entropy_flag = false; |
| 241 header_.fec_flag = false; | 258 header_.fec_flag = false; |
| 242 } | 259 } |
| 243 | 260 |
| 244 } // namespace test | 261 } // namespace test |
| 245 } // namespace net | 262 } // namespace net |
| OLD | NEW |