Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: net/quic/quic_sent_packet_manager_test.cc

Issue 706203003: Update from https://crrev.com/303153 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_server.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/quic_sent_packet_manager.h" 5 #include "net/quic/quic_sent_packet_manager.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "net/quic/quic_flags.h" 8 #include "net/quic/quic_flags.h"
9 #include "net/quic/test_tools/quic_config_peer.h" 9 #include "net/quic/test_tools/quic_config_peer.h"
10 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" 10 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h"
(...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); 1018 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow());
1019 VerifyUnackedPackets(nullptr, 0); 1019 VerifyUnackedPackets(nullptr, 0);
1020 VerifyRetransmittablePackets(nullptr, 0); 1020 VerifyRetransmittablePackets(nullptr, 0);
1021 } 1021 }
1022 1022
1023 TEST_F(QuicSentPacketManagerTest, ResetRecentMinRTTWithEmptyWindow) { 1023 TEST_F(QuicSentPacketManagerTest, ResetRecentMinRTTWithEmptyWindow) {
1024 QuicTime::Delta min_rtt = QuicTime::Delta::FromMilliseconds(50); 1024 QuicTime::Delta min_rtt = QuicTime::Delta::FromMilliseconds(50);
1025 QuicSentPacketManagerPeer::GetRttStats(&manager_)->UpdateRtt( 1025 QuicSentPacketManagerPeer::GetRttStats(&manager_)->UpdateRtt(
1026 min_rtt, QuicTime::Delta::Zero(), QuicTime::Zero()); 1026 min_rtt, QuicTime::Delta::Zero(), QuicTime::Zero());
1027 EXPECT_EQ(min_rtt, 1027 EXPECT_EQ(min_rtt,
1028 QuicSentPacketManagerPeer::GetRttStats(&manager_)->MinRtt()); 1028 QuicSentPacketManagerPeer::GetRttStats(&manager_)->min_rtt());
1029 EXPECT_EQ(min_rtt, 1029 EXPECT_EQ(min_rtt,
1030 QuicSentPacketManagerPeer::GetRttStats( 1030 QuicSentPacketManagerPeer::GetRttStats(
1031 &manager_)->recent_min_rtt()); 1031 &manager_)->recent_min_rtt());
1032 1032
1033 // Send two packets with no prior bytes in flight. 1033 // Send two packets with no prior bytes in flight.
1034 SendDataPacket(1); 1034 SendDataPacket(1);
1035 SendDataPacket(2); 1035 SendDataPacket(2);
1036 1036
1037 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(100)); 1037 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(100));
1038 // Ack two packets with 100ms RTT observations. 1038 // Ack two packets with 100ms RTT observations.
1039 QuicAckFrame ack_frame; 1039 QuicAckFrame ack_frame;
1040 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero(); 1040 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero();
1041 ack_frame.largest_observed = 1; 1041 ack_frame.largest_observed = 1;
1042 ExpectAck(1); 1042 ExpectAck(1);
1043 manager_.OnIncomingAck(ack_frame, clock_.Now()); 1043 manager_.OnIncomingAck(ack_frame, clock_.Now());
1044 1044
1045 // First ack does not change recent min rtt. 1045 // First ack does not change recent min rtt.
1046 EXPECT_EQ(min_rtt, 1046 EXPECT_EQ(min_rtt,
1047 QuicSentPacketManagerPeer::GetRttStats( 1047 QuicSentPacketManagerPeer::GetRttStats(
1048 &manager_)->recent_min_rtt()); 1048 &manager_)->recent_min_rtt());
1049 1049
1050 ack_frame.largest_observed = 2; 1050 ack_frame.largest_observed = 2;
1051 ExpectAck(2); 1051 ExpectAck(2);
1052 manager_.OnIncomingAck(ack_frame, clock_.Now()); 1052 manager_.OnIncomingAck(ack_frame, clock_.Now());
1053 1053
1054 EXPECT_EQ(min_rtt, 1054 EXPECT_EQ(min_rtt,
1055 QuicSentPacketManagerPeer::GetRttStats(&manager_)->MinRtt()); 1055 QuicSentPacketManagerPeer::GetRttStats(&manager_)->min_rtt());
1056 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100), 1056 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100),
1057 QuicSentPacketManagerPeer::GetRttStats( 1057 QuicSentPacketManagerPeer::GetRttStats(
1058 &manager_)->recent_min_rtt()); 1058 &manager_)->recent_min_rtt());
1059 } 1059 }
1060 1060
1061 TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) { 1061 TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) {
1062 // Send 100 packets and then ensure all are abandoned when the RTO fires. 1062 // Send 100 packets and then ensure all are abandoned when the RTO fires.
1063 const size_t kNumSentPackets = 100; 1063 const size_t kNumSentPackets = 100;
1064 for (size_t i = 1; i <= kNumSentPackets; ++i) { 1064 for (size_t i = 1; i <= kNumSentPackets; ++i) {
1065 SendDataPacket(i); 1065 SendDataPacket(i);
1066 } 1066 }
1067 1067
1068 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 1068 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
1069 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1069 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1070 EXPECT_FALSE(manager_.MaybeRetransmitTailLossProbe()); 1070 EXPECT_FALSE(manager_.MaybeRetransmitTailLossProbe());
1071 manager_.OnRetransmissionTimeout(); 1071 manager_.OnRetransmissionTimeout();
1072 } 1072 }
1073 1073
1074 TEST_F(QuicSentPacketManagerTest, GetTransmissionTime) { 1074 TEST_F(QuicSentPacketManagerTest, GetTransmissionTime) {
1075 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 1075 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
1076 } 1076 }
1077 1077
1078 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) { 1078 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) {
1079 SendCryptoPacket(1); 1079 SendCryptoPacket(1);
1080 1080
1081 // Check the min. 1081 // Check the min.
1082 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us( 1082 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_);
1083 1 * base::Time::kMicrosecondsPerMillisecond); 1083 rtt_stats->set_initial_rtt_us(1 * base::Time::kMicrosecondsPerMillisecond);
1084 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), 1084 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)),
1085 manager_.GetRetransmissionTime()); 1085 manager_.GetRetransmissionTime());
1086 1086
1087 // Test with a standard smoothed RTT. 1087 // Test with a standard smoothed RTT.
1088 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us( 1088 rtt_stats->set_initial_rtt_us(100 * base::Time::kMicrosecondsPerMillisecond);
1089 100 * base::Time::kMicrosecondsPerMillisecond);
1090 1089
1091 QuicTime::Delta srtt = manager_.GetRttStats()->SmoothedRtt(); 1090 QuicTime::Delta srtt =
1091 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us());
1092 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5)); 1092 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5));
1093 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1093 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1094 1094
1095 // Retransmit the packet by invoking the retransmission timeout. 1095 // Retransmit the packet by invoking the retransmission timeout.
1096 clock_.AdvanceTime(srtt.Multiply(1.5)); 1096 clock_.AdvanceTime(srtt.Multiply(1.5));
1097 manager_.OnRetransmissionTimeout(); 1097 manager_.OnRetransmissionTimeout();
1098 RetransmitNextPacket(2); 1098 RetransmitNextPacket(2);
1099 1099
1100 // The retransmission time should now be twice as far in the future. 1100 // The retransmission time should now be twice as far in the future.
1101 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5)); 1101 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5));
1102 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1102 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1103 } 1103 }
1104 1104
1105 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) { 1105 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) {
1106 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); 1106 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
1107 SendDataPacket(1); 1107 SendDataPacket(1);
1108 SendDataPacket(2); 1108 SendDataPacket(2);
1109 1109
1110 // Check the min. 1110 // Check the min.
1111 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us( 1111 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_);
1112 1 * base::Time::kMicrosecondsPerMillisecond); 1112 rtt_stats->set_initial_rtt_us(1 * base::Time::kMicrosecondsPerMillisecond);
1113 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), 1113 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)),
1114 manager_.GetRetransmissionTime()); 1114 manager_.GetRetransmissionTime());
1115 1115
1116 // Test with a standard smoothed RTT. 1116 // Test with a standard smoothed RTT.
1117 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us( 1117 rtt_stats->set_initial_rtt_us(100 * base::Time::kMicrosecondsPerMillisecond);
1118 100 * base::Time::kMicrosecondsPerMillisecond); 1118 QuicTime::Delta srtt =
1119 QuicTime::Delta srtt = manager_.GetRttStats()->SmoothedRtt(); 1119 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us());
1120 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2); 1120 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2);
1121 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay); 1121 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay);
1122 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1122 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1123 1123
1124 // Retransmit the packet by invoking the retransmission timeout. 1124 // Retransmit the packet by invoking the retransmission timeout.
1125 clock_.AdvanceTime(expected_tlp_delay); 1125 clock_.AdvanceTime(expected_tlp_delay);
1126 manager_.OnRetransmissionTimeout(); 1126 manager_.OnRetransmissionTimeout();
1127 EXPECT_EQ(QuicTime::Delta::Zero(), 1127 EXPECT_EQ(QuicTime::Delta::Zero(),
1128 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); 1128 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
1129 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 1129 EXPECT_FALSE(manager_.HasPendingRetransmissions());
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, 1413 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024,
1414 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); 1414 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
1415 } 1415 }
1416 EXPECT_EQ(QuicTime::Delta::Infinite(), 1416 EXPECT_EQ(QuicTime::Delta::Infinite(),
1417 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); 1417 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
1418 } 1418 }
1419 1419
1420 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { 1420 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) {
1421 uint32 initial_rtt_us = 325000; 1421 uint32 initial_rtt_us = 325000;
1422 EXPECT_NE(initial_rtt_us, 1422 EXPECT_NE(initial_rtt_us,
1423 manager_.GetRttStats()->SmoothedRtt().ToMicroseconds()); 1423 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds());
1424 1424
1425 QuicConfig config; 1425 QuicConfig config;
1426 config.SetInitialRoundTripTimeUsToSend(initial_rtt_us); 1426 config.SetInitialRoundTripTimeUsToSend(initial_rtt_us);
1427 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1427 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1428 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1428 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1429 manager_.SetFromConfig(config); 1429 manager_.SetFromConfig(config);
1430 1430
1431 EXPECT_EQ(initial_rtt_us, 1431 EXPECT_EQ(0, manager_.GetRttStats()->smoothed_rtt().ToMicroseconds());
1432 manager_.GetRttStats()->SmoothedRtt().ToMicroseconds()); 1432 EXPECT_EQ(initial_rtt_us, manager_.GetRttStats()->initial_rtt_us());
1433 } 1433 }
1434 1434
1435 } // namespace 1435 } // namespace
1436 } // namespace test 1436 } // namespace test
1437 } // namespace net 1437 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_server.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698