OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_utils.h" | 5 #include "net/quic/test_tools/quic_test_utils.h" |
6 | 6 |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "net/quic/crypto/crypto_framer.h" | 9 #include "net/quic/crypto/crypto_framer.h" |
10 #include "net/quic/crypto/crypto_handshake.h" | 10 #include "net/quic/crypto/crypto_handshake.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 size_t num_nack_ranges, QuicPacketSequenceNumber least_unacked) { | 56 size_t num_nack_ranges, QuicPacketSequenceNumber least_unacked) { |
57 QuicAckFrame ack = MakeAckFrame(2 * num_nack_ranges + least_unacked, | 57 QuicAckFrame ack = MakeAckFrame(2 * num_nack_ranges + least_unacked, |
58 least_unacked); | 58 least_unacked); |
59 // Add enough missing packets to get num_nack_ranges nack ranges. | 59 // Add enough missing packets to get num_nack_ranges nack ranges. |
60 for (QuicPacketSequenceNumber i = 1; i < 2 * num_nack_ranges; i += 2) { | 60 for (QuicPacketSequenceNumber i = 1; i < 2 * num_nack_ranges; i += 2) { |
61 ack.received_info.missing_packets.insert(least_unacked + i); | 61 ack.received_info.missing_packets.insert(least_unacked + i); |
62 } | 62 } |
63 return ack; | 63 return ack; |
64 } | 64 } |
65 | 65 |
| 66 SerializedPacket BuildUnsizedDataPacket(QuicFramer* framer, |
| 67 const QuicPacketHeader& header, |
| 68 const QuicFrames& frames) { |
| 69 const size_t max_plaintext_size = framer->GetMaxPlaintextSize(kMaxPacketSize); |
| 70 size_t packet_size = GetPacketHeaderSize(header); |
| 71 for (size_t i = 0; i < frames.size(); ++i) { |
| 72 DCHECK_LE(packet_size, max_plaintext_size); |
| 73 bool first_frame = i == 0; |
| 74 bool last_frame = i == frames.size() - 1; |
| 75 const size_t frame_size = framer->GetSerializedFrameLength( |
| 76 frames[i], max_plaintext_size - packet_size, first_frame, last_frame, |
| 77 header.is_in_fec_group, |
| 78 header.public_header.sequence_number_length); |
| 79 DCHECK(frame_size); |
| 80 packet_size += frame_size; |
| 81 } |
| 82 return framer->BuildDataPacket(header, frames, packet_size); |
| 83 } |
| 84 |
66 MockFramerVisitor::MockFramerVisitor() { | 85 MockFramerVisitor::MockFramerVisitor() { |
67 // By default, we want to accept packets. | 86 // By default, we want to accept packets. |
68 ON_CALL(*this, OnProtocolVersionMismatch(_)) | 87 ON_CALL(*this, OnProtocolVersionMismatch(_)) |
69 .WillByDefault(testing::Return(false)); | 88 .WillByDefault(testing::Return(false)); |
70 | 89 |
71 // By default, we want to accept packets. | 90 // By default, we want to accept packets. |
72 ON_CALL(*this, OnUnauthenticatedHeader(_)) | 91 ON_CALL(*this, OnUnauthenticatedHeader(_)) |
73 .WillByDefault(testing::Return(true)); | 92 .WillByDefault(testing::Return(true)); |
74 | 93 |
75 ON_CALL(*this, OnUnauthenticatedPublicHeader(_)) | 94 ON_CALL(*this, OnUnauthenticatedPublicHeader(_)) |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 header.entropy_hash = 0; | 435 header.entropy_hash = 0; |
417 header.fec_flag = false; | 436 header.fec_flag = false; |
418 header.is_in_fec_group = NOT_IN_FEC_GROUP; | 437 header.is_in_fec_group = NOT_IN_FEC_GROUP; |
419 header.fec_group = 0; | 438 header.fec_group = 0; |
420 QuicStreamFrame stream_frame(1, false, 0, MakeIOVector(data)); | 439 QuicStreamFrame stream_frame(1, false, 0, MakeIOVector(data)); |
421 QuicFrame frame(&stream_frame); | 440 QuicFrame frame(&stream_frame); |
422 QuicFrames frames; | 441 QuicFrames frames; |
423 frames.push_back(frame); | 442 frames.push_back(frame); |
424 QuicFramer framer(QuicSupportedVersions(), QuicTime::Zero(), false); | 443 QuicFramer framer(QuicSupportedVersions(), QuicTime::Zero(), false); |
425 scoped_ptr<QuicPacket> packet( | 444 scoped_ptr<QuicPacket> packet( |
426 framer.BuildUnsizedDataPacket(header, frames).packet); | 445 BuildUnsizedDataPacket(&framer, header, frames).packet); |
427 EXPECT_TRUE(packet != NULL); | 446 EXPECT_TRUE(packet != NULL); |
428 QuicEncryptedPacket* encrypted = framer.EncryptPacket(ENCRYPTION_NONE, | 447 QuicEncryptedPacket* encrypted = framer.EncryptPacket(ENCRYPTION_NONE, |
429 sequence_number, | 448 sequence_number, |
430 *packet); | 449 *packet); |
431 EXPECT_TRUE(encrypted != NULL); | 450 EXPECT_TRUE(encrypted != NULL); |
432 return encrypted; | 451 return encrypted; |
433 } | 452 } |
434 | 453 |
435 void CompareCharArraysWithHexError( | 454 void CompareCharArraysWithHexError( |
436 const string& description, | 455 const string& description, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 header.entropy_hash = 0; | 512 header.entropy_hash = 0; |
494 header.fec_flag = false; | 513 header.fec_flag = false; |
495 header.fec_group = 0; | 514 header.fec_group = 0; |
496 | 515 |
497 QuicStreamFrame stream_frame(kCryptoStreamId, false, 0, | 516 QuicStreamFrame stream_frame(kCryptoStreamId, false, 0, |
498 MakeIOVector(data->AsStringPiece())); | 517 MakeIOVector(data->AsStringPiece())); |
499 | 518 |
500 QuicFrame frame(&stream_frame); | 519 QuicFrame frame(&stream_frame); |
501 QuicFrames frames; | 520 QuicFrames frames; |
502 frames.push_back(frame); | 521 frames.push_back(frame); |
503 return quic_framer.BuildUnsizedDataPacket(header, frames).packet; | 522 return BuildUnsizedDataPacket(&quic_framer, header, frames).packet; |
504 } | 523 } |
505 | 524 |
506 QuicPacket* ConstructHandshakePacket(QuicConnectionId connection_id, | 525 QuicPacket* ConstructHandshakePacket(QuicConnectionId connection_id, |
507 QuicTag tag) { | 526 QuicTag tag) { |
508 CryptoHandshakeMessage message; | 527 CryptoHandshakeMessage message; |
509 message.set_tag(tag); | 528 message.set_tag(tag); |
510 return ConstructPacketFromHandshakeMessage(connection_id, message, false); | 529 return ConstructPacketFromHandshakeMessage(connection_id, message, false); |
511 } | 530 } |
512 | 531 |
513 size_t GetPacketLengthForOneStream( | 532 size_t GetPacketLengthForOneStream( |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 } | 576 } |
558 | 577 |
559 QuicVersionVector SupportedVersions(QuicVersion version) { | 578 QuicVersionVector SupportedVersions(QuicVersion version) { |
560 QuicVersionVector versions; | 579 QuicVersionVector versions; |
561 versions.push_back(version); | 580 versions.push_back(version); |
562 return versions; | 581 return versions; |
563 } | 582 } |
564 | 583 |
565 } // namespace test | 584 } // namespace test |
566 } // namespace net | 585 } // namespace net |
OLD | NEW |