summaryrefslogtreecommitdiffstats
path: root/net/proxy/proxy_list_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/proxy/proxy_list_unittest.cc')
-rw-r--r--net/proxy/proxy_list_unittest.cc53
1 files changed, 53 insertions, 0 deletions
diff --git a/net/proxy/proxy_list_unittest.cc b/net/proxy/proxy_list_unittest.cc
index 470a900..33d3dab 100644
--- a/net/proxy/proxy_list_unittest.cc
+++ b/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"
@@ -178,6 +180,57 @@ TEST(ProxyListTest, DeprioritizeBadProxies) {
}
}
+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),
+ 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),
+ 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),
+ 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
} // namespace net