Index: net/proxy/proxy_list_unittest.cc |
diff --git a/net/proxy/proxy_list_unittest.cc b/net/proxy/proxy_list_unittest.cc |
deleted file mode 100644 |
index 5b759b18dc7852179e6fa0d60665d8428e143107..0000000000000000000000000000000000000000 |
--- a/net/proxy/proxy_list_unittest.cc |
+++ /dev/null |
@@ -1,254 +0,0 @@ |
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/proxy/proxy_list.h" |
- |
-#include "net/base/net_errors.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" |
- |
-namespace net { |
- |
-namespace { |
- |
-// Test parsing from a PAC string. |
-TEST(ProxyListTest, SetFromPacString) { |
- const struct { |
- const char* pac_input; |
- const char* pac_output; |
- } tests[] = { |
- // Valid inputs: |
- { "PROXY foopy:10", |
- "PROXY foopy:10", |
- }, |
- { " DIRECT", // leading space. |
- "DIRECT", |
- }, |
- { "PROXY foopy1 ; proxy foopy2;\t DIRECT", |
- "PROXY foopy1:80;PROXY foopy2:80;DIRECT", |
- }, |
- { "proxy foopy1 ; SOCKS foopy2", |
- "PROXY foopy1:80;SOCKS foopy2:1080", |
- }, |
- // Try putting DIRECT first. |
- { "DIRECT ; proxy foopy1 ; DIRECT ; SOCKS5 foopy2;DIRECT ", |
- "DIRECT;PROXY foopy1:80;DIRECT;SOCKS5 foopy2:1080;DIRECT", |
- }, |
- // Try putting DIRECT consecutively. |
- { "DIRECT ; proxy foopy1:80; DIRECT ; DIRECT", |
- "DIRECT;PROXY foopy1:80;DIRECT;DIRECT", |
- }, |
- |
- // Invalid inputs (parts which aren't understood get |
- // silently discarded): |
- // |
- // If the proxy list string parsed to empty, automatically fall-back to |
- // DIRECT. |
- { "PROXY-foopy:10", |
- "DIRECT", |
- }, |
- { "PROXY", |
- "DIRECT", |
- }, |
- { "PROXY foopy1 ; JUNK ; JUNK ; SOCKS5 foopy2 ; ;", |
- "PROXY foopy1:80;SOCKS5 foopy2:1080", |
- }, |
- }; |
- |
- for (size_t i = 0; i < arraysize(tests); ++i) { |
- ProxyList list; |
- list.SetFromPacString(tests[i].pac_input); |
- EXPECT_EQ(tests[i].pac_output, list.ToPacString()); |
- EXPECT_FALSE(list.IsEmpty()); |
- } |
-} |
- |
-TEST(ProxyListTest, RemoveProxiesWithoutScheme) { |
- const struct { |
- const char* pac_input; |
- int filter; |
- const char* filtered_pac_output; |
- } tests[] = { |
- { "PROXY foopy:10 ; SOCKS5 foopy2 ; SOCKS foopy11 ; PROXY foopy3 ; DIRECT", |
- // Remove anything that isn't HTTP or DIRECT. |
- ProxyServer::SCHEME_DIRECT | ProxyServer::SCHEME_HTTP, |
- "PROXY foopy:10;PROXY foopy3:80;DIRECT", |
- }, |
- { "PROXY foopy:10 ; SOCKS5 foopy2", |
- // Remove anything that isn't HTTP or SOCKS5. |
- ProxyServer::SCHEME_DIRECT | ProxyServer::SCHEME_SOCKS4, |
- "", |
- }, |
- }; |
- |
- for (size_t i = 0; i < arraysize(tests); ++i) { |
- ProxyList list; |
- list.SetFromPacString(tests[i].pac_input); |
- list.RemoveProxiesWithoutScheme(tests[i].filter); |
- EXPECT_EQ(tests[i].filtered_pac_output, list.ToPacString()); |
- } |
-} |
- |
-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.) |
- ProxyRetryInfo proxy_retry_info; |
- proxy_retry_info.bad_until = |
- base::TimeTicks::Now() + base::TimeDelta::FromDays(1); |
- |
- // Call DeprioritizeBadProxies with an empty map -- should have no effect. |
- { |
- ProxyList list; |
- list.SetFromPacString("PROXY foopy1:80;PROXY foopy2:80;PROXY foopy3:80"); |
- |
- ProxyRetryInfoMap retry_info_map; |
- list.DeprioritizeBadProxies(retry_info_map); |
- EXPECT_EQ("PROXY foopy1:80;PROXY foopy2:80;PROXY foopy3:80", |
- list.ToPacString()); |
- } |
- |
- // Call DeprioritizeBadProxies with 2 of the three proxies marked as bad. |
- // These proxies should be retried last. |
- { |
- ProxyList list; |
- list.SetFromPacString("PROXY foopy1:80;PROXY foopy2:80;PROXY foopy3:80"); |
- |
- ProxyRetryInfoMap retry_info_map; |
- retry_info_map["foopy1:80"] = proxy_retry_info; |
- retry_info_map["foopy3:80"] = proxy_retry_info; |
- retry_info_map["socks5://localhost:1080"] = proxy_retry_info; |
- |
- list.DeprioritizeBadProxies(retry_info_map); |
- |
- EXPECT_EQ("PROXY foopy2:80;PROXY foopy1:80;PROXY foopy3:80", |
- list.ToPacString()); |
- } |
- |
- // Call DeprioritizeBadProxies where ALL of the proxies are marked as bad. |
- // This should have no effect on the order. |
- { |
- ProxyList list; |
- list.SetFromPacString("PROXY foopy1:80;PROXY foopy2:80;PROXY foopy3:80"); |
- |
- ProxyRetryInfoMap retry_info_map; |
- retry_info_map["foopy1:80"] = proxy_retry_info; |
- retry_info_map["foopy2:80"] = proxy_retry_info; |
- retry_info_map["foopy3:80"] = proxy_retry_info; |
- |
- list.DeprioritizeBadProxies(retry_info_map); |
- |
- 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; |
- ProxyServer proxy_server( |
- ProxyServer::FromURI("foopy1: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, |
- ERR_PROXY_CONNECTION_FAILED, |
- net_log); |
- EXPECT_TRUE(retry_info_map.end() != retry_info_map.find("foopy1:80")); |
- EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, |
- retry_info_map[proxy_server.ToURI()].net_error); |
- EXPECT_TRUE(retry_info_map.end() == retry_info_map.find("foopy2:80")); |
- EXPECT_TRUE(retry_info_map.end() == retry_info_map.find("foopy3:80")); |
- } |
- // Retrying should put the first proxy on the retry list, even if there |
- // was no network error. |
- { |
- ProxyList list; |
- ProxyRetryInfoMap retry_info_map; |
- BoundNetLog net_log; |
- ProxyServer proxy_server( |
- ProxyServer::FromURI("foopy1: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, |
- OK, |
- net_log); |
- EXPECT_TRUE(retry_info_map.end() != retry_info_map.find("foopy1:80")); |
- EXPECT_EQ(OK, retry_info_map[proxy_server.ToURI()].net_error); |
- 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, |
- ERR_NAME_RESOLUTION_FAILED, |
- net_log); |
- EXPECT_TRUE(retry_info_map.end() != retry_info_map.find("foopy1:80")); |
- EXPECT_EQ(ERR_NAME_RESOLUTION_FAILED, |
- retry_info_map[proxy_server.ToURI()].net_error); |
- 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, |
- OK, |
- 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 |