summaryrefslogtreecommitdiffstats
path: root/net/proxy/proxy_service_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/proxy/proxy_service_unittest.cc')
-rw-r--r--net/proxy/proxy_service_unittest.cc75
1 files changed, 75 insertions, 0 deletions
diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc
index 341550e..c5a8d12 100644
--- a/net/proxy/proxy_service_unittest.cc
+++ b/net/proxy/proxy_service_unittest.cc
@@ -169,6 +169,8 @@ TEST_F(ProxyServiceTest, Direct) {
EXPECT_TRUE(resolver->pending_requests().empty());
EXPECT_TRUE(info.is_direct());
+ EXPECT_TRUE(info.proxy_resolve_start_time().is_null());
+ EXPECT_TRUE(info.proxy_resolve_end_time().is_null());
// Check the NetLog was filled correctly.
CapturingNetLog::CapturedEntryList entries;
@@ -218,6 +220,10 @@ TEST_F(ProxyServiceTest, PAC) {
EXPECT_EQ("foopy:80", info.proxy_server().ToURI());
EXPECT_TRUE(info.did_use_pac_script());
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
+
// Check the NetLog was filled correctly.
CapturingNetLog::CapturedEntryList entries;
log.GetEntries(&entries);
@@ -295,6 +301,10 @@ TEST_F(ProxyServiceTest, PAC_FailoverWithoutDirect) {
EXPECT_EQ("foopy:8080", info.proxy_server().ToURI());
EXPECT_TRUE(info.did_use_pac_script());
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
+
// Now, imagine that connecting to foopy:8080 fails: there is nothing
// left to fallback to, since our proxy list was NOT terminated by
// DIRECT.
@@ -340,6 +350,10 @@ TEST_F(ProxyServiceTest, PAC_RuntimeError) {
EXPECT_TRUE(info.is_direct());
EXPECT_TRUE(info.did_use_pac_script());
EXPECT_EQ(1, info.config_id());
+
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
}
// The proxy list could potentially contain the DIRECT fallback choice
@@ -448,6 +462,10 @@ TEST_F(ProxyServiceTest, PAC_ConfigSourcePropagates) {
EXPECT_EQ(OK, callback.WaitForResult());
EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source());
EXPECT_TRUE(info.did_use_pac_script());
+
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
}
TEST_F(ProxyServiceTest, ProxyResolverFails) {
@@ -485,6 +503,11 @@ TEST_F(ProxyServiceTest, ProxyResolverFails) {
EXPECT_EQ(OK, callback1.WaitForResult());
EXPECT_TRUE(info.is_direct());
+ // Failed PAC executions still have proxy resolution times.
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
+
// The second resolve request will try to run through the proxy resolver,
// regardless of whether the first request failed in it.
TestCompletionCallback callback2;
@@ -692,12 +715,22 @@ TEST_F(ProxyServiceTest, ProxyFallback) {
EXPECT_FALSE(info.is_direct());
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
+ base::TimeTicks proxy_resolve_start_time = info.proxy_resolve_start_time();
+ base::TimeTicks proxy_resolve_end_time = info.proxy_resolve_end_time();
+
// Fake an error on the proxy.
TestCompletionCallback callback2;
rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL,
BoundNetLog());
EXPECT_EQ(OK, rv);
+ // Proxy times should not have been modified by fallback.
+ EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time());
+ EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time());
+
// The second proxy should be specified.
EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
// Report back that the second proxy worked. This will globally mark the
@@ -722,6 +755,14 @@ TEST_F(ProxyServiceTest, ProxyFallback) {
EXPECT_FALSE(info.is_direct());
EXPECT_EQ("foopy3:7070", info.proxy_server().ToURI());
+ // Proxy times should have been updated, so get them again.
+ EXPECT_LE(proxy_resolve_end_time, info.proxy_resolve_start_time());
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
+ proxy_resolve_start_time = info.proxy_resolve_start_time();
+ proxy_resolve_end_time = info.proxy_resolve_end_time();
+
// We fake another error. It should now try the third one.
TestCompletionCallback callback4;
rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL,
@@ -747,6 +788,10 @@ TEST_F(ProxyServiceTest, ProxyFallback) {
EXPECT_FALSE(info.is_direct());
EXPECT_TRUE(info.is_empty());
+ // Proxy times should not have been modified by fallback.
+ EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time());
+ EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time());
+
// Look up proxies again
TestCompletionCallback callback7;
rv = service.ResolveProxy(url, &info, callback7.callback(), NULL,
@@ -767,6 +812,9 @@ TEST_F(ProxyServiceTest, ProxyFallback) {
EXPECT_FALSE(info.is_direct());
EXPECT_EQ("foopy3:7070", info.proxy_server().ToURI());
+ EXPECT_LE(proxy_resolve_end_time, info.proxy_resolve_start_time());
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
// TODO(nsylvain): Test that the proxy can be retried after the delay.
}
@@ -824,6 +872,10 @@ TEST_F(ProxyServiceTest, ProxyFallbackToDirect) {
// Finally, we get back DIRECT.
EXPECT_TRUE(info.is_direct());
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
+
// Now we tell the proxy service that even DIRECT failed.
TestCompletionCallback callback4;
rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL,
@@ -924,6 +976,10 @@ TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) {
EXPECT_EQ(OK, callback4.WaitForResult());
EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
+
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
}
TEST_F(ProxyServiceTest, ProxyFallback_BadConfig) {
@@ -1010,6 +1066,10 @@ TEST_F(ProxyServiceTest, ProxyFallback_BadConfig) {
EXPECT_EQ(OK, callback4.WaitForResult());
EXPECT_FALSE(info3.is_direct());
EXPECT_EQ("foopy1:8080", info3.proxy_server().ToURI());
+
+ EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
}
TEST_F(ProxyServiceTest, ProxyFallback_BadConfigMandatory) {
@@ -1442,12 +1502,21 @@ TEST_F(ProxyServiceTest, InitialPACScriptDownload) {
// Complete and verify that requests ran as expected.
EXPECT_EQ(OK, callback1.WaitForResult());
EXPECT_EQ("request1:80", info1.proxy_server().ToURI());
+ EXPECT_FALSE(info1.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info1.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info1.proxy_resolve_start_time(), info1.proxy_resolve_end_time());
EXPECT_EQ(OK, callback2.WaitForResult());
EXPECT_EQ("request2:80", info2.proxy_server().ToURI());
+ EXPECT_FALSE(info2.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info2.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info2.proxy_resolve_start_time(), info2.proxy_resolve_end_time());
EXPECT_EQ(OK, callback3.WaitForResult());
EXPECT_EQ("request3:80", info3.proxy_server().ToURI());
+ EXPECT_FALSE(info3.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info3.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info3.proxy_resolve_start_time(), info3.proxy_resolve_end_time());
}
// Test changing the ProxyScriptFetcher while PAC download is in progress.
@@ -1664,9 +1733,15 @@ TEST_F(ProxyServiceTest, FallbackFromAutodetectToCustomPac) {
// Verify that requests ran as expected.
EXPECT_EQ(OK, callback1.WaitForResult());
EXPECT_EQ("request1:80", info1.proxy_server().ToURI());
+ EXPECT_FALSE(info1.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info1.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info1.proxy_resolve_start_time(), info1.proxy_resolve_end_time());
EXPECT_EQ(OK, callback2.WaitForResult());
EXPECT_EQ("request2:80", info2.proxy_server().ToURI());
+ EXPECT_FALSE(info2.proxy_resolve_start_time().is_null());
+ EXPECT_FALSE(info2.proxy_resolve_end_time().is_null());
+ EXPECT_LE(info2.proxy_resolve_start_time(), info2.proxy_resolve_end_time());
}
// This is the same test as FallbackFromAutodetectToCustomPac, except