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 | 8 |
9 #include "net/quic/quic_framer.h" | 9 #include "net/quic/quic_framer.h" |
10 #include "net/quic/quic_http_utils.h" | 10 #include "net/quic/quic_http_utils.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 host_(host), | 26 host_(host), |
27 spdy_request_framer_(HTTP2), | 27 spdy_request_framer_(HTTP2), |
28 spdy_response_framer_(HTTP2) {} | 28 spdy_response_framer_(HTTP2) {} |
29 | 29 |
30 QuicTestPacketMaker::~QuicTestPacketMaker() {} | 30 QuicTestPacketMaker::~QuicTestPacketMaker() {} |
31 | 31 |
32 void QuicTestPacketMaker::set_hostname(const std::string& host) { | 32 void QuicTestPacketMaker::set_hostname(const std::string& host) { |
33 host_.assign(host); | 33 host_.assign(host); |
34 } | 34 } |
35 | 35 |
| 36 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePingPacket( |
| 37 QuicPacketNumber num, |
| 38 bool include_version) { |
| 39 QuicPacketHeader header; |
| 40 header.public_header.connection_id = connection_id_; |
| 41 header.public_header.reset_flag = false; |
| 42 header.public_header.version_flag = include_version; |
| 43 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
| 44 header.packet_number = num; |
| 45 header.entropy_flag = false; |
| 46 header.fec_flag = false; |
| 47 header.fec_group = 0; |
| 48 |
| 49 QuicPingFrame ping; |
| 50 return scoped_ptr<QuicEncryptedPacket>(MakePacket(header, QuicFrame(ping))); |
| 51 } |
| 52 |
36 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( | 53 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( |
37 QuicPacketNumber num, | 54 QuicPacketNumber num, |
38 bool include_version, | 55 bool include_version, |
39 QuicStreamId stream_id, | 56 QuicStreamId stream_id, |
40 QuicRstStreamErrorCode error_code) { | 57 QuicRstStreamErrorCode error_code) { |
41 QuicPacketHeader header; | 58 QuicPacketHeader header; |
42 header.public_header.connection_id = connection_id_; | 59 header.public_header.connection_id = connection_id_; |
43 header.public_header.reset_flag = false; | 60 header.public_header.reset_flag = false; |
44 header.public_header.version_flag = include_version; | 61 header.public_header.version_flag = include_version; |
45 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 62 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 QuicStreamId stream_id, | 230 QuicStreamId stream_id, |
214 bool should_include_version, | 231 bool should_include_version, |
215 bool fin, | 232 bool fin, |
216 QuicStreamOffset offset, | 233 QuicStreamOffset offset, |
217 base::StringPiece data) { | 234 base::StringPiece data) { |
218 InitializeHeader(packet_number, should_include_version); | 235 InitializeHeader(packet_number, should_include_version); |
219 QuicStreamFrame frame(stream_id, fin, offset, data); | 236 QuicStreamFrame frame(stream_id, fin, offset, data); |
220 return MakePacket(header_, QuicFrame(&frame)); | 237 return MakePacket(header_, QuicFrame(&frame)); |
221 } | 238 } |
222 | 239 |
| 240 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( |
| 241 QuicPacketNumber packet_number, |
| 242 bool include_version, |
| 243 QuicStreamId stream_id, |
| 244 QuicPacketNumber largest_received, |
| 245 QuicPacketNumber least_unacked, |
| 246 bool fin, |
| 247 QuicStreamOffset offset, |
| 248 base::StringPiece data) { |
| 249 InitializeHeader(packet_number, include_version); |
| 250 |
| 251 QuicAckFrame ack(MakeAckFrame(largest_received)); |
| 252 ack.delta_time_largest_observed = QuicTime::Delta::Zero(); |
| 253 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { |
| 254 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); |
| 255 } |
| 256 QuicFrames frames; |
| 257 frames.push_back(QuicFrame(&ack)); |
| 258 |
| 259 QuicStopWaitingFrame stop_waiting; |
| 260 stop_waiting.least_unacked = least_unacked; |
| 261 frames.push_back(QuicFrame(&stop_waiting)); |
| 262 |
| 263 QuicStreamFrame stream_frame(stream_id, fin, offset, data); |
| 264 frames.push_back(QuicFrame(&stream_frame)); |
| 265 |
| 266 return MakeMultipleFramesPacket(header_, frames); |
| 267 } |
| 268 |
223 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( | 269 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( |
224 QuicPacketNumber packet_number, | 270 QuicPacketNumber packet_number, |
225 QuicStreamId stream_id, | 271 QuicStreamId stream_id, |
226 bool should_include_version, | 272 bool should_include_version, |
227 bool fin, | 273 bool fin, |
228 SpdyPriority priority, | 274 SpdyPriority priority, |
229 const SpdyHeaderBlock& headers, | 275 const SpdyHeaderBlock& headers, |
230 size_t* spdy_headers_frame_length) { | 276 size_t* spdy_headers_frame_length) { |
231 InitializeHeader(packet_number, should_include_version); | 277 InitializeHeader(packet_number, should_include_version); |
232 scoped_ptr<SpdySerializedFrame> spdy_frame; | 278 scoped_ptr<SpdySerializedFrame> spdy_frame; |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 const std::string& status) { | 366 const std::string& status) { |
321 SpdyHeaderBlock headers; | 367 SpdyHeaderBlock headers; |
322 headers[":status"] = status; | 368 headers[":status"] = status; |
323 headers["content-type"] = "text/plain"; | 369 headers["content-type"] = "text/plain"; |
324 return headers; | 370 return headers; |
325 } | 371 } |
326 | 372 |
327 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket( | 373 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakePacket( |
328 const QuicPacketHeader& header, | 374 const QuicPacketHeader& header, |
329 const QuicFrame& frame) { | 375 const QuicFrame& frame) { |
| 376 QuicFrames frames; |
| 377 frames.push_back(frame); |
| 378 return MakeMultipleFramesPacket(header, frames); |
| 379 } |
| 380 |
| 381 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeMultipleFramesPacket( |
| 382 const QuicPacketHeader& header, |
| 383 const QuicFrames& frames) { |
330 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), | 384 QuicFramer framer(SupportedVersions(version_), QuicTime::Zero(), |
331 Perspective::IS_CLIENT); | 385 Perspective::IS_CLIENT); |
332 QuicFrames frames; | |
333 frames.push_back(frame); | |
334 scoped_ptr<QuicPacket> packet( | 386 scoped_ptr<QuicPacket> packet( |
335 BuildUnsizedDataPacket(&framer, header, frames)); | 387 BuildUnsizedDataPacket(&framer, header, frames)); |
336 char buffer[kMaxPacketSize]; | 388 char buffer[kMaxPacketSize]; |
337 size_t encrypted_size = framer.EncryptPayload( | 389 size_t encrypted_size = framer.EncryptPayload( |
338 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize); | 390 ENCRYPTION_NONE, header.packet_number, *packet, buffer, kMaxPacketSize); |
339 EXPECT_NE(0u, encrypted_size); | 391 EXPECT_NE(0u, encrypted_size); |
340 QuicEncryptedPacket encrypted(buffer, encrypted_size, false); | 392 QuicEncryptedPacket encrypted(buffer, encrypted_size, false); |
341 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone()); | 393 return scoped_ptr<QuicEncryptedPacket>(encrypted.Clone()); |
342 } | 394 } |
343 | 395 |
344 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, | 396 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, |
345 bool should_include_version) { | 397 bool should_include_version) { |
346 header_.public_header.connection_id = connection_id_; | 398 header_.public_header.connection_id = connection_id_; |
347 header_.public_header.reset_flag = false; | 399 header_.public_header.reset_flag = false; |
348 header_.public_header.version_flag = should_include_version; | 400 header_.public_header.version_flag = should_include_version; |
349 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 401 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
350 header_.packet_number = packet_number; | 402 header_.packet_number = packet_number; |
351 header_.fec_group = 0; | 403 header_.fec_group = 0; |
352 header_.entropy_flag = false; | 404 header_.entropy_flag = false; |
353 header_.fec_flag = false; | 405 header_.fec_flag = false; |
354 } | 406 } |
355 | 407 |
356 } // namespace test | 408 } // namespace test |
357 } // namespace net | 409 } // namespace net |
OLD | NEW |