summaryrefslogtreecommitdiffstats
path: root/chromium/net/proxy/proxy_list_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/proxy/proxy_list_unittest.cc')
-rw-r--r--chromium/net/proxy/proxy_list_unittest.cc113
1 files changed, 77 insertions, 36 deletions
diff --git a/chromium/net/proxy/proxy_list_unittest.cc b/chromium/net/proxy/proxy_list_unittest.cc
index 470a9000882..9ccf9c4e4f7 100644
--- a/chromium/net/proxy/proxy_list_unittest.cc
+++ b/chromium/net/proxy/proxy_list_unittest.cc
@@ -4,6 +4,8 @@
#include "net/proxy/proxy_list.h"
+#include "net/base/net_log.h"
+#include "net/proxy/proxy_retry_info.h"
#include "net/proxy/proxy_server.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -89,42 +91,6 @@ TEST(ProxyListTest, RemoveProxiesWithoutScheme) {
}
}
-TEST(ProxyListTest, HasUntriedProxies) {
- // As in DeprioritizeBadProxies, we use a lengthy timeout to avoid depending
- // on the current time.
- ProxyRetryInfo proxy_retry_info;
- proxy_retry_info.bad_until =
- base::TimeTicks::Now() + base::TimeDelta::FromDays(1);
-
- // An empty list has nothing to try.
- {
- ProxyList list;
- ProxyRetryInfoMap proxy_retry_info;
- EXPECT_FALSE(list.HasUntriedProxies(proxy_retry_info));
- }
-
- // A list with one bad proxy has something to try. With two bad proxies,
- // there's nothing to try.
- {
- ProxyList list;
- list.SetFromPacString("PROXY bad1:80; PROXY bad2:80");
- ProxyRetryInfoMap retry_info_map;
- retry_info_map["bad1:80"] = proxy_retry_info;
- EXPECT_TRUE(list.HasUntriedProxies(retry_info_map));
- retry_info_map["bad2:80"] = proxy_retry_info;
- EXPECT_FALSE(list.HasUntriedProxies(retry_info_map));
- }
-
- // A list with one bad proxy and a DIRECT entry has something to try.
- {
- ProxyList list;
- list.SetFromPacString("PROXY bad1:80; DIRECT");
- ProxyRetryInfoMap retry_info_map;
- retry_info_map["bad1:80"] = proxy_retry_info;
- EXPECT_TRUE(list.HasUntriedProxies(retry_info_map));
- }
-}
-
TEST(ProxyListTest, DeprioritizeBadProxies) {
// Retry info that marks a proxy as being bad for a *very* long time (to avoid
// the test depending on the current time.)
@@ -176,6 +142,81 @@ TEST(ProxyListTest, DeprioritizeBadProxies) {
EXPECT_EQ("PROXY foopy1:80;PROXY foopy2:80;PROXY foopy3:80",
list.ToPacString());
}
+
+ // Call DeprioritizeBadProxies with 2 of the three proxies marked as bad. Of
+ // the 2 bad proxies, one is to be reconsidered and should be retried last.
+ // The other is not to be reconsidered and should be removed from the list.
+ {
+ ProxyList list;
+ list.SetFromPacString("PROXY foopy1:80;PROXY foopy2:80;PROXY foopy3:80");
+
+ ProxyRetryInfoMap retry_info_map;
+ // |proxy_retry_info.reconsider defaults to true.
+ retry_info_map["foopy1:80"] = proxy_retry_info;
+ proxy_retry_info.try_while_bad = false;
+ retry_info_map["foopy3:80"] = proxy_retry_info;
+ proxy_retry_info.try_while_bad = true;
+ retry_info_map["socks5://localhost:1080"] = proxy_retry_info;
+
+ list.DeprioritizeBadProxies(retry_info_map);
+
+ EXPECT_EQ("PROXY foopy2:80;PROXY foopy1:80",
+ list.ToPacString());
+ }
+}
+
+TEST(ProxyListTest, UpdateRetryInfoOnFallback) {
+ ProxyRetryInfo proxy_retry_info;
+ // Retrying should put the first proxy on the retry list.
+ {
+ ProxyList list;
+ ProxyRetryInfoMap retry_info_map;
+ BoundNetLog net_log;
+ list.SetFromPacString("PROXY foopy1:80;PROXY foopy2:80;PROXY foopy3:80");
+ list.UpdateRetryInfoOnFallback(&retry_info_map,
+ base::TimeDelta::FromSeconds(60),
+ true,
+ ProxyServer(),
+ net_log);
+ EXPECT_TRUE(retry_info_map.end() != retry_info_map.find("foopy1:80"));
+ EXPECT_TRUE(retry_info_map.end() == retry_info_map.find("foopy2:80"));
+ EXPECT_TRUE(retry_info_map.end() == retry_info_map.find("foopy3:80"));
+ }
+ // Including another bad proxy should put both the first and the specified
+ // proxy on the retry list.
+ {
+ ProxyList list;
+ ProxyRetryInfoMap retry_info_map;
+ BoundNetLog net_log;
+ ProxyServer proxy_server = ProxyServer::FromURI("foopy3:80",
+ ProxyServer::SCHEME_HTTP);
+ list.SetFromPacString("PROXY foopy1:80;PROXY foopy2:80;PROXY foopy3:80");
+ list.UpdateRetryInfoOnFallback(&retry_info_map,
+ base::TimeDelta::FromSeconds(60),
+ true,
+ proxy_server,
+ net_log);
+ EXPECT_TRUE(retry_info_map.end() != retry_info_map.find("foopy1:80"));
+ EXPECT_TRUE(retry_info_map.end() == retry_info_map.find("foopy2:80"));
+ EXPECT_TRUE(retry_info_map.end() != retry_info_map.find("foopy3:80"));
+ }
+ // If the first proxy is DIRECT, nothing is added to the retry list, even
+ // if another bad proxy is specified.
+ {
+ ProxyList list;
+ ProxyRetryInfoMap retry_info_map;
+ BoundNetLog net_log;
+ ProxyServer proxy_server = ProxyServer::FromURI("foopy2:80",
+ ProxyServer::SCHEME_HTTP);
+ list.SetFromPacString("DIRECT;PROXY foopy2:80;PROXY foopy3:80");
+ list.UpdateRetryInfoOnFallback(&retry_info_map,
+ base::TimeDelta::FromSeconds(60),
+ true,
+ proxy_server,
+ net_log);
+ EXPECT_TRUE(retry_info_map.end() == retry_info_map.find("foopy2:80"));
+ EXPECT_TRUE(retry_info_map.end() == retry_info_map.find("foopy3:80"));
+ }
}
} // namesapce