| Index: net/quic/quic_connection_test.cc
|
| diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc
|
| index 9e29ee184e8ba04a8276601b8395eba3e068c099..b0844289663e955b3f2d21687b6079b8cab01301 100644
|
| --- a/net/quic/quic_connection_test.cc
|
| +++ b/net/quic/quic_connection_test.cc
|
| @@ -2416,19 +2416,22 @@ TEST_P(QuicConnectionTest, RetransmitPacketsWithInitialEncryption) {
|
| }
|
|
|
| TEST_P(QuicConnectionTest, BufferNonDecryptablePackets) {
|
| + // SetFromConfig is always called after construction from InitializeSession.
|
| + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| + QuicConfig config;
|
| + connection_.SetFromConfig(config);
|
| EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
|
| use_tagging_decrypter();
|
|
|
| const uint8 tag = 0x07;
|
| framer_.SetEncrypter(ENCRYPTION_INITIAL, new TaggingEncrypter(tag));
|
|
|
| - // Process an encrypted packet which can not yet be decrypted
|
| - // which should result in the packet being buffered.
|
| + // Process an encrypted packet which can not yet be decrypted which should
|
| + // result in the packet being buffered.
|
| ProcessDataPacketAtLevel(1, 0, kEntropyFlag, ENCRYPTION_INITIAL);
|
|
|
| - // Transition to the new encryption state and process another
|
| - // encrypted packet which should result in the original packet being
|
| - // processed.
|
| + // Transition to the new encryption state and process another encrypted packet
|
| + // which should result in the original packet being processed.
|
| connection_.SetDecrypter(new StrictTaggingDecrypter(tag),
|
| ENCRYPTION_INITIAL);
|
| connection_.SetDefaultEncryptionLevel(ENCRYPTION_INITIAL);
|
| @@ -2436,12 +2439,44 @@ TEST_P(QuicConnectionTest, BufferNonDecryptablePackets) {
|
| EXPECT_CALL(visitor_, OnStreamFrames(_)).Times(2);
|
| ProcessDataPacketAtLevel(2, 0, kEntropyFlag, ENCRYPTION_INITIAL);
|
|
|
| - // Finally, process a third packet and note that we do not
|
| - // reprocess the buffered packet.
|
| + // Finally, process a third packet and note that we do not reprocess the
|
| + // buffered packet.
|
| EXPECT_CALL(visitor_, OnStreamFrames(_)).Times(1);
|
| ProcessDataPacketAtLevel(3, 0, kEntropyFlag, ENCRYPTION_INITIAL);
|
| }
|
|
|
| +TEST_P(QuicConnectionTest, Buffer100NonDecryptablePackets) {
|
| + // SetFromConfig is always called after construction from InitializeSession.
|
| + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| + QuicConfig config;
|
| + config.set_max_undecryptable_packets(100);
|
| + connection_.SetFromConfig(config);
|
| + EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
|
| + use_tagging_decrypter();
|
| +
|
| + const uint8 tag = 0x07;
|
| + framer_.SetEncrypter(ENCRYPTION_INITIAL, new TaggingEncrypter(tag));
|
| +
|
| + // Process an encrypted packet which can not yet be decrypted which should
|
| + // result in the packet being buffered.
|
| + for (QuicPacketSequenceNumber i = 1; i <= 100; ++i) {
|
| + ProcessDataPacketAtLevel(i, 0, kEntropyFlag, ENCRYPTION_INITIAL);
|
| + }
|
| +
|
| + // Transition to the new encryption state and process another encrypted packet
|
| + // which should result in the original packets being processed.
|
| + connection_.SetDecrypter(new StrictTaggingDecrypter(tag), ENCRYPTION_INITIAL);
|
| + connection_.SetDefaultEncryptionLevel(ENCRYPTION_INITIAL);
|
| + connection_.SetEncrypter(ENCRYPTION_INITIAL, new TaggingEncrypter(tag));
|
| + EXPECT_CALL(visitor_, OnStreamFrames(_)).Times(101);
|
| + ProcessDataPacketAtLevel(101, 0, kEntropyFlag, ENCRYPTION_INITIAL);
|
| +
|
| + // Finally, process a third packet and note that we do not reprocess the
|
| + // buffered packet.
|
| + EXPECT_CALL(visitor_, OnStreamFrames(_)).Times(1);
|
| + ProcessDataPacketAtLevel(102, 0, kEntropyFlag, ENCRYPTION_INITIAL);
|
| +}
|
| +
|
| TEST_P(QuicConnectionTest, TestRetransmitOrder) {
|
| QuicByteCount first_packet_size;
|
| EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).WillOnce(
|
| @@ -2682,7 +2717,6 @@ TEST_P(QuicConnectionTest, InitialTimeout) {
|
| // SetFromConfig sets the initial timeouts before negotiation.
|
| EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| QuicConfig config;
|
| - config.SetDefaults();
|
| connection_.SetFromConfig(config);
|
| // Subtract a second from the idle timeout on the client side.
|
| QuicTime default_timeout = clock_.ApproximateNow().Add(
|
| @@ -2835,7 +2869,6 @@ TEST_P(QuicConnectionTest, TimeoutAfterSend) {
|
| EXPECT_TRUE(connection_.connected());
|
| EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| QuicConfig config;
|
| - config.SetDefaults();
|
| connection_.SetFromConfig(config);
|
|
|
| const QuicTime::Delta initial_idle_timeout =
|
| @@ -3924,12 +3957,12 @@ class MockQuicConnectionDebugVisitor
|
| void(const QuicFrame&));
|
|
|
| MOCK_METHOD6(OnPacketSent,
|
| - void(QuicPacketSequenceNumber,
|
| + void(const SerializedPacket&,
|
| QuicPacketSequenceNumber,
|
| EncryptionLevel,
|
| TransmissionType,
|
| const QuicEncryptedPacket&,
|
| - WriteResult));
|
| + QuicTime));
|
|
|
| MOCK_METHOD3(OnPacketReceived,
|
| void(const IPEndPoint&,
|
|
|