aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Becker2013-08-30 06:39:40 (EDT)
committerThomas Becker2013-08-30 11:16:14 (EDT)
commitb370da6783f9d3ebf5d26e74cfa62bef064a17e1 (patch)
tree7a4ec32e21995b55252c52e4b5e7328407c99f78
parent4358302ce0fdc5c85805a27e01b4ddeb29dfef5e (diff)
downloadorg.eclipse.jetty.project-b370da6783f9d3ebf5d26e74cfa62bef064a17e1.zip
org.eclipse.jetty.project-b370da6783f9d3ebf5d26e74cfa62bef064a17e1.tar.gz
org.eclipse.jetty.project-b370da6783f9d3ebf5d26e74cfa62bef064a17e1.tar.bz2
415548 migrate ProxyHTTPToSPDYTest to use HttpClient to avoid intermittent NPE
-rw-r--r--jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPToSPDYTest.java82
1 files changed, 25 insertions, 57 deletions
diff --git a/jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPToSPDYTest.java b/jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPToSPDYTest.java
index bcb46a9..fdb4359 100644
--- a/jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPToSPDYTest.java
+++ b/jetty-spdy/spdy-http-server/src/test/java/org/eclipse/jetty/spdy/server/proxy/ProxyHTTPToSPDYTest.java
@@ -29,6 +29,10 @@ import java.util.Collection;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import org.eclipse.jetty.client.HttpClient;
+import org.eclipse.jetty.client.api.ContentResponse;
+import org.eclipse.jetty.client.api.Request;
+import org.eclipse.jetty.client.util.StringContentProvider;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.spdy.api.BytesDataInfo;
@@ -63,6 +67,9 @@ import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
@RunWith(Parameterized.class)
public class ProxyHTTPToSPDYTest
{
@@ -82,6 +89,7 @@ public class ProxyHTTPToSPDYTest
};
private final short version;
+ private HttpClient httpClient;
@Parameterized.Parameters
public static Collection<Short[]> parameters()
@@ -118,7 +126,7 @@ public class ProxyHTTPToSPDYTest
proxyEngineSelector.putProxyEngine("spdy/" + version, spdyProxyEngine);
proxyEngineSelector.putProxyServerInfo("localhost", new ProxyEngineSelector.ProxyServerInfo("spdy/" + version, address.getHostName(), address.getPort()));
proxyConnector = new HTTPSPDYProxyServerConnector(proxy, proxyEngineSelector);
- proxyConnector.setPort(0);
+ proxyConnector.setPort(9999);
proxy.addConnector(proxyConnector);
proxy.start();
return new InetSocketAddress("localhost", proxyConnector.getLocalPort());
@@ -129,6 +137,8 @@ public class ProxyHTTPToSPDYTest
{
factory = new SPDYClient.Factory();
factory.start();
+ httpClient = new HttpClient();
+ httpClient.start();
}
@After
@@ -170,26 +180,11 @@ public class ProxyHTTPToSPDYTest
}
}));
- Socket client = new Socket();
- client.connect(proxyAddress);
- OutputStream output = client.getOutputStream();
+ Request request = httpClient.newRequest("localhost", proxyAddress.getPort()).method("GET");
+ request.header("Connection", "close");
+ ContentResponse response = request.send();
- String request = "" +
- "GET / HTTP/1.1\r\n" +
- "Host: localhost:" + proxyAddress.getPort() + "\r\n" +
- "\r\n";
- output.write(request.getBytes("UTF-8"));
- output.flush();
-
- InputStream input = client.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8"));
- String line = reader.readLine();
- Assert.assertTrue(line.contains(" 200"));
- while (line.length() > 0)
- line = reader.readLine();
- Assert.assertFalse(reader.ready());
-
- client.close();
+ assertThat("response status is 200 OK", response.getStatus(), is(200));
// Must not close, other clients may still be connected
Assert.assertFalse(closeLatch.await(1, TimeUnit.SECONDS));
@@ -422,7 +417,8 @@ public class ProxyHTTPToSPDYTest
@Test
public void testPOSTWithSmallRequestContentThenSmallResponseContent() throws Exception
{
- final byte[] data = "0123456789ABCDEF".getBytes("UTF-8");
+ String dataString = "0123456789ABCDEF";
+ final byte[] data = dataString.getBytes("UTF-8");
InetSocketAddress proxyAddress = startProxy(startServer(new ServerSessionFrameListener.Adapter()
{
@Override
@@ -449,44 +445,16 @@ public class ProxyHTTPToSPDYTest
}
}));
- Socket client = new Socket();
- client.connect(proxyAddress);
- OutputStream output = client.getOutputStream();
-
- String request = "" +
- "POST / HTTP/1.1\r\n" +
- "Host: localhost:" + proxyAddress.getPort() + "\r\n" +
- "Content-Length: " + data.length + "\r\n" +
- "Content-Type: application/octet-stream\r\n" +
- "\r\n";
- output.write(request.getBytes("UTF-8"));
- output.write(data);
- output.flush();
-
- InputStream input = client.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8"));
- String line = reader.readLine();
- Assert.assertTrue(line.contains(" 200"));
- while (line.length() > 0)
- line = reader.readLine();
- for (byte datum : data)
- Assert.assertEquals(datum, reader.read());
- Assert.assertFalse(reader.ready());
+ ContentResponse response = httpClient.POST("http://localhost:" + proxyAddress.getPort() + "/").content(new
+ StringContentProvider(dataString)).send();
+ assertThat("response status is 200 OK", response.getStatus(), is(200));
+ assertThat("response content matches expected dataString", response.getContentAsString(), is(dataString));
// Perform another request so that we are sure we reset the states of parsers and generators
- output.write(request.getBytes("UTF-8"));
- output.write(data);
- output.flush();
-
- line = reader.readLine();
- Assert.assertTrue(line.contains(" 200"));
- while (line.length() > 0)
- line = reader.readLine();
- for (byte datum : data)
- Assert.assertEquals(datum, reader.read());
- Assert.assertFalse(reader.ready());
-
- client.close();
+ response = httpClient.POST("http://localhost:" + proxyAddress.getPort() + "/").content(new
+ StringContentProvider(dataString)).send();
+ assertThat("response status is 200 OK", response.getStatus(), is(200));
+ assertThat("response content matches expected dataString", response.getContentAsString(), is(dataString));
}
@Test