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 |