aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java')
-rw-r--r--src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java52
1 files changed, 24 insertions, 28 deletions
diff --git a/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java b/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java
index 687a397..1cdcb1d 100644
--- a/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java
+++ b/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java
@@ -19,7 +19,7 @@ import com.squareup.okhttp.Address;
import com.squareup.okhttp.Connection;
import com.squareup.okhttp.ConnectionPool;
import com.squareup.okhttp.OkAuthenticator;
-import com.squareup.okhttp.Route;
+import com.squareup.okhttp.RouteDatabase;
import com.squareup.okhttp.internal.Dns;
import com.squareup.okhttp.internal.SslContextBuilder;
import java.io.IOException;
@@ -32,11 +32,8 @@ import java.net.URI;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.NoSuchElementException;
-import java.util.Set;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLHandshakeException;
@@ -87,7 +84,7 @@ public final class RouteSelectorTest {
@Test public void singleRoute() throws Exception {
Address address = new Address(uriHost, uriPort, null, null, authenticator, null, transports);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
assertTrue(routeSelector.hasNext());
dns.inetAddresses = makeFakeAddresses(255, 1);
@@ -105,15 +102,14 @@ public final class RouteSelectorTest {
@Test public void singleRouteReturnsFailedRoute() throws Exception {
Address address = new Address(uriHost, uriPort, null, null, authenticator, null, transports);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
assertTrue(routeSelector.hasNext());
dns.inetAddresses = makeFakeAddresses(255, 1);
Connection connection = routeSelector.next();
- Set<Route> failedRoutes = new LinkedHashSet<Route>();
- failedRoutes.add(connection.getRoute());
- routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ RouteDatabase routeDatabase = new RouteDatabase();
+ routeDatabase.failed(connection.getRoute(), new IOException());
+ routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns, routeDatabase);
assertConnection(routeSelector.next(), address, NO_PROXY, dns.inetAddresses[0], uriPort, false);
assertFalse(routeSelector.hasNext());
try {
@@ -126,7 +122,7 @@ public final class RouteSelectorTest {
@Test public void explicitProxyTriesThatProxiesAddressesOnly() throws Exception {
Address address = new Address(uriHost, uriPort, null, null, authenticator, proxyA, transports);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
assertTrue(routeSelector.hasNext());
dns.inetAddresses = makeFakeAddresses(255, 2);
@@ -144,7 +140,7 @@ public final class RouteSelectorTest {
Address address = new Address(uriHost, uriPort, null, null, authenticator, NO_PROXY,
transports);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
assertTrue(routeSelector.hasNext());
dns.inetAddresses = makeFakeAddresses(255, 2);
@@ -161,7 +157,7 @@ public final class RouteSelectorTest {
proxySelector.proxies = null;
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
proxySelector.assertRequests(uri);
assertTrue(routeSelector.hasNext());
@@ -175,7 +171,7 @@ public final class RouteSelectorTest {
@Test public void proxySelectorReturnsNoProxies() throws Exception {
Address address = new Address(uriHost, uriPort, null, null, authenticator, null, transports);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
assertTrue(routeSelector.hasNext());
dns.inetAddresses = makeFakeAddresses(255, 2);
@@ -193,7 +189,7 @@ public final class RouteSelectorTest {
proxySelector.proxies.add(proxyA);
proxySelector.proxies.add(proxyB);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
proxySelector.assertRequests(uri);
// First try the IP addresses of the first proxy, in sequence.
@@ -226,7 +222,7 @@ public final class RouteSelectorTest {
proxySelector.proxies.add(NO_PROXY);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
proxySelector.assertRequests(uri);
// Only the origin server will be attempted.
@@ -245,7 +241,7 @@ public final class RouteSelectorTest {
proxySelector.proxies.add(proxyB);
proxySelector.proxies.add(proxyA);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
proxySelector.assertRequests(uri);
assertTrue(routeSelector.hasNext());
@@ -280,27 +276,27 @@ public final class RouteSelectorTest {
@Test public void nonSslErrorAddsAllTlsModesToFailedRoute() throws Exception {
Address address = new Address(uriHost, uriPort, socketFactory, hostnameVerifier, authenticator,
Proxy.NO_PROXY, transports);
- Set<Route> failedRoutes = new LinkedHashSet<Route>();
+ RouteDatabase routeDatabase = new RouteDatabase();
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- failedRoutes);
+ routeDatabase);
dns.inetAddresses = makeFakeAddresses(255, 1);
Connection connection = routeSelector.next();
routeSelector.connectFailed(connection, new IOException("Non SSL exception"));
- assertTrue(failedRoutes.size() == 2);
+ assertTrue(routeDatabase.failedRoutesCount() == 2);
}
@Test public void sslErrorAddsOnlyFailedTlsModeToFailedRoute() throws Exception {
Address address = new Address(uriHost, uriPort, socketFactory, hostnameVerifier, authenticator,
Proxy.NO_PROXY, transports);
- Set<Route> failedRoutes = new LinkedHashSet<Route>();
+ RouteDatabase routeDatabase = new RouteDatabase();
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- failedRoutes);
+ routeDatabase);
dns.inetAddresses = makeFakeAddresses(255, 1);
Connection connection = routeSelector.next();
routeSelector.connectFailed(connection, new SSLHandshakeException("SSL exception"));
- assertTrue(failedRoutes.size() == 1);
+ assertTrue(routeDatabase.failedRoutesCount() == 1);
}
@Test public void multipleProxiesMultipleInetAddressesMultipleTlsModes() throws Exception {
@@ -309,7 +305,7 @@ public final class RouteSelectorTest {
proxySelector.proxies.add(proxyA);
proxySelector.proxies.add(proxyB);
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- Collections.EMPTY_SET);
+ new RouteDatabase());
// Proxy A
dns.inetAddresses = makeFakeAddresses(255, 2);
@@ -346,9 +342,9 @@ public final class RouteSelectorTest {
Address address = new Address(uriHost, uriPort, socketFactory, hostnameVerifier, authenticator,
Proxy.NO_PROXY, transports);
- Set<Route> failedRoutes = new LinkedHashSet<Route>(1);
+ RouteDatabase routeDatabase = new RouteDatabase();
RouteSelector routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns,
- failedRoutes);
+ routeDatabase);
dns.inetAddresses = makeFakeAddresses(255, 1);
// Extract the regular sequence of routes from selector.
@@ -360,9 +356,9 @@ public final class RouteSelectorTest {
// Check that we do indeed have more than one route.
assertTrue(regularRoutes.size() > 1);
// Add first regular route as failed.
- failedRoutes.add(regularRoutes.get(0).getRoute());
+ routeDatabase.failed(regularRoutes.get(0).getRoute(), new SSLHandshakeException("none"));
// Reset selector
- routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns, failedRoutes);
+ routeSelector = new RouteSelector(address, uri, proxySelector, pool, dns, routeDatabase);
List<Connection> routesWithFailedRoute = new ArrayList<Connection>();
while (routeSelector.hasNext()) {