Commit 94b90716 authored by Renjie's avatar Renjie Committed by Commit Bot

Add cronet experiment option to allow stale DNS racing experiment on cronet.

Bug: 787942
Cq-Include-Trybots: luci.chromium.try:ios-simulator-cronet;master.tryserver.chromium.android:android_cronet_tester
Change-Id: Ia9d210d3d427de332dae4f7ad7fb988239819926
Reviewed-on: https://chromium-review.googlesource.com/c/1289158
Commit-Queue: Renjie Tang <renjietang@chromium.org>
Reviewed-by: default avatarMisha Efimov <mef@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600901}
parent 52e0e55d
......@@ -76,6 +76,7 @@ const char kQuicUserAgentId[] = "user_agent_id";
const char kQuicMigrateSessionsEarlyV2[] = "migrate_sessions_early_v2";
const char kQuicRetryOnAlternateNetworkBeforeHandshake[] =
"retry_on_alternate_network_before_handshake";
const char kQuicRaceStaleDNSOnConnection[] = "race_stale_dns_on_connection";
const char kQuicDisableBidirectionalStreams[] =
"quic_disable_bidirectional_streams";
const char kQuicRaceCertVerification[] = "race_cert_verification";
......@@ -443,6 +444,13 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
quic_retry_on_alternate_network_before_handshake;
}
bool quic_race_stale_dns_on_connection = false;
if (quic_args->GetBoolean(kQuicRaceStaleDNSOnConnection,
&quic_race_stale_dns_on_connection)) {
session_params->quic_race_stale_dns_on_connection =
quic_race_stale_dns_on_connection;
}
bool quic_disable_bidirectional_streams = false;
if (quic_args->GetBoolean(kQuicDisableBidirectionalStreams,
&quic_disable_bidirectional_streams)) {
......
......@@ -204,6 +204,7 @@ TEST(URLRequestContextConfigTest, TestExperimentalOptionParsing) {
EXPECT_FALSE(params->quic_migrate_sessions_on_network_change_v2);
EXPECT_FALSE(params->quic_migrate_sessions_early_v2);
EXPECT_FALSE(params->quic_retry_on_alternate_network_before_handshake);
EXPECT_FALSE(params->quic_race_stale_dns_on_connection);
// Check race_cert_verification.
EXPECT_TRUE(params->quic_race_cert_verification);
......@@ -581,6 +582,57 @@ TEST(URLRequestContextConfigTest, SetQuicConnectionMigrationV2Options) {
4, params->quic_max_migrations_to_non_default_network_on_path_degrading);
}
TEST(URLRequestContextConfigTest, SetQuicStaleDNSracing) {
base::test::ScopedTaskEnvironment scoped_task_environment_(
base::test::ScopedTaskEnvironment::MainThreadType::IO);
URLRequestContextConfig config(
// Enable QUIC.
true,
// QUIC User Agent ID.
"Default QUIC User Agent ID",
// Enable SPDY.
true,
// Enable Brotli.
false,
// Type of http cache.
URLRequestContextConfig::HttpCacheType::DISK,
// Max size of http cache in bytes.
1024000,
// Disable caching for HTTP responses. Other information may be stored in
// the cache.
false,
// Storage path for http cache and cookie storage.
"/data/data/org.chromium.net/app_cronet_test/test_storage",
// Accept-Language request header field.
"foreign-language",
// User-Agent request header field.
"fake agent",
// JSON encoded experimental options.
"{\"QUIC\":{\"race_stale_dns_on_connection\":true}}",
// MockCertVerifier to use for testing purposes.
std::unique_ptr<net::CertVerifier>(),
// Enable network quality estimator.
false,
// Enable Public Key Pinning bypass for local trust anchors.
true,
// Optional network thread priority.
base::Optional<double>());
net::URLRequestContextBuilder builder;
net::NetLog net_log;
config.ConfigureURLRequestContextBuilder(&builder, &net_log);
// Set a ProxyConfigService to avoid DCHECK failure when building.
builder.set_proxy_config_service(
std::make_unique<net::ProxyConfigServiceFixed>(
net::ProxyConfigWithAnnotation::CreateDirect()));
std::unique_ptr<net::URLRequestContext> context(builder.Build());
const net::HttpNetworkSession::Params* params =
context->GetNetworkSessionParams();
EXPECT_TRUE(params->quic_race_stale_dns_on_connection);
}
TEST(URLRequestContextConfigTest, SetQuicHostWhitelist) {
base::test::ScopedTaskEnvironment scoped_task_environment_(
base::test::ScopedTaskEnvironment::MainThreadType::IO);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment