From b77e76c7367af5a09097f407c0066a227454dec8 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Mon, 27 Jan 2014 10:33:35 -0800 Subject: [PATCH] Test de-flakiness attempt Update surefire to latest and set travis to emit maven version. Only use one MockSpdyPeer in SpdyConnectionTest and close its executor. Consistency in HttpURLConnection tests. Bump so and read timeouts in ConnectionPoolTest. --- .travis.yml | 3 + .../okhttp/internal/spdy/MockSpdyPeer.java | 29 +- .../internal/spdy/SpdyConnectionTest.java | 28 +- .../squareup/okhttp/ConnectionPoolTest.java | 16 +- .../internal/http/HttpOverSpdyTest.java | 29 +- .../internal/http/URLConnectionTest.java | 280 +++++++++--------- pom.xml | 11 +- 7 files changed, 198 insertions(+), 198 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7769867d9..bc088e91b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,5 +3,8 @@ language: java notifications: email: false +before_install: + - mvn -version + jdk: - oraclejdk7 diff --git a/okhttp-protocols/src/test/java/com/squareup/okhttp/internal/spdy/MockSpdyPeer.java b/okhttp-protocols/src/test/java/com/squareup/okhttp/internal/spdy/MockSpdyPeer.java index 401020b9c..7fd0e2d5d 100644 --- a/okhttp-protocols/src/test/java/com/squareup/okhttp/internal/spdy/MockSpdyPeer.java +++ b/okhttp-protocols/src/test/java/com/squareup/okhttp/internal/spdy/MockSpdyPeer.java @@ -28,26 +28,29 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.BlockingQueue; -import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; /** Replays prerecorded outgoing frames and records incoming frames. */ public final class MockSpdyPeer implements Closeable { private int frameCount = 0; - private final boolean client; - private final Variant variant; + private boolean client = false; + private Variant variant = new Spdy3(); private final ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(); - private final FrameWriter frameWriter; + private FrameWriter frameWriter = variant.newWriter(bytesOut, client);; private final List outFrames = new ArrayList(); private final BlockingQueue inFrames = new LinkedBlockingQueue(); private int port; - private final Executor executor = Executors.newCachedThreadPool( + private final ExecutorService executor = Executors.newCachedThreadPool( Util.threadFactory("MockSpdyPeer", false)); private ServerSocket serverSocket; private Socket socket; - public MockSpdyPeer(Variant variant, boolean client) { + public void setVariantAndClient(Variant variant, boolean client) { + if (this.variant.getProtocol() == variant.getProtocol() && this.client == client) { + return; + } this.client = client; this.variant = variant; this.frameWriter = variant.newWriter(bytesOut, client); @@ -85,10 +88,6 @@ public final class MockSpdyPeer implements Closeable { return frameWriter; } - public int getPort() { - return port; - } - public InFrame takeFrame() throws InterruptedException { return inFrames.take(); } @@ -97,12 +96,13 @@ public final class MockSpdyPeer implements Closeable { if (serverSocket != null) throw new IllegalStateException(); serverSocket = new ServerSocket(0); serverSocket.setReuseAddress(true); - this.port = serverSocket.getLocalPort(); + port = serverSocket.getLocalPort(); executor.execute(new Runnable() { @Override public void run() { try { readAndWriteFrames(); } catch (IOException e) { + Util.closeQuietly(MockSpdyPeer.this); throw new RuntimeException(e); } } @@ -153,15 +153,16 @@ public final class MockSpdyPeer implements Closeable { return new Socket("localhost", port); } - @Override public void close() throws IOException { + @Override public synchronized void close() throws IOException { + executor.shutdown(); Socket socket = this.socket; if (socket != null) { - socket.close(); + Util.closeQuietly(socket); this.socket = null; } ServerSocket serverSocket = this.serverSocket; if (serverSocket != null) { - serverSocket.close(); + Util.closeQuietly(serverSocket); this.serverSocket = null; } } diff --git a/okhttp-protocols/src/test/java/com/squareup/okhttp/internal/spdy/SpdyConnectionTest.java b/okhttp-protocols/src/test/java/com/squareup/okhttp/internal/spdy/SpdyConnectionTest.java index 8f29368f5..c7f39361e 100644 --- a/okhttp-protocols/src/test/java/com/squareup/okhttp/internal/spdy/SpdyConnectionTest.java +++ b/okhttp-protocols/src/test/java/com/squareup/okhttp/internal/spdy/SpdyConnectionTest.java @@ -62,7 +62,7 @@ public final class SpdyConnectionTest { throw new AssertionError(); } }; - private final MockSpdyPeer peer = new MockSpdyPeer(SPDY3, false); + private final MockSpdyPeer peer = new MockSpdyPeer(); @After public void tearDown() throws Exception { peer.close(); @@ -173,7 +173,7 @@ public final class SpdyConnectionTest { } private MockSpdyPeer.InFrame replyWithNoData(Variant variant) throws Exception { - MockSpdyPeer peer = new MockSpdyPeer(variant, false); + peer.setVariantAndClient(variant, false); // write the mocking script peer.sendFrame().synStream(false, false, 2, 0, 0, 0, headerEntries("a", "android")); peer.acceptFrame(); // SYN_REPLY @@ -230,7 +230,7 @@ public final class SpdyConnectionTest { } @Test public void serverPingsClientHttp2() throws Exception { - MockSpdyPeer peer = new MockSpdyPeer(HTTP_20_DRAFT_09, false); + peer.setVariantAndClient(HTTP_20_DRAFT_09, false); // write the mocking script peer.sendFrame().ping(false, 2, 3); @@ -270,7 +270,7 @@ public final class SpdyConnectionTest { } @Test public void clientPingsServerHttp2() throws Exception { - MockSpdyPeer peer = new MockSpdyPeer(HTTP_20_DRAFT_09, false); + peer.setVariantAndClient(HTTP_20_DRAFT_09, false); // write the mocking script peer.acceptFrame(); // PING @@ -292,13 +292,13 @@ public final class SpdyConnectionTest { } @Test public void peerHttp2ServerLowersInitialWindowSize() throws Exception { - boolean client = false; // Peer is server, so we are client. + peer.setVariantAndClient(HTTP_20_DRAFT_09, false); + Settings initial = new Settings(); initial.set(Settings.INITIAL_WINDOW_SIZE, PERSIST_VALUE, 1684); Settings shouldntImpactConnection = new Settings(); shouldntImpactConnection.set(Settings.INITIAL_WINDOW_SIZE, PERSIST_VALUE, 3368); - MockSpdyPeer peer = new MockSpdyPeer(HTTP_20_DRAFT_09, client); peer.sendFrame().settings(initial); peer.acceptFrame(); // ACK peer.sendFrame().settings(shouldntImpactConnection); @@ -815,7 +815,7 @@ public final class SpdyConnectionTest { } private void receiveGoAway(Variant variant) throws Exception { - MockSpdyPeer peer = new MockSpdyPeer(variant, false); + peer.setVariantAndClient(variant, false); // write the mocking script peer.acceptFrame(); // SYN_STREAM 1 @@ -1059,7 +1059,8 @@ public final class SpdyConnectionTest { private void readSendsWindowUpdate(Variant variant) throws IOException, InterruptedException { - MockSpdyPeer peer = new MockSpdyPeer(variant, false); + peer.setVariantAndClient(variant, false); + int windowUpdateThreshold = INITIAL_WINDOW_SIZE / 2; // Write the mocking script. @@ -1118,7 +1119,7 @@ public final class SpdyConnectionTest { private void serverSendsEmptyDataClientDoesntSendWindowUpdate(Variant variant) throws IOException, InterruptedException { - MockSpdyPeer peer = new MockSpdyPeer(variant, false); + peer.setVariantAndClient(variant, false); // Write the mocking script. peer.acceptFrame(); // SYN_STREAM @@ -1147,7 +1148,7 @@ public final class SpdyConnectionTest { private void clientSendsEmptyDataServerDoesntSendWindowUpdate(Variant variant) throws IOException, InterruptedException { - MockSpdyPeer peer = new MockSpdyPeer(variant, false); + peer.setVariantAndClient(variant, false); // Write the mocking script. peer.acceptFrame(); // SYN_STREAM @@ -1324,7 +1325,7 @@ public final class SpdyConnectionTest { * prevents us from overrunning the max frame size of SPDY/3 or HTTP/2. */ @Test public void spdyStreamOutputBufferSizeLimitsDataFrameLength() throws Exception { - MockSpdyPeer peer = new MockSpdyPeer(HTTP_20_DRAFT_09, false); + peer.setVariantAndClient(HTTP_20_DRAFT_09, false); byte[] buff = new byte[SpdyStream.OUTPUT_BUFFER_SIZE * 2]; Arrays.fill(buff, (byte) '*'); @@ -1381,7 +1382,7 @@ public final class SpdyConnectionTest { // TODO: change this to only cancel when local settings disable push @Test public void pushPromiseStreamsAutomaticallyCancel() throws Exception { - MockSpdyPeer peer = new MockSpdyPeer(HTTP_20_DRAFT_09, false); + peer.setVariantAndClient(HTTP_20_DRAFT_09, false); // write the mocking script peer.sendFrame().pushPromise(1, 2, Arrays.asList( @@ -1408,7 +1409,7 @@ public final class SpdyConnectionTest { private SpdyConnection sendHttp2SettingsAndCheckForAck(boolean client, Settings settings) throws IOException, InterruptedException { - MockSpdyPeer peer = new MockSpdyPeer(HTTP_20_DRAFT_09, client); + peer.setVariantAndClient(HTTP_20_DRAFT_09, client); peer.sendFrame().settings(settings); peer.acceptFrame(); // ACK peer.play(); @@ -1421,7 +1422,6 @@ public final class SpdyConnectionTest { assertEquals(TYPE_SETTINGS, ackFrame.type); assertEquals(0, ackFrame.streamId); assertTrue(ackFrame.ack); - peer.close(); return connection; } diff --git a/okhttp/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java b/okhttp/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java index c02be45cf..99e7aa3a9 100644 --- a/okhttp/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java +++ b/okhttp/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java @@ -75,19 +75,19 @@ public final class ConnectionPoolTest { Route httpRoute = new Route(httpAddress, Proxy.NO_PROXY, httpSocketAddress, true); Route spdyRoute = new Route(spdyAddress, Proxy.NO_PROXY, spdySocketAddress, true); httpA = new Connection(httpRoute); - httpA.connect(100, 100, null); + httpA.connect(200, 200, null); httpB = new Connection(httpRoute); - httpB.connect(100, 100, null); + httpB.connect(200, 200, null); httpC = new Connection(httpRoute); - httpC.connect(100, 100, null); + httpC.connect(200, 200, null); httpD = new Connection(httpRoute); - httpD.connect(100, 100, null); + httpD.connect(200, 200, null); httpE = new Connection(httpRoute); - httpE.connect(100, 100, null); + httpE.connect(200, 200, null); spdyA = new Connection(spdyRoute); - spdyA.connect(100, 100, null); + spdyA.connect(200, 200, null); spdyB = new Connection(spdyRoute); - spdyB.connect(100, 100, null); + spdyB.connect(200, 200, null); } @After public void tearDown() throws Exception { @@ -109,7 +109,7 @@ public final class ConnectionPoolTest { assertNull(connection); connection = new Connection(new Route(httpAddress, Proxy.NO_PROXY, httpSocketAddress, true)); - connection.connect(100, 100, null); + connection.connect(200, 200, null); assertEquals(0, pool.getConnectionCount()); pool.recycle(connection); assertEquals(1, pool.getConnectionCount()); diff --git a/okhttp/src/test/java/com/squareup/okhttp/internal/http/HttpOverSpdyTest.java b/okhttp/src/test/java/com/squareup/okhttp/internal/http/HttpOverSpdyTest.java index b22520a1d..83cabdece 100644 --- a/okhttp/src/test/java/com/squareup/okhttp/internal/http/HttpOverSpdyTest.java +++ b/okhttp/src/test/java/com/squareup/okhttp/internal/http/HttpOverSpdyTest.java @@ -34,7 +34,6 @@ import java.net.Authenticator; import java.net.CookieManager; import java.net.HttpURLConnection; import java.net.URL; -import java.net.URLConnection; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -80,6 +79,7 @@ public abstract class HttpOverSpdyTest { private final MockWebServer server = new MockWebServer(); private final String hostName = server.getHostName(); private final OkHttpClient client = new OkHttpClient(); + private HttpURLConnection connection; private HttpResponseCache cache; @Before public void setUp() throws Exception { @@ -102,7 +102,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(response); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); assertContent("ABCDE", connection, Integer.MAX_VALUE); assertEquals(200, connection.getResponseCode()); assertEquals("Sweet", connection.getResponseMessage()); @@ -117,7 +117,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(new MockResponse()); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); assertEquals(-1, connection.getInputStream().read()); } @@ -129,7 +129,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(response); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); connection.setDoOutput(true); connection.getOutputStream().write(postBytes); assertContent("ABCDE", connection, Integer.MAX_VALUE); @@ -145,7 +145,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(response); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); connection.setRequestProperty("Content-Length", String.valueOf(postBytes.length)); connection.setDoOutput(true); connection.getOutputStream().write(postBytes); @@ -162,7 +162,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(response); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); connection.setRequestProperty("Content-Length", String.valueOf(postBytes.length)); connection.setDoOutput(true); connection.getOutputStream().write(postBytes); // push bytes into SpdyDataOutputStream.buffer @@ -181,7 +181,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(response); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); connection.setFixedLengthStreamingMode(postBytes.length); connection.setDoOutput(true); connection.getOutputStream().write(postBytes); @@ -237,7 +237,7 @@ public abstract class HttpOverSpdyTest { server.play(); Authenticator.setDefault(new RecordingAuthenticator()); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("Successful auth!", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); RecordedRequest denied = server.takeRequest(); @@ -255,7 +255,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(new MockResponse().setBody("This is the new location!")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertContent("This is the new location!", connection, Integer.MAX_VALUE); RecordedRequest request1 = server.takeRequest(); @@ -268,7 +268,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(new MockResponse().setBody("ABC")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); InputStream in = connection.getInputStream(); assertEquals("ABC", readAscii(in, 3)); assertEquals(-1, in.read()); @@ -280,7 +280,7 @@ public abstract class HttpOverSpdyTest { server.enqueue(new MockResponse().setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setReadTimeout(1000); assertContent("A", connection, Integer.MAX_VALUE); } @@ -341,12 +341,12 @@ public abstract class HttpOverSpdyTest { server.enqueue(new MockResponse().addHeader("cache-control: max-age=60").setBody("EFGH")); server.play(); - URLConnection connection1 = client.open(server.getUrl("/")); + HttpURLConnection connection1 = client.open(server.getUrl("/")); InputStream in1 = connection1.getInputStream(); assertEquals("AB", readAscii(in1, 2)); in1.close(); - URLConnection connection2 = client.open(server.getUrl("/")); + HttpURLConnection connection2 = client.open(server.getUrl("/")); InputStream in2 = connection2.getInputStream(); assertEquals("ABCD", readAscii(in2, Integer.MAX_VALUE)); in2.close(); @@ -378,11 +378,10 @@ public abstract class HttpOverSpdyTest { assertTrue(collection.toString(), collection.contains(value)); } - private void assertContent(String expected, URLConnection connection, int limit) + private void assertContent(String expected, HttpURLConnection connection, int limit) throws IOException { connection.connect(); assertEquals(expected, readAscii(connection.getInputStream(), limit)); - ((HttpURLConnection) connection).disconnect(); } private void assertContainsNoneMatching(List headers, String pattern) { diff --git a/okhttp/src/test/java/com/squareup/okhttp/internal/http/URLConnectionTest.java b/okhttp/src/test/java/com/squareup/okhttp/internal/http/URLConnectionTest.java index 117970210..d9d3d3d2f 100644 --- a/okhttp/src/test/java/com/squareup/okhttp/internal/http/URLConnectionTest.java +++ b/okhttp/src/test/java/com/squareup/okhttp/internal/http/URLConnectionTest.java @@ -98,6 +98,7 @@ public final class URLConnectionTest { private MockWebServer server2 = new MockWebServer(); private final OkHttpClient client = new OkHttpClient(); + private HttpURLConnection connection; private HttpResponseCache cache; private String hostName; @@ -125,12 +126,12 @@ public final class URLConnectionTest { server.enqueue(new MockResponse()); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); - urlConnection.addRequestProperty("D", "e"); - urlConnection.addRequestProperty("D", "f"); - assertEquals("f", urlConnection.getRequestProperty("D")); - assertEquals("f", urlConnection.getRequestProperty("d")); - Map> requestHeaders = urlConnection.getRequestProperties(); + connection = client.open(server.getUrl("/")); + connection.addRequestProperty("D", "e"); + connection.addRequestProperty("D", "f"); + assertEquals("f", connection.getRequestProperty("D")); + assertEquals("f", connection.getRequestProperty("d")); + Map> requestHeaders = connection.getRequestProperties(); assertEquals(newSet("e", "f"), new HashSet(requestHeaders.get("D"))); assertEquals(newSet("e", "f"), new HashSet(requestHeaders.get("d"))); try { @@ -144,21 +145,21 @@ public final class URLConnectionTest { } catch (UnsupportedOperationException expected) { } try { - urlConnection.setRequestProperty(null, "j"); + connection.setRequestProperty(null, "j"); fail(); } catch (NullPointerException expected) { } try { - urlConnection.addRequestProperty(null, "k"); + connection.addRequestProperty(null, "k"); fail(); } catch (NullPointerException expected) { } - urlConnection.setRequestProperty("NullValue", null); - assertNull(urlConnection.getRequestProperty("NullValue")); - urlConnection.addRequestProperty("AnotherNullValue", null); - assertNull(urlConnection.getRequestProperty("AnotherNullValue")); + connection.setRequestProperty("NullValue", null); + assertNull(connection.getRequestProperty("NullValue")); + connection.addRequestProperty("AnotherNullValue", null); + assertNull(connection.getRequestProperty("AnotherNullValue")); - urlConnection.getResponseCode(); + connection.getResponseCode(); RecordedRequest request = server.takeRequest(); assertContains(request.getHeaders(), "D: e"); assertContains(request.getHeaders(), "D: f"); @@ -168,17 +169,17 @@ public final class URLConnectionTest { assertContainsNoneMatching(request.getHeaders(), "null:.*"); try { - urlConnection.addRequestProperty("N", "o"); + connection.addRequestProperty("N", "o"); fail("Set header after connect"); } catch (IllegalStateException expected) { } try { - urlConnection.setRequestProperty("P", "q"); + connection.setRequestProperty("P", "q"); fail("Set header after connect"); } catch (IllegalStateException expected) { } try { - urlConnection.getRequestProperties(); + connection.getRequestProperties(); fail(); } catch (IllegalStateException expected) { } @@ -186,10 +187,10 @@ public final class URLConnectionTest { @Test public void getRequestPropertyReturnsLastValue() throws Exception { server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); - urlConnection.addRequestProperty("A", "value1"); - urlConnection.addRequestProperty("A", "value2"); - assertEquals("value2", urlConnection.getRequestProperty("A")); + connection = client.open(server.getUrl("/")); + connection.addRequestProperty("A", "value1"); + connection.addRequestProperty("A", "value2"); + assertEquals("value2", connection.getRequestProperty("A")); } @Test public void responseHeaders() throws IOException, InterruptedException { @@ -200,11 +201,11 @@ public final class URLConnectionTest { .setChunkedBody("ABCDE\nFGHIJ\nKLMNO\nPQR", 8)); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); - assertEquals(200, urlConnection.getResponseCode()); - assertEquals("Fantastic", urlConnection.getResponseMessage()); - assertEquals("HTTP/1.0 200 Fantastic", urlConnection.getHeaderField(null)); - Map> responseHeaders = urlConnection.getHeaderFields(); + connection = client.open(server.getUrl("/")); + assertEquals(200, connection.getResponseCode()); + assertEquals("Fantastic", connection.getResponseMessage()); + assertEquals("HTTP/1.0 200 Fantastic", connection.getHeaderField(null)); + Map> responseHeaders = connection.getHeaderFields(); assertEquals(Arrays.asList("HTTP/1.0 200 Fantastic"), responseHeaders.get(null)); assertEquals(newSet("c", "e"), new HashSet(responseHeaders.get("A"))); assertEquals(newSet("c", "e"), new HashSet(responseHeaders.get("a"))); @@ -218,21 +219,21 @@ public final class URLConnectionTest { fail("Modified an unmodifiable view."); } catch (UnsupportedOperationException expected) { } - assertEquals("A", urlConnection.getHeaderFieldKey(0)); - assertEquals("c", urlConnection.getHeaderField(0)); - assertEquals("B", urlConnection.getHeaderFieldKey(1)); - assertEquals("d", urlConnection.getHeaderField(1)); - assertEquals("A", urlConnection.getHeaderFieldKey(2)); - assertEquals("e", urlConnection.getHeaderField(2)); + assertEquals("A", connection.getHeaderFieldKey(0)); + assertEquals("c", connection.getHeaderField(0)); + assertEquals("B", connection.getHeaderFieldKey(1)); + assertEquals("d", connection.getHeaderField(1)); + assertEquals("A", connection.getHeaderFieldKey(2)); + assertEquals("e", connection.getHeaderField(2)); } @Test public void serverSendsInvalidResponseHeaders() throws Exception { server.enqueue(new MockResponse().setStatus("HTP/1.1 200 OK")); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { - urlConnection.getResponseCode(); + connection.getResponseCode(); fail(); } catch (IOException expected) { } @@ -242,9 +243,9 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setStatus("HTTP/1.1 2147483648 OK")); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { - urlConnection.getResponseCode(); + connection.getResponseCode(); fail(); } catch (IOException expected) { } @@ -254,9 +255,9 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setStatus("HTTP/1.1 00a OK")); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { - urlConnection.getResponseCode(); + connection.getResponseCode(); fail(); } catch (IOException expected) { } @@ -266,9 +267,9 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setStatus(" HTTP/1.1 2147483648 OK")); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { - urlConnection.getResponseCode(); + connection.getResponseCode(); fail(); } catch (IOException expected) { } @@ -279,7 +280,7 @@ public final class URLConnectionTest { URL url = server.getUrl("/foo"); server.shutdown(); - HttpURLConnection connection = client.open(url); + connection = client.open(url); try { connection.connect(); fail(); @@ -310,7 +311,7 @@ public final class URLConnectionTest { client.setProxySelector(proxySelector); server2.shutdown(); - HttpURLConnection connection = client.open(server.getUrl("/def")); + connection = client.open(server.getUrl("/def")); connection.setDoOutput(true); transferKind.setForRequest(connection, 4); connection.getOutputStream().write("body".getBytes("UTF-8")); @@ -322,14 +323,14 @@ public final class URLConnectionTest { @Test public void getErrorStreamOnSuccessfulRequest() throws Exception { server.enqueue(new MockResponse().setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertNull(connection.getErrorStream()); } @Test public void getErrorStreamOnUnsuccessfulRequest() throws Exception { server.enqueue(new MockResponse().setResponseCode(404).setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("A", readAscii(connection.getErrorStream(), Integer.MAX_VALUE)); } @@ -509,7 +510,7 @@ public final class URLConnectionTest { client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); assertContent("this response comes via HTTPS", connection); @@ -529,7 +530,7 @@ public final class URLConnectionTest { client.setSslSocketFactory(clientSocketFactory); client.setHostnameVerifier(hostnameVerifier); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertContent("this response comes via HTTPS", connection); connection = client.open(server.getUrl("/")); @@ -569,7 +570,7 @@ public final class URLConnectionTest { client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); assertContent("this response comes via SSL", connection); @@ -587,7 +588,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse()); // unused server.play(); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); try { connection.getInputStream(); fail(); @@ -615,7 +616,7 @@ public final class URLConnectionTest { server.play(); URL url = new URL("http://android.com/foo"); - HttpURLConnection connection = proxyConfig.connect(server, client, url); + connection = proxyConfig.connect(server, client, url); assertContent("this response comes via a proxy", connection); assertTrue(connection.usingProxy()); @@ -666,7 +667,7 @@ public final class URLConnectionTest { URL url = server.getUrl("/foo"); client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); - HttpURLConnection connection = proxyConfig.connect(server, client, url); + connection = proxyConfig.connect(server, client, url); assertContent("this response comes via HTTPS", connection); @@ -706,7 +707,7 @@ public final class URLConnectionTest { URL url = new URL("https://android.com/foo"); client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(hostnameVerifier); - HttpURLConnection connection = proxyConfig.connect(server, client, url); + connection = proxyConfig.connect(server, client, url); assertContent("this response comes via a secure proxy", connection); @@ -742,7 +743,7 @@ public final class URLConnectionTest { URL url = new URL("https://android.com/foo"); client.setSslSocketFactory(sslContext.getSocketFactory()); - HttpURLConnection connection = client.open(url); + connection = client.open(url); try { connection.getResponseCode(); @@ -781,7 +782,7 @@ public final class URLConnectionTest { URL url = new URL("https://android.com/foo"); client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(hostnameVerifier); - HttpURLConnection connection = client.open(url); + connection = client.open(url); connection.addRequestProperty("Private", "Secret"); connection.addRequestProperty("Proxy-Authorization", "bar"); connection.addRequestProperty("User-Agent", "baz"); @@ -813,7 +814,7 @@ public final class URLConnectionTest { URL url = new URL("https://android.com/foo"); client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); - HttpURLConnection connection = client.open(url); + connection = client.open(url); assertContent("A", connection); RecordedRequest connect1 = server.takeRequest(); @@ -843,7 +844,7 @@ public final class URLConnectionTest { URL url = new URL("https://android.com/foo"); client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); - HttpURLConnection connection = client.open(url); + connection = client.open(url); connection.setRequestProperty("Connection", "close"); assertContent("this response comes via a proxy", connection); @@ -872,7 +873,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("ABCDEFGHIJKLMNOPQR")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); InputStream in = connection.getInputStream(); assertEquals('A', (char) in.read()); connection.disconnect(); @@ -887,9 +888,8 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.disconnect(); - assertContent("A", connection); assertEquals(200, connection.getResponseCode()); } @@ -1120,15 +1120,15 @@ public final class URLConnectionTest { server.play(); - URLConnection connection1 = client.open(server.getUrl("/")); + HttpURLConnection connection1 = client.open(server.getUrl("/")); InputStream in1 = connection1.getInputStream(); assertEquals("ABCDE", readAscii(in1, 5)); - in1.close(); + connection1.disconnect(); HttpURLConnection connection2 = client.open(server.getUrl("/")); InputStream in2 = connection2.getInputStream(); assertEquals("LMNOP", readAscii(in2, 5)); - in2.close(); + connection2.disconnect(); assertEquals(0, server.takeRequest().getSequenceNumber()); assertEquals(1, server.takeRequest().getSequenceNumber()); // Connection is pooled! @@ -1166,12 +1166,12 @@ public final class URLConnectionTest { server.play(); String body = "ABCDEFGHIJKLMNOPQ"; - HttpURLConnection urlConnection = client.open(server.getUrl("/")); - urlConnection.setChunkedStreamingMode(0); // OkHttp does not honor specific chunk sizes. - urlConnection.setDoOutput(true); - OutputStream outputStream = urlConnection.getOutputStream(); + connection = client.open(server.getUrl("/")); + connection.setChunkedStreamingMode(0); // OkHttp does not honor specific chunk sizes. + connection.setDoOutput(true); + OutputStream outputStream = connection.getOutputStream(); outputStream.write(body.getBytes("US-ASCII")); - assertEquals(200, urlConnection.getResponseCode()); + assertEquals(200, connection.getResponseCode()); RecordedRequest request = server.takeRequest(); assertEquals(body, new String(request.getBody(), "US-ASCII")); @@ -1194,7 +1194,7 @@ public final class URLConnectionTest { server.play(); Authenticator.setDefault(new RecordingAuthenticator()); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setDoOutput(true); byte[] requestBody = { 'A', 'B', 'C', 'D' }; if (streamingMode == StreamingMode.FIXED_LENGTH) { @@ -1278,7 +1278,6 @@ public final class URLConnectionTest { server.enqueue(pleaseAuthenticate); server.play(); - HttpURLConnection connection; if (proxy) { client.setProxy(server.toProxyAddress()); connection = client.open(new URL("http://android.com")); @@ -1301,7 +1300,7 @@ public final class URLConnectionTest { } private void assertValidRequestMethod(String requestMethod) throws Exception { - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setRequestMethod(requestMethod); assertEquals(requestMethod, connection.getRequestMethod()); } @@ -1317,7 +1316,7 @@ public final class URLConnectionTest { } private void assertInvalidRequestMethod(String requestMethod) throws Exception { - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { connection.setRequestMethod(requestMethod); fail(); @@ -1345,7 +1344,7 @@ public final class URLConnectionTest { .addHeader("icy-metaint:16000") .setBody("mp3 data")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals(200, connection.getResponseCode()); assertEquals("OK", connection.getResponseMessage()); assertContent("mp3 data", connection); @@ -1353,7 +1352,7 @@ public final class URLConnectionTest { @Test public void cannotSetNegativeFixedLengthStreamingMode() throws Exception { server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { connection.setFixedLengthStreamingMode(-2); fail(); @@ -1363,14 +1362,14 @@ public final class URLConnectionTest { @Test public void canSetNegativeChunkedStreamingMode() throws Exception { server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setChunkedStreamingMode(-2); } @Test public void cannotSetFixedLengthStreamingModeAfterConnect() throws Exception { server.enqueue(new MockResponse().setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("A", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); try { connection.setFixedLengthStreamingMode(1); @@ -1382,7 +1381,7 @@ public final class URLConnectionTest { @Test public void cannotSetChunkedStreamingModeAfterConnect() throws Exception { server.enqueue(new MockResponse().setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("A", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); try { connection.setChunkedStreamingMode(1); @@ -1393,7 +1392,7 @@ public final class URLConnectionTest { @Test public void cannotSetFixedLengthStreamingModeAfterChunkedStreamingMode() throws Exception { server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setChunkedStreamingMode(1); try { connection.setFixedLengthStreamingMode(1); @@ -1404,7 +1403,7 @@ public final class URLConnectionTest { @Test public void cannotSetChunkedStreamingModeAfterFixedLengthStreamingMode() throws Exception { server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setFixedLengthStreamingMode(1); try { connection.setChunkedStreamingMode(1); @@ -1432,7 +1431,7 @@ public final class URLConnectionTest { client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setDoOutput(true); byte[] requestBody = { 'A', 'B', 'C', 'D' }; if (streamingMode == StreamingMode.FIXED_LENGTH) { @@ -1472,7 +1471,7 @@ public final class URLConnectionTest { server.play(); Authenticator.setDefault(new RecordingAuthenticator()); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setDoOutput(true); byte[] requestBody = { 'A', 'B', 'C', 'D' }; OutputStream outputStream = connection.getOutputStream(); @@ -1507,7 +1506,7 @@ public final class URLConnectionTest { server.play(); Authenticator.setDefault(new RecordingAuthenticator()); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("Successful auth!", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); // no authorization header for the first request... @@ -1532,7 +1531,7 @@ public final class URLConnectionTest { server.play(); Authenticator.setDefault(new RecordingAuthenticator()); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("Successful auth!", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); } @@ -1579,7 +1578,7 @@ public final class URLConnectionTest { client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("This is the new location!", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); @@ -1600,7 +1599,7 @@ public final class URLConnectionTest { client.setFollowProtocolRedirects(false); client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("This page has moved!", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); } @@ -1611,7 +1610,7 @@ public final class URLConnectionTest { server.play(); client.setFollowProtocolRedirects(false); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("This page has moved!", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); } @@ -1652,7 +1651,7 @@ public final class URLConnectionTest { client.setSslSocketFactory(sslContext.getSocketFactory()); client.setHostnameVerifier(new RecordingHostnameVerifier()); client.setFollowProtocolRedirects(true); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertContent("This is secure HTTPS!", connection); assertFalse(connection instanceof HttpsURLConnection); } @@ -1685,7 +1684,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("This is the first server again!")); server.play(); - URLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertContent("This is the 2nd server!", connection); assertEquals(server2.getUrl("/"), connection.getURL()); @@ -1755,7 +1754,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("Page 2")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/page1")); + connection = client.open(server.getUrl("/page1")); connection.setDoOutput(true); byte[] requestBody = { 'A', 'B', 'C', 'D' }; OutputStream outputStream = connection.getOutputStream(); @@ -1779,7 +1778,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("Page 2")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/page1")); + connection = client.open(server.getUrl("/page1")); connection.setDoOutput(true); connection.addRequestProperty("Content-Length", "4"); connection.addRequestProperty("Content-Type", "text/plain; charset=utf-8"); @@ -1805,7 +1804,7 @@ public final class URLConnectionTest { .setBody("This page has moved!")); server.enqueue(new MockResponse().setBody("Proxy Response")); - HttpURLConnection connection = client.open(server.getUrl("/foo")); + connection = client.open(server.getUrl("/foo")); // Fails on the RI, which gets "Proxy Response" assertEquals("This page has moved!", readAscii(connection.getInputStream(), Integer.MAX_VALUE)); @@ -1841,7 +1840,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("Page 2")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/page1")); + connection = client.open(server.getUrl("/page1")); connection.setRequestMethod(method); byte[] requestBody = { 'A', 'B', 'C', 'D' }; if (method.equals("POST")) { @@ -1887,7 +1886,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("Success!")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/0")); + connection = client.open(server.getUrl("/0")); assertContent("Success!", connection); assertEquals(server.getUrl("/20"), connection.getURL()); } @@ -1900,7 +1899,7 @@ public final class URLConnectionTest { } server.play(); - HttpURLConnection connection = client.open(server.getUrl("/0")); + connection = client.open(server.getUrl("/0")); try { connection.getInputStream(); fail(); @@ -1945,9 +1944,9 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("unused")); // to keep the server alive server.play(); - URLConnection urlConnection = client.open(server.getUrl("/")); - urlConnection.setReadTimeout(1000); - InputStream in = urlConnection.getInputStream(); + URLConnection connection = client.open(server.getUrl("/")); + connection.setReadTimeout(1000); + InputStream in = connection.getInputStream(); assertEquals('A', in.read()); assertEquals('B', in.read()); assertEquals('C', in.read()); @@ -1962,11 +1961,11 @@ public final class URLConnectionTest { server.enqueue(new MockResponse()); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); - urlConnection.setRequestProperty("Transfer-encoding", "chunked"); - urlConnection.setDoOutput(true); - urlConnection.getOutputStream().write("ABC".getBytes("UTF-8")); - assertEquals(200, urlConnection.getResponseCode()); + connection = client.open(server.getUrl("/")); + connection.setRequestProperty("Transfer-encoding", "chunked"); + connection.setDoOutput(true); + connection.getOutputStream().write("ABC".getBytes("UTF-8")); + assertEquals(200, connection.getResponseCode()); RecordedRequest request = server.takeRequest(); assertEquals("ABC", new String(request.getBody(), "UTF-8")); @@ -2053,7 +2052,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody(new byte[] { -2, -1 })); server.play(); - URLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); InputStream in = connection.getInputStream(); assertEquals(254, in.read()); assertEquals(255, in.read()); @@ -2081,7 +2080,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("abc")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setDoOutput(true); byte[] upload = "def".getBytes("UTF-8"); @@ -2112,7 +2111,7 @@ public final class URLConnectionTest { } server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { connection.getInputStream(); fail(); @@ -2127,7 +2126,7 @@ public final class URLConnectionTest { } @Test public void dnsFailureThrowsIOException() throws IOException { - HttpURLConnection connection = client.open(new URL("http://host.unlikelytld")); + connection = client.open(new URL("http://host.unlikelytld")); try { connection.connect(); fail(); @@ -2136,7 +2135,7 @@ public final class URLConnectionTest { } @Test public void malformedUrlThrowsUnknownHostException() throws IOException { - HttpURLConnection connection = client.open(new URL("http:///foo.html")); + connection = client.open(new URL("http:///foo.html")); try { connection.connect(); fail(); @@ -2150,11 +2149,10 @@ public final class URLConnectionTest { server.play(); // The request should work once and then fail - URLConnection connection1 = client.open(server.getUrl("")); + HttpURLConnection connection1 = client.open(server.getUrl("")); connection1.setReadTimeout(100); InputStream input = connection1.getInputStream(); assertEquals("ABC", readAscii(input, Integer.MAX_VALUE)); - input.close(); server.shutdown(); try { HttpURLConnection connection2 = client.open(server.getUrl("")); @@ -2192,7 +2190,7 @@ public final class URLConnectionTest { .setSocketPolicy(SocketPolicy.DISCONNECT_AT_END)); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); InputStream in = connection.getInputStream(); assertEquals("ABC", readAscii(in, 3)); assertEquals(-1, in.read()); @@ -2202,7 +2200,7 @@ public final class URLConnectionTest { @Test public void getContent() throws Exception { server.enqueue(new MockResponse().addHeader("Content-Type: text/plain").setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); InputStream in = (InputStream) connection.getContent(); assertEquals("A", readAscii(in, Integer.MAX_VALUE)); } @@ -2210,7 +2208,7 @@ public final class URLConnectionTest { @Test public void getContentOfType() throws Exception { server.enqueue(new MockResponse().addHeader("Content-Type: text/plain").setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { connection.getContent(null); fail(); @@ -2222,13 +2220,12 @@ public final class URLConnectionTest { } catch (NullPointerException expected) { } assertNull(connection.getContent(new Class[] { getClass() })); - connection.disconnect(); } @Test public void getOutputStreamOnGetFails() throws Exception { server.enqueue(new MockResponse()); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { connection.getOutputStream(); fail(); @@ -2239,7 +2236,7 @@ public final class URLConnectionTest { @Test public void getOutputAfterGetInputStreamFails() throws Exception { server.enqueue(new MockResponse()); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setDoOutput(true); try { connection.getInputStream(); @@ -2252,7 +2249,7 @@ public final class URLConnectionTest { @Test public void setDoOutputOrDoInputAfterConnectFails() throws Exception { server.enqueue(new MockResponse()); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.connect(); try { connection.setDoOutput(true); @@ -2264,13 +2261,12 @@ public final class URLConnectionTest { fail(); } catch (IllegalStateException expected) { } - connection.disconnect(); } @Test public void clientSendsContentLength() throws Exception { server.enqueue(new MockResponse().setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setDoOutput(true); OutputStream out = connection.getOutputStream(); out.write(new byte[] { 'A', 'B', 'C' }); @@ -2283,25 +2279,22 @@ public final class URLConnectionTest { @Test public void getContentLengthConnects() throws Exception { server.enqueue(new MockResponse().setBody("ABC")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals(3, connection.getContentLength()); - connection.disconnect(); } @Test public void getContentTypeConnects() throws Exception { server.enqueue(new MockResponse().addHeader("Content-Type: text/plain").setBody("ABC")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("text/plain", connection.getContentType()); - connection.disconnect(); } @Test public void getContentEncodingConnects() throws Exception { server.enqueue(new MockResponse().addHeader("Content-Encoding: identity").setBody("ABC")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); assertEquals("identity", connection.getContentEncoding()); - connection.disconnect(); } // http://b/4361656 @@ -2333,7 +2326,7 @@ public final class URLConnectionTest { transferKind.setBody(response, body, 4); server.enqueue(response); server.play(); - URLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); InputStream in = connection.getInputStream(); for (int i = 0; i < body.length(); i++) { assertTrue(in.available() >= 0); @@ -2380,7 +2373,7 @@ public final class URLConnectionTest { byte[] requestBody = new byte[requestSize]; new Random(0).nextBytes(requestBody); - HttpURLConnection connection = client.open(server.getUrl("/b")); + connection = client.open(server.getUrl("/b")); connection.setRequestMethod("POST"); transferKind.setForRequest(connection, requestBody.length); for (int i = 0; i < requestBody.length; i += 1024) { @@ -2400,7 +2393,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/b")); + connection = client.open(server.getUrl("/b")); connection.setRequestProperty("Content-Length", "4"); connection.setRequestMethod("POST"); OutputStream out = connection.getOutputStream(); @@ -2418,7 +2411,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("A")); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/b")); + connection = client.open(server.getUrl("/b")); connection.setRequestProperty("Content-Length", "3"); connection.setRequestMethod("POST"); OutputStream out = connection.getOutputStream(); @@ -2459,26 +2452,26 @@ public final class URLConnectionTest { @Test public void emptyRequestHeaderValueIsAllowed() throws Exception { server.enqueue(new MockResponse().setBody("body")); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); - urlConnection.addRequestProperty("B", ""); - assertContent("body", urlConnection); - assertEquals("", urlConnection.getRequestProperty("B")); + connection = client.open(server.getUrl("/")); + connection.addRequestProperty("B", ""); + assertContent("body", connection); + assertEquals("", connection.getRequestProperty("B")); } @Test public void emptyResponseHeaderValueIsAllowed() throws Exception { server.enqueue(new MockResponse().addHeader("A:").setBody("body")); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); - assertContent("body", urlConnection); - assertEquals("", urlConnection.getHeaderField("A")); + connection = client.open(server.getUrl("/")); + assertContent("body", connection); + assertEquals("", connection.getHeaderField("A")); } @Test public void emptyRequestHeaderNameIsStrict() throws Exception { server.enqueue(new MockResponse().setBody("body")); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); try { - urlConnection.setRequestProperty("", "A"); + connection.setRequestProperty("", "A"); fail(); } catch (IllegalArgumentException expected) { } @@ -2487,9 +2480,9 @@ public final class URLConnectionTest { @Test public void emptyResponseHeaderNameIsLenient() throws Exception { server.enqueue(new MockResponse().addHeader(":A").setBody("body")); server.play(); - HttpURLConnection urlConnection = client.open(server.getUrl("/")); - urlConnection.getResponseCode(); - assertEquals("A", urlConnection.getHeaderField("")); + connection = client.open(server.getUrl("/")); + connection.getResponseCode(); + assertEquals("A", connection.getHeaderField("")); } @Test @Ignore public void deflateCompression() { @@ -2541,7 +2534,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse().setBody("A")); server.play(); client.setProtocols(Arrays.asList(Protocol.HTTP_11, protocol)); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); List protocolValues = connection.getHeaderFields().get(SELECTED_PROTOCOL); assertEquals(Arrays.asList(protocol.name.utf8()), protocolValues); assertContent("A", connection); @@ -2581,7 +2574,7 @@ public final class URLConnectionTest { throws IOException, InterruptedException { server.enqueue(new MockResponse()); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setRequestProperty("Content-Length", "0"); connection.setRequestMethod(method); connection.setFixedLengthStreamingMode(0); @@ -2621,7 +2614,7 @@ public final class URLConnectionTest { server.enqueue(new MockResponse()); server.play(); - HttpURLConnection connection = client.open(server.getUrl("/")); + connection = client.open(server.getUrl("/")); connection.setDoOutput(true); long contentLength = Integer.MAX_VALUE + 1L; connection.setFixedLengthStreamingMode(contentLength); @@ -2656,12 +2649,10 @@ public final class URLConnectionTest { HttpURLConnection connection1 = client.open(server.getUrl("/")); assertEquals(HttpURLConnection.HTTP_NOT_MODIFIED, connection1.getResponseCode()); assertContent("", connection1); - connection1.getInputStream().close(); HttpURLConnection connection2 = client.open(server.getUrl("/")); assertEquals(HttpURLConnection.HTTP_OK, connection2.getResponseCode()); assertContent("b", connection2); - connection2.getInputStream().close(); RecordedRequest requestA = server.takeRequest(); assertEquals(0, requestA.getSequenceNumber()); @@ -2683,14 +2674,13 @@ public final class URLConnectionTest { * Reads at most {@code limit} characters from {@code in} and asserts that * content equals {@code expected}. */ - private void assertContent(String expected, URLConnection connection, int limit) + private void assertContent(String expected, HttpURLConnection connection, int limit) throws IOException { connection.connect(); assertEquals(expected, readAscii(connection.getInputStream(), limit)); - ((HttpURLConnection) connection).disconnect(); } - private void assertContent(String expected, URLConnection connection) throws IOException { + private void assertContent(String expected, HttpURLConnection connection) throws IOException { assertContent(expected, connection, Integer.MAX_VALUE); } diff --git a/pom.xml b/pom.xml index bc32950e1..a4ab7ea59 100644 --- a/pom.xml +++ b/pom.xml @@ -37,7 +37,7 @@ 4.2.2 - 4.10 + 4.11 @@ -105,10 +105,17 @@ org.apache.maven.plugins maven-surefire-plugin - 2.9 + 2.16 -Xbootclasspath/p:${settings.localRepository}/org/mortbay/jetty/npn/npn-boot/${npn.version}/npn-boot-${npn.version}.jar + + + org.apache.maven.surefire + surefire-junit47 + 2.16 + +