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

Unified Diff: net/quic/congestion_control/tcp_cubic_sender_bytes_test.cc

Issue 1918953003: Landing Recent QUIC changes until 4/22/2016 14:55 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Deleted SpdyFramerTests missed while mergeing 120451808 Created 4 years, 8 months 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 side-by-side diff with in-line comments
Download patch
Index: net/quic/congestion_control/tcp_cubic_sender_bytes_test.cc
diff --git a/net/quic/congestion_control/tcp_cubic_sender_bytes_test.cc b/net/quic/congestion_control/tcp_cubic_sender_bytes_test.cc
index 3bca8cb87f7ba7c28de5e685c6503fa30edf6e45..0e471c0256da8f0c919a42fa0db904b79beafbcd 100644
--- a/net/quic/congestion_control/tcp_cubic_sender_bytes_test.cc
+++ b/net/quic/congestion_control/tcp_cubic_sender_bytes_test.cc
@@ -231,6 +231,7 @@ TEST_F(TcpCubicSenderBytesTest, SlowStartPacketLoss) {
}
TEST_F(TcpCubicSenderBytesTest, SlowStartPacketLossWithLargeReduction) {
+ FLAGS_quic_sslr_limit_reduction = true;
QuicConfig config;
QuicTagVector options;
options.push_back(kSSLR);
@@ -238,7 +239,7 @@ TEST_F(TcpCubicSenderBytesTest, SlowStartPacketLossWithLargeReduction) {
sender_->SetFromConfig(config, Perspective::IS_SERVER);
sender_->SetNumEmulatedConnections(1);
- const int kNumberOfAcks = 10;
+ const int kNumberOfAcks = (kDefaultWindowTCP / (2 * kDefaultTCPMSS)) - 1;
for (int i = 0; i < kNumberOfAcks; ++i) {
// Send our full send window.
SendAvailableSendWindow();
@@ -260,6 +261,11 @@ TEST_F(TcpCubicSenderBytesTest, SlowStartPacketLossWithLargeReduction) {
LoseNPackets(5);
expected_send_window -= 5 * kDefaultTCPMSS;
EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
+ // Lose another 10 packets and ensure it reduces below half the peak CWND,
+ // because we never acked the full IW.
+ LoseNPackets(10);
+ expected_send_window -= 10 * kDefaultTCPMSS;
+ EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
size_t packets_in_recovery_window = expected_send_window / kDefaultTCPMSS;
@@ -319,6 +325,41 @@ TEST_F(TcpCubicSenderBytesTest, SlowStartHalfPacketLossWithLargeReduction) {
EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
}
+TEST_F(TcpCubicSenderBytesTest, SlowStartPacketLossWithMaxHalfReduction) {
+ FLAGS_quic_sslr_limit_reduction = true;
+ QuicConfig config;
+ QuicTagVector options;
+ options.push_back(kSSLR);
+ QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
+ sender_->SetFromConfig(config, Perspective::IS_SERVER);
+
+ sender_->SetNumEmulatedConnections(1);
+ const int kNumberOfAcks = kInitialCongestionWindowPackets / 2;
+ for (int i = 0; i < kNumberOfAcks; ++i) {
+ // Send our full send window.
+ SendAvailableSendWindow();
+ AckNPackets(2);
+ }
+ SendAvailableSendWindow();
+ QuicByteCount expected_send_window =
+ kDefaultWindowTCP + (kDefaultTCPMSS * 2 * kNumberOfAcks);
+ EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
+
+ // Lose a packet to exit slow start. We should now have fallen out of
+ // slow start with a window reduced by 1.
+ LoseNPackets(1);
+ expected_send_window -= kDefaultTCPMSS;
+ EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
+
+ // Lose half the outstanding packets in recovery and verify the congestion
+ // window is only reduced by a max of half.
+ LoseNPackets(kNumberOfAcks * 2);
+ expected_send_window -= (kNumberOfAcks * 2 - 1) * kDefaultTCPMSS;
+ EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
+ LoseNPackets(5);
+ EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
+}
+
TEST_F(TcpCubicSenderBytesTest, NoPRRWhenLessThanOnePacketInFlight) {
SendAvailableSendWindow();
LoseNPackets(kInitialCongestionWindowPackets - 1);
@@ -696,17 +737,24 @@ TEST_F(TcpCubicSenderBytesTest, BandwidthResumption) {
EXPECT_EQ(kMaxCongestionWindow * kDefaultTCPMSS,
sender_->GetCongestionWindow());
- cached_network_params.set_bandwidth_estimate_bytes_per_second(
- (kMinCongestionWindowForBandwidthResumption - 1) * kDefaultTCPMSS);
- sender_->ResumeConnectionState(cached_network_params, false);
- EXPECT_EQ(kMinCongestionWindowForBandwidthResumption * kDefaultTCPMSS,
- sender_->GetCongestionWindow());
+ if (FLAGS_quic_no_lower_bw_resumption_limit) {
+ // Resume with an illegal value of 0 and verify the server uses 1 instead.
+ cached_network_params.set_bandwidth_estimate_bytes_per_second(0);
+ sender_->ResumeConnectionState(cached_network_params, false);
+ EXPECT_EQ(sender_->min_congestion_window(), sender_->GetCongestionWindow());
+ } else {
+ cached_network_params.set_bandwidth_estimate_bytes_per_second(
+ (kMinCongestionWindowForBandwidthResumption - 1) * kDefaultTCPMSS);
+ sender_->ResumeConnectionState(cached_network_params, false);
+ EXPECT_EQ(kMinCongestionWindowForBandwidthResumption * kDefaultTCPMSS,
+ sender_->GetCongestionWindow());
+ }
// Resume to the max value.
cached_network_params.set_max_bandwidth_estimate_bytes_per_second(
- (kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS);
+ kMaxCongestionWindow * kDefaultTCPMSS);
sender_->ResumeConnectionState(cached_network_params, true);
- EXPECT_EQ((kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS,
+ EXPECT_EQ(kMaxCongestionWindow * kDefaultTCPMSS,
sender_->GetCongestionWindow());
}
« no previous file with comments | « net/quic/congestion_control/tcp_cubic_sender_bytes.cc ('k') | net/quic/congestion_control/tcp_cubic_sender_packets.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698