| Index: net/quic/core/quic_sent_packet_manager_test.cc
|
| diff --git a/net/quic/core/quic_sent_packet_manager_test.cc b/net/quic/core/quic_sent_packet_manager_test.cc
|
| index 6d5e6b8af35a5770c2015bf9168b1890957ab16a..4dc3d074e197961e1b0e7956fa794420e17a2cc7 100644
|
| --- a/net/quic/core/quic_sent_packet_manager_test.cc
|
| +++ b/net/quic/core/quic_sent_packet_manager_test.cc
|
| @@ -177,7 +177,7 @@ class QuicSentPacketManagerTest : public ::testing::Test {
|
| QuicSentPacketManagerPeer::MarkForRetransmission(
|
| &manager_, kDefaultPathId, old_packet_number, transmission_type);
|
| EXPECT_TRUE(manager_.HasPendingRetransmissions());
|
| - PendingRetransmission next_retransmission =
|
| + QuicPendingRetransmission next_retransmission =
|
| manager_.NextPendingRetransmission();
|
| EXPECT_EQ(old_packet_number, next_retransmission.packet_number);
|
| EXPECT_EQ(transmission_type, next_retransmission.transmission_type);
|
| @@ -253,7 +253,8 @@ class QuicSentPacketManagerTest : public ::testing::Test {
|
| HAS_RETRANSMITTABLE_DATA))
|
| .Times(1)
|
| .WillOnce(Return(true));
|
| - const PendingRetransmission pending = manager_.NextPendingRetransmission();
|
| + const QuicPendingRetransmission pending =
|
| + manager_.NextPendingRetransmission();
|
| SerializedPacket packet(CreatePacket(retransmission_packet_number, false));
|
| manager_.OnPacketSent(&packet, pending.path_id, pending.packet_number,
|
| clock_.Now(), pending.transmission_type,
|
| @@ -1430,6 +1431,60 @@ TEST_F(QuicSentPacketManagerTest, NegotiateCongestionControlFromOptions) {
|
| ->GetCongestionControlType());
|
| }
|
|
|
| +TEST_F(QuicSentPacketManagerTest, NegotiateClientCongestionControlFromOptions) {
|
| + FLAGS_quic_allow_new_bbr = true;
|
| + FLAGS_quic_client_connection_options = true;
|
| + QuicConfig config;
|
| + QuicTagVector options;
|
| +
|
| + // No change if the server receives client options.
|
| + const SendAlgorithmInterface* mock_sender =
|
| + QuicSentPacketManagerPeer::GetSendAlgorithm(manager_);
|
| + options.push_back(kRENO);
|
| + config.SetClientConnectionOptions(options);
|
| + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| + EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
|
| + manager_.SetFromConfig(config);
|
| + EXPECT_EQ(mock_sender, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_));
|
| +
|
| + // Change the congestion control on the client with client options.
|
| + QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
|
| + EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
|
| + manager_.SetFromConfig(config);
|
| + EXPECT_EQ(kReno, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
|
| + ->GetCongestionControlType());
|
| +
|
| + options.clear();
|
| + options.push_back(kTBBR);
|
| + config.SetClientConnectionOptions(options);
|
| + EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
|
| + manager_.SetFromConfig(config);
|
| + EXPECT_EQ(kBBR, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
|
| + ->GetCongestionControlType());
|
| +
|
| + options.clear();
|
| + options.push_back(kBYTE);
|
| + config.SetClientConnectionOptions(options);
|
| + EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
|
| + manager_.SetFromConfig(config);
|
| + if (FLAGS_quic_default_enable_cubic_bytes) {
|
| + EXPECT_EQ(kCubic, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
|
| + ->GetCongestionControlType());
|
| + } else {
|
| + EXPECT_EQ(kCubicBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
|
| + ->GetCongestionControlType());
|
| + }
|
| +
|
| + options.clear();
|
| + options.push_back(kRENO);
|
| + options.push_back(kBYTE);
|
| + config.SetClientConnectionOptions(options);
|
| + EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
|
| + manager_.SetFromConfig(config);
|
| + EXPECT_EQ(kRenoBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
|
| + ->GetCongestionControlType());
|
| +}
|
| +
|
| TEST_F(QuicSentPacketManagerTest, NegotiateNumConnectionsFromOptions) {
|
| QuicConfig config;
|
| QuicTagVector options;
|
|
|