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 2467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5263 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr); | 5264 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr); |
5264 EXPECT_EQ(1u, writer_->frame_count()); | 5265 EXPECT_EQ(1u, writer_->frame_count()); |
5265 EXPECT_FALSE(writer_->connection_close_frames().empty()); | 5266 EXPECT_FALSE(writer_->connection_close_frames().empty()); |
5266 // Ack frame is not bundled in connection close packet. | 5267 // Ack frame is not bundled in connection close packet. |
5267 EXPECT_TRUE(writer_->ack_frames().empty()); | 5268 EXPECT_TRUE(writer_->ack_frames().empty()); |
5268 } | 5269 } |
5269 | 5270 |
5270 } // namespace | 5271 } // namespace |
5271 } // namespace test | 5272 } // namespace test |
5272 } // namespace net | 5273 } // namespace net |
OLD | NEW |