Index: net/tools/quic/quic_server_session_test.cc |
diff --git a/net/tools/quic/quic_server_session_test.cc b/net/tools/quic/quic_server_session_test.cc |
index 6a17f5391aa7652647cbe7c6ccfc3b3bab328bbe..b0ed5d1ec1d9090e20ea684aa737c5cecd1a4763 100644 |
--- a/net/tools/quic/quic_server_session_test.cc |
+++ b/net/tools/quic/quic_server_session_test.cc |
@@ -292,7 +292,7 @@ class MockQuicCryptoServerStream : public QuicCryptoServerStream { |
explicit MockQuicCryptoServerStream( |
const QuicCryptoServerConfig& crypto_config, QuicSession* session) |
: QuicCryptoServerStream(crypto_config, session) {} |
- virtual ~MockQuicCryptoServerStream() {} |
+ ~MockQuicCryptoServerStream() override {} |
MOCK_METHOD1(SendServerConfigUpdate, |
void(const CachedNetworkParameters* cached_network_parameters)); |
@@ -383,6 +383,46 @@ TEST_P(QuicServerSessionTest, BandwidthEstimates) { |
session_->OnCongestionWindowChange(now); |
} |
+TEST_P(QuicServerSessionTest, BandwidthResumptionExperiment) { |
+ ValueRestore<bool> old_flag( |
+ &FLAGS_quic_enable_bandwidth_resumption_experiment, true); |
+ |
+ // Test that if a client provides a CachedNetworkParameters with the same |
+ // serving region as the current server, that this data is passed down to the |
+ // send algorithm. |
+ |
+ // Client has sent kBWRE connection option to trigger bandwidth resumption. |
+ QuicTagVector copt; |
+ copt.push_back(kBWRE); |
+ QuicConfigPeer::SetReceivedConnectionOptions(session_->config(), copt); |
+ |
+ const string kTestServingRegion = "a serving region"; |
+ session_->set_serving_region(kTestServingRegion); |
+ |
+ QuicCryptoServerStream* crypto_stream = |
+ static_cast<QuicCryptoServerStream*>( |
+ QuicSessionPeer::GetCryptoStream(session_.get())); |
+ |
+ // No effect if no CachedNetworkParameters provided. |
+ EXPECT_CALL(*connection_, ResumeConnectionState(_)).Times(0); |
+ session_->OnConfigNegotiated(); |
+ |
+ // No effect if CachedNetworkParameters provided, but different serving |
+ // regions. |
+ CachedNetworkParameters cached_network_params; |
+ cached_network_params.set_bandwidth_estimate_bytes_per_second(1); |
+ cached_network_params.set_serving_region("different serving region"); |
+ crypto_stream->set_previous_cached_network_params(cached_network_params); |
+ EXPECT_CALL(*connection_, ResumeConnectionState(_)).Times(0); |
+ session_->OnConfigNegotiated(); |
+ |
+ // Same serving region results in CachedNetworkParameters being stored. |
+ cached_network_params.set_serving_region(kTestServingRegion); |
+ crypto_stream->set_previous_cached_network_params(cached_network_params); |
+ EXPECT_CALL(*connection_, ResumeConnectionState(_)).Times(1); |
+ session_->OnConfigNegotiated(); |
+} |
+ |
} // namespace |
} // namespace test |
} // namespace tools |