1
0
mirror of https://github.com/square/okhttp.git synced 2026-01-24 04:02:07 +03:00

Merge pull request #490 from adriancole/close-test-peers

Use latest junit maven config and close test resources
This commit is contained in:
Adrian Cole
2014-01-27 14:05:01 -08:00
7 changed files with 198 additions and 198 deletions

View File

@@ -3,5 +3,8 @@ language: java
notifications:
email: false
before_install:
- mvn -version
jdk:
- oraclejdk7

View File

@@ -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<OutFrame> outFrames = new ArrayList<OutFrame>();
private final BlockingQueue<InFrame> inFrames = new LinkedBlockingQueue<InFrame>();
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;
}
}

View File

@@ -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;
}

View File

@@ -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());

View File

@@ -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<String> headers, String pattern) {

View File

@@ -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<String, List<String>> 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<String, List<String>> requestHeaders = connection.getRequestProperties();
assertEquals(newSet("e", "f"), new HashSet<String>(requestHeaders.get("D")));
assertEquals(newSet("e", "f"), new HashSet<String>(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<String, List<String>> 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<String, List<String>> responseHeaders = connection.getHeaderFields();
assertEquals(Arrays.asList("HTTP/1.0 200 Fantastic"), responseHeaders.get(null));
assertEquals(newSet("c", "e"), new HashSet<String>(responseHeaders.get("A")));
assertEquals(newSet("c", "e"), new HashSet<String>(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<String> 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);
}

11
pom.xml
View File

@@ -37,7 +37,7 @@
<apache.http.version>4.2.2</apache.http.version>
<!-- Test Dependencies -->
<junit.version>4.10</junit.version>
<junit.version>4.11</junit.version>
</properties>
<scm>
@@ -105,10 +105,17 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<version>2.16</version>
<configuration>
<argLine>-Xbootclasspath/p:${settings.localRepository}/org/mortbay/jetty/npn/npn-boot/${npn.version}/npn-boot-${npn.version}.jar</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.16</version>
</dependency>
</dependencies>
</plugin>
<plugin>