| 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/core/quic_connection.h" | 5 #include "net/quic/core/quic_connection.h" |
| 6 | 6 |
| 7 #include <errno.h> | 7 #include <errno.h> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <ostream> | 9 #include <ostream> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 AckResponse::kDefer); | 715 AckResponse::kDefer); |
| 716 connection_.set_visitor(&visitor_); | 716 connection_.set_visitor(&visitor_); |
| 717 connection_.SetSendAlgorithm(kDefaultPathId, send_algorithm_); | 717 connection_.SetSendAlgorithm(kDefaultPathId, send_algorithm_); |
| 718 connection_.SetLossAlgorithm(kDefaultPathId, loss_algorithm_.get()); | 718 connection_.SetLossAlgorithm(kDefaultPathId, loss_algorithm_.get()); |
| 719 framer_.set_received_entropy_calculator(&entropy_calculator_); | 719 framer_.set_received_entropy_calculator(&entropy_calculator_); |
| 720 peer_framer_.set_received_entropy_calculator(&peer_entropy_calculator_); | 720 peer_framer_.set_received_entropy_calculator(&peer_entropy_calculator_); |
| 721 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) | 721 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) |
| 722 .WillRepeatedly(Return(QuicTime::Delta::Zero())); | 722 .WillRepeatedly(Return(QuicTime::Delta::Zero())); |
| 723 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) | 723 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) |
| 724 .Times(AnyNumber()); | 724 .Times(AnyNumber()); |
| 725 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) | |
| 726 .WillRepeatedly(Return(QuicTime::Delta::Zero())); | |
| 727 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()) | 725 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()) |
| 728 .WillRepeatedly(Return(kDefaultTCPMSS)); | 726 .WillRepeatedly(Return(kDefaultTCPMSS)); |
| 729 EXPECT_CALL(*send_algorithm_, PacingRate(_)) | 727 EXPECT_CALL(*send_algorithm_, PacingRate(_)) |
| 730 .WillRepeatedly(Return(QuicBandwidth::Zero())); | 728 .WillRepeatedly(Return(QuicBandwidth::Zero())); |
| 731 ON_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) | 729 ON_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) |
| 732 .WillByDefault(Return(true)); | 730 .WillByDefault(Return(true)); |
| 733 EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate()) | 731 EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate()) |
| 734 .Times(AnyNumber()); | 732 .Times(AnyNumber()); |
| 735 EXPECT_CALL(*send_algorithm_, BandwidthEstimate()) | 733 EXPECT_CALL(*send_algorithm_, BandwidthEstimate()) |
| 736 .Times(AnyNumber()) | 734 .Times(AnyNumber()) |
| (...skipping 2030 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2767 EXPECT_TRUE(retransmission_alarm->IsSet()); | 2765 EXPECT_TRUE(retransmission_alarm->IsSet()); |
| 2768 EXPECT_EQ(clock_.Now() + DefaultRetransmissionTime(), | 2766 EXPECT_EQ(clock_.Now() + DefaultRetransmissionTime(), |
| 2769 retransmission_alarm->deadline()); | 2767 retransmission_alarm->deadline()); |
| 2770 | 2768 |
| 2771 // Advance the time right before the RTO, then receive an ack for the first | 2769 // Advance the time right before the RTO, then receive an ack for the first |
| 2772 // packet to delay the RTO. | 2770 // packet to delay the RTO. |
| 2773 clock_.AdvanceTime(DefaultRetransmissionTime()); | 2771 clock_.AdvanceTime(DefaultRetransmissionTime()); |
| 2774 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); | 2772 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
| 2775 QuicAckFrame ack = InitAckFrame(1); | 2773 QuicAckFrame ack = InitAckFrame(1); |
| 2776 ProcessAckPacket(&ack); | 2774 ProcessAckPacket(&ack); |
| 2775 // Now we have an RTT sample of DefaultRetransmissionTime(500ms), |
| 2776 // so the RTO has increased to 2 * SRTT. |
| 2777 EXPECT_TRUE(retransmission_alarm->IsSet()); | 2777 EXPECT_TRUE(retransmission_alarm->IsSet()); |
| 2778 EXPECT_GT(retransmission_alarm->deadline(), clock_.Now()); | 2778 EXPECT_EQ(retransmission_alarm->deadline(), |
| 2779 clock_.Now() + 2 * DefaultRetransmissionTime()); |
| 2779 | 2780 |
| 2780 // Move forward past the original RTO and ensure the RTO is still pending. | 2781 // Move forward past the original RTO and ensure the RTO is still pending. |
| 2781 clock_.AdvanceTime(2 * DefaultRetransmissionTime()); | 2782 clock_.AdvanceTime(2 * DefaultRetransmissionTime()); |
| 2782 | 2783 |
| 2783 // Ensure the second packet gets retransmitted when it finally fires. | 2784 // Ensure the second packet gets retransmitted when it finally fires. |
| 2784 EXPECT_TRUE(retransmission_alarm->IsSet()); | 2785 EXPECT_TRUE(retransmission_alarm->IsSet()); |
| 2785 EXPECT_LT(retransmission_alarm->deadline(), clock_.ApproximateNow()); | 2786 EXPECT_EQ(retransmission_alarm->deadline(), clock_.ApproximateNow()); |
| 2786 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); | 2787 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); |
| 2787 // Manually cancel the alarm to simulate a real test. | 2788 // Manually cancel the alarm to simulate a real test. |
| 2788 connection_.GetRetransmissionAlarm()->Fire(); | 2789 connection_.GetRetransmissionAlarm()->Fire(); |
| 2789 | 2790 |
| 2790 // The new retransmitted packet number should set the RTO to a larger value | 2791 // The new retransmitted packet number should set the RTO to a larger value |
| 2791 // than previously. | 2792 // than previously. |
| 2792 EXPECT_TRUE(retransmission_alarm->IsSet()); | 2793 EXPECT_TRUE(retransmission_alarm->IsSet()); |
| 2793 QuicTime next_rto_time = retransmission_alarm->deadline(); | 2794 QuicTime next_rto_time = retransmission_alarm->deadline(); |
| 2794 QuicTime expected_rto_time = | 2795 QuicTime expected_rto_time = |
| 2795 connection_.sent_packet_manager().GetRetransmissionTime(); | 2796 connection_.sent_packet_manager().GetRetransmissionTime(); |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3279 SendStreamDataToPeer(kClientDataStreamId1, "foo", 0, kFin, nullptr); | 3280 SendStreamDataToPeer(kClientDataStreamId1, "foo", 0, kFin, nullptr); |
| 3280 EXPECT_EQ(default_timeout, connection_.GetTimeoutAlarm()->deadline()); | 3281 EXPECT_EQ(default_timeout, connection_.GetTimeoutAlarm()->deadline()); |
| 3281 | 3282 |
| 3282 // The original alarm will fire. We should not time out because we had a | 3283 // The original alarm will fire. We should not time out because we had a |
| 3283 // network event at t=5ms. The alarm will reregister. | 3284 // network event at t=5ms. The alarm will reregister. |
| 3284 clock_.AdvanceTime(initial_idle_timeout - five_ms - five_ms); | 3285 clock_.AdvanceTime(initial_idle_timeout - five_ms - five_ms); |
| 3285 EXPECT_EQ(default_timeout, clock_.ApproximateNow()); | 3286 EXPECT_EQ(default_timeout, clock_.ApproximateNow()); |
| 3286 connection_.GetTimeoutAlarm()->Fire(); | 3287 connection_.GetTimeoutAlarm()->Fire(); |
| 3287 EXPECT_TRUE(connection_.GetTimeoutAlarm()->IsSet()); | 3288 EXPECT_TRUE(connection_.GetTimeoutAlarm()->IsSet()); |
| 3288 EXPECT_TRUE(connection_.connected()); | 3289 EXPECT_TRUE(connection_.connected()); |
| 3289 if (FLAGS_quic_better_last_send_for_timeout) { | 3290 EXPECT_EQ(default_timeout + five_ms, |
| 3290 EXPECT_EQ(default_timeout + five_ms, | 3291 connection_.GetTimeoutAlarm()->deadline()); |
| 3291 connection_.GetTimeoutAlarm()->deadline()); | |
| 3292 } else { | |
| 3293 EXPECT_EQ(default_timeout + five_ms + five_ms, | |
| 3294 connection_.GetTimeoutAlarm()->deadline()); | |
| 3295 } | |
| 3296 | 3292 |
| 3297 // This time, we should time out. | 3293 // This time, we should time out. |
| 3298 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_NETWORK_IDLE_TIMEOUT, _, | 3294 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_NETWORK_IDLE_TIMEOUT, _, |
| 3299 ConnectionCloseSource::FROM_SELF)); | 3295 ConnectionCloseSource::FROM_SELF)); |
| 3300 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); | 3296 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); |
| 3301 clock_.AdvanceTime(five_ms); | 3297 clock_.AdvanceTime(five_ms); |
| 3302 EXPECT_EQ(default_timeout + five_ms, clock_.ApproximateNow()); | 3298 EXPECT_EQ(default_timeout + five_ms, clock_.ApproximateNow()); |
| 3303 connection_.GetTimeoutAlarm()->Fire(); | 3299 connection_.GetTimeoutAlarm()->Fire(); |
| 3304 EXPECT_FALSE(connection_.GetTimeoutAlarm()->IsSet()); | 3300 EXPECT_FALSE(connection_.GetTimeoutAlarm()->IsSet()); |
| 3305 EXPECT_FALSE(connection_.connected()); | 3301 EXPECT_FALSE(connection_.connected()); |
| 3306 } | 3302 } |
| 3307 | 3303 |
| 3308 TEST_P(QuicConnectionTest, TimeoutAfterRetransmission) { | 3304 TEST_P(QuicConnectionTest, TimeoutAfterRetransmission) { |
| 3309 FLAGS_quic_better_last_send_for_timeout = true; | |
| 3310 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 3305 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
| 3311 EXPECT_TRUE(connection_.connected()); | 3306 EXPECT_TRUE(connection_.connected()); |
| 3312 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 3307 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
| 3313 QuicConfig config; | 3308 QuicConfig config; |
| 3314 connection_.SetFromConfig(config); | 3309 connection_.SetFromConfig(config); |
| 3315 EXPECT_FALSE(QuicConnectionPeer::IsSilentCloseEnabled(&connection_)); | 3310 EXPECT_FALSE(QuicConnectionPeer::IsSilentCloseEnabled(&connection_)); |
| 3316 | 3311 |
| 3317 const QuicTime start_time = clock_.Now(); | 3312 const QuicTime start_time = clock_.Now(); |
| 3318 const QuicTime::Delta initial_idle_timeout = | 3313 const QuicTime::Delta initial_idle_timeout = |
| 3319 QuicTime::Delta::FromSeconds(kInitialIdleTimeoutSecs - 1); | 3314 QuicTime::Delta::FromSeconds(kInitialIdleTimeoutSecs - 1); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3422 SendStreamDataToPeer(kClientDataStreamId1, "foo", 0, kFin, nullptr); | 3417 SendStreamDataToPeer(kClientDataStreamId1, "foo", 0, kFin, nullptr); |
| 3423 EXPECT_EQ(default_timeout, connection_.GetTimeoutAlarm()->deadline()); | 3418 EXPECT_EQ(default_timeout, connection_.GetTimeoutAlarm()->deadline()); |
| 3424 | 3419 |
| 3425 // The original alarm will fire. We should not time out because we had a | 3420 // The original alarm will fire. We should not time out because we had a |
| 3426 // network event at t=5ms. The alarm will reregister. | 3421 // network event at t=5ms. The alarm will reregister. |
| 3427 clock_.AdvanceTime(default_idle_timeout - five_ms - five_ms); | 3422 clock_.AdvanceTime(default_idle_timeout - five_ms - five_ms); |
| 3428 EXPECT_EQ(default_timeout, clock_.ApproximateNow()); | 3423 EXPECT_EQ(default_timeout, clock_.ApproximateNow()); |
| 3429 connection_.GetTimeoutAlarm()->Fire(); | 3424 connection_.GetTimeoutAlarm()->Fire(); |
| 3430 EXPECT_TRUE(connection_.GetTimeoutAlarm()->IsSet()); | 3425 EXPECT_TRUE(connection_.GetTimeoutAlarm()->IsSet()); |
| 3431 EXPECT_TRUE(connection_.connected()); | 3426 EXPECT_TRUE(connection_.connected()); |
| 3432 if (FLAGS_quic_better_last_send_for_timeout) { | 3427 EXPECT_EQ(default_timeout + five_ms, |
| 3433 EXPECT_EQ(default_timeout + five_ms, | 3428 connection_.GetTimeoutAlarm()->deadline()); |
| 3434 connection_.GetTimeoutAlarm()->deadline()); | |
| 3435 } else { | |
| 3436 EXPECT_EQ(default_timeout + five_ms + five_ms, | |
| 3437 connection_.GetTimeoutAlarm()->deadline()); | |
| 3438 } | |
| 3439 | 3429 |
| 3440 // This time, we should time out. | 3430 // This time, we should time out. |
| 3441 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_NETWORK_IDLE_TIMEOUT, _, | 3431 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_NETWORK_IDLE_TIMEOUT, _, |
| 3442 ConnectionCloseSource::FROM_SELF)); | 3432 ConnectionCloseSource::FROM_SELF)); |
| 3443 clock_.AdvanceTime(five_ms); | 3433 clock_.AdvanceTime(five_ms); |
| 3444 EXPECT_EQ(default_timeout + five_ms, clock_.ApproximateNow()); | 3434 EXPECT_EQ(default_timeout + five_ms, clock_.ApproximateNow()); |
| 3445 connection_.GetTimeoutAlarm()->Fire(); | 3435 connection_.GetTimeoutAlarm()->Fire(); |
| 3446 EXPECT_FALSE(connection_.GetTimeoutAlarm()->IsSet()); | 3436 EXPECT_FALSE(connection_.GetTimeoutAlarm()->IsSet()); |
| 3447 EXPECT_FALSE(connection_.connected()); | 3437 EXPECT_FALSE(connection_.connected()); |
| 3448 } | 3438 } |
| (...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4235 &connection_, &TestConnection::SendCryptoStreamData))); | 4225 &connection_, &TestConnection::SendCryptoStreamData))); |
| 4236 // Process a packet from the crypto stream, which is frame1_'s default. | 4226 // Process a packet from the crypto stream, which is frame1_'s default. |
| 4237 // Receiving the CHLO as packet 2 first will cause the connection to | 4227 // Receiving the CHLO as packet 2 first will cause the connection to |
| 4238 // immediately send an ack, due to the packet gap. | 4228 // immediately send an ack, due to the packet gap. |
| 4239 ProcessPacket(kDefaultPathId, 2); | 4229 ProcessPacket(kDefaultPathId, 2); |
| 4240 // Check that ack is sent and that delayed ack alarm is reset. | 4230 // Check that ack is sent and that delayed ack alarm is reset. |
| 4241 EXPECT_EQ(3u, writer_->frame_count()); | 4231 EXPECT_EQ(3u, writer_->frame_count()); |
| 4242 EXPECT_FALSE(writer_->stop_waiting_frames().empty()); | 4232 EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
| 4243 EXPECT_EQ(1u, writer_->stream_frames().size()); | 4233 EXPECT_EQ(1u, writer_->stream_frames().size()); |
| 4244 EXPECT_FALSE(writer_->ack_frames().empty()); | 4234 EXPECT_FALSE(writer_->ack_frames().empty()); |
| 4235 EXPECT_EQ(2u, writer_->ack_frames().front().largest_observed); |
| 4245 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); | 4236 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
| 4246 } | 4237 } |
| 4247 | 4238 |
| 4248 TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) { | 4239 TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) { |
| 4249 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 4240 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
| 4250 connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 0, !kFin, | 4241 connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 0, !kFin, |
| 4251 nullptr); | 4242 nullptr); |
| 4252 connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 3, !kFin, | 4243 connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 3, !kFin, |
| 4253 nullptr); | 4244 nullptr); |
| 4254 // Ack the second packet, which will retransmit the first packet. | 4245 // Ack the second packet, which will retransmit the first packet. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 4284 EXPECT_CALL(visitor_, OnCanWrite()) | 4275 EXPECT_CALL(visitor_, OnCanWrite()) |
| 4285 .WillOnce(IgnoreResult(InvokeWithoutArgs( | 4276 .WillOnce(IgnoreResult(InvokeWithoutArgs( |
| 4286 &connection_, &TestConnection::EnsureWritableAndSendStreamData5))); | 4277 &connection_, &TestConnection::EnsureWritableAndSendStreamData5))); |
| 4287 ProcessAckPacket(&ack); | 4278 ProcessAckPacket(&ack); |
| 4288 | 4279 |
| 4289 // Check that ack is bundled with outgoing data and the delayed ack | 4280 // Check that ack is bundled with outgoing data and the delayed ack |
| 4290 // alarm is reset. | 4281 // alarm is reset. |
| 4291 EXPECT_EQ(3u, writer_->frame_count()); | 4282 EXPECT_EQ(3u, writer_->frame_count()); |
| 4292 EXPECT_FALSE(writer_->stop_waiting_frames().empty()); | 4283 EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
| 4293 EXPECT_FALSE(writer_->ack_frames().empty()); | 4284 EXPECT_FALSE(writer_->ack_frames().empty()); |
| 4285 EXPECT_EQ(3u, writer_->ack_frames().front().largest_observed); |
| 4294 EXPECT_EQ(1u, writer_->stream_frames().size()); | 4286 EXPECT_EQ(1u, writer_->stream_frames().size()); |
| 4295 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); | 4287 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
| 4296 } | 4288 } |
| 4297 | 4289 |
| 4298 TEST_P(QuicConnectionTest, NoAckSentForClose) { | 4290 TEST_P(QuicConnectionTest, NoAckSentForClose) { |
| 4299 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 4291 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
| 4300 ProcessPacket(kDefaultPathId, 1); | 4292 ProcessPacket(kDefaultPathId, 1); |
| 4301 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PEER_GOING_AWAY, _, | 4293 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PEER_GOING_AWAY, _, |
| 4302 ConnectionCloseSource::FROM_PEER)); | 4294 ConnectionCloseSource::FROM_PEER)); |
| 4303 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); | 4295 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); |
| (...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4924 // Verify that the listener is not notified again when the | 4916 // Verify that the listener is not notified again when the |
| 4925 // retransmit is acked. | 4917 // retransmit is acked. |
| 4926 EXPECT_CALL(*loss_algorithm_, DetectLosses(_, _, _, _, _)); | 4918 EXPECT_CALL(*loss_algorithm_, DetectLosses(_, _, _, _, _)); |
| 4927 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); | 4919 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
| 4928 QuicAckFrame third_ack_frame = InitAckFrame(5); | 4920 QuicAckFrame third_ack_frame = InitAckFrame(5); |
| 4929 ProcessAckPacket(&third_ack_frame); | 4921 ProcessAckPacket(&third_ack_frame); |
| 4930 } | 4922 } |
| 4931 | 4923 |
| 4932 TEST_P(QuicConnectionTest, OnPacketHeaderDebugVisitor) { | 4924 TEST_P(QuicConnectionTest, OnPacketHeaderDebugVisitor) { |
| 4933 QuicPacketHeader header; | 4925 QuicPacketHeader header; |
| 4926 header.packet_number = 1; |
| 4934 | 4927 |
| 4935 MockQuicConnectionDebugVisitor debug_visitor; | 4928 MockQuicConnectionDebugVisitor debug_visitor; |
| 4936 connection_.set_debug_visitor(&debug_visitor); | 4929 connection_.set_debug_visitor(&debug_visitor); |
| 4937 EXPECT_CALL(debug_visitor, OnPacketHeader(Ref(header))).Times(1); | 4930 EXPECT_CALL(debug_visitor, OnPacketHeader(Ref(header))).Times(1); |
| 4938 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)).Times(1); | 4931 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)).Times(1); |
| 4939 EXPECT_CALL(debug_visitor, OnSuccessfulVersionNegotiation(_)).Times(1); | 4932 EXPECT_CALL(debug_visitor, OnSuccessfulVersionNegotiation(_)).Times(1); |
| 4940 connection_.OnPacketHeader(header); | 4933 connection_.OnPacketHeader(header); |
| 4941 } | 4934 } |
| 4942 | 4935 |
| 4943 TEST_P(QuicConnectionTest, Pacing) { | 4936 TEST_P(QuicConnectionTest, Pacing) { |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5263 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr); | 5256 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr); |
| 5264 EXPECT_EQ(1u, writer_->frame_count()); | 5257 EXPECT_EQ(1u, writer_->frame_count()); |
| 5265 EXPECT_FALSE(writer_->connection_close_frames().empty()); | 5258 EXPECT_FALSE(writer_->connection_close_frames().empty()); |
| 5266 // Ack frame is not bundled in connection close packet. | 5259 // Ack frame is not bundled in connection close packet. |
| 5267 EXPECT_TRUE(writer_->ack_frames().empty()); | 5260 EXPECT_TRUE(writer_->ack_frames().empty()); |
| 5268 } | 5261 } |
| 5269 | 5262 |
| 5270 } // namespace | 5263 } // namespace |
| 5271 } // namespace test | 5264 } // namespace test |
| 5272 } // namespace net | 5265 } // namespace net |
| OLD | NEW |