diff options
Diffstat (limited to 'jdisc_http_service/src/test/java/com')
8 files changed, 0 insertions, 1154 deletions
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/AbstractClientTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/AbstractClientTestCase.java deleted file mode 100644 index 1d5ab557cd1..00000000000 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/AbstractClientTestCase.java +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.jdisc.http.client; - -import com.yahoo.jdisc.HeaderFields; -import com.yahoo.jdisc.Request; -import com.yahoo.jdisc.Response; -import com.yahoo.jdisc.handler.BufferedContentChannel; -import com.yahoo.jdisc.handler.ContentChannel; -import com.yahoo.jdisc.handler.RequestDispatch; -import com.yahoo.jdisc.http.HttpResponse; -import com.yahoo.jdisc.http.test.RemoteServer; -import com.yahoo.jdisc.service.CurrentContainer; - -import java.net.URI; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; - -import static com.yahoo.jdisc.http.AssertHttp.assertChunk; -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertFalse; -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertTrue; - -/** - * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen Hult</a> - */ -abstract class AbstractClientTestCase { - - protected static void assertRequest(CurrentContainer container, RemoteServer server, String requestUri, - HeaderFields requestHeaders, Iterable<ByteBuffer> requestContent, - Iterable<String> expectedRequestChunks, Iterable<String> responseChunks, - int expectedStatus, String expectedMessage, - HeaderFields expectedResponseHeaders, - Iterable<ByteBuffer> expectedResponseContent, - Map<String,Object> context) throws Exception { - MyRequestDispatch dispatch = new MyRequestDispatch(container, server.newRequestUri(requestUri), - requestHeaders, requestContent, context); - dispatch.dispatch(); - assertRequest(server, expectedRequestChunks, responseChunks, dispatch); - assertResponse(dispatch.get(60, TimeUnit.SECONDS), expectedStatus, expectedMessage, - expectedResponseHeaders); - assertContent(expectedResponseContent, dispatch.responseContent.toReadable()); - } - - protected static void assertRequest(CurrentContainer container, RemoteServer server, String requestUri, - HeaderFields requestHeaders, Iterable<ByteBuffer> requestContent, - Iterable<String> expectedRequestChunks, Iterable<String> responseChunks, - int expectedStatus, String expectedMessage, - HeaderFields expectedResponseHeaders, - Iterable<ByteBuffer> expectedResponseContent) throws Exception { - - assertRequest(container, server, requestUri, requestHeaders, requestContent, expectedRequestChunks, - responseChunks, expectedStatus, expectedMessage, expectedResponseHeaders, expectedResponseContent, - Collections.<String, Object>emptyMap()); - } - - protected static void assertRequest(RemoteServer server, Iterable<String> expectedRequestChunks, - Iterable<String> responseChunks, Future<Response> futureResponse) - throws Exception { - RemoteServer.Connection cnt = awaitConnection(server, futureResponse); - assertNotNull(cnt); - for (String expected : expectedRequestChunks) { - assertChunk(expected, cnt.readChunk()); - } - for (String chunk : responseChunks) { - cnt.writeChunk(chunk); - } - cnt.close(); - } - - protected static RemoteServer.Connection awaitConnection(RemoteServer server, Future<Response> futureResponse) - throws Exception { - RemoteServer.Connection cnt = null; - for (int i = 0; i < 6000; ++i) { - cnt = server.awaitConnection(10, TimeUnit.MILLISECONDS); - if (cnt != null) { - break; - } - if (futureResponse.isDone()) { - HttpResponse response = (HttpResponse)futureResponse.get(); - System.err.println("Unexpected " + response.getStatus() + " response: " + response.getMessage()); - Throwable t = response.getError(); - if (t instanceof Exception) { - throw (Exception)t; - } else if (t instanceof Error) { - throw (Error)t; - } else { - throw new RuntimeException(t); - } - } - } - return cnt; - } - - protected static void assertResponse(Response response, int expectedStatus, String expectedMessage, - HeaderFields expectedHeaders) { - assertTrue(response instanceof HttpResponse); - HttpResponse httpResponse = (HttpResponse)response; - assertEquals(expectedStatus, httpResponse.getStatus()); - assertEquals(expectedMessage, httpResponse.getMessage()); - - HeaderFields headers = response.headers(); - for (Map.Entry<String, String> entry : expectedHeaders.entries()) { - assertTrue(headers.contains(entry.getKey(), entry.getValue())); - } - } - - protected static void assertContent(Iterable<ByteBuffer> expected, Iterable<ByteBuffer> actual) { - Iterator<ByteBuffer> expectedIt = expected.iterator(); - Iterator<ByteBuffer> actualIt = actual.iterator(); - while (expectedIt.hasNext()) { - assertTrue(actualIt.hasNext()); - assertEquals(expectedIt.next(), actualIt.next()); - } - assertFalse(actualIt.hasNext()); - } - - protected static String requestUri(String uri) { - return uri; - } - - protected static HeaderFields requestHeaders(HeaderEntry... entries) { - return asHeaders(entries); - } - - protected static Iterable<ByteBuffer> requestContent(String... chunks) { - return asContent(chunks); - } - - protected static Iterable<String> expectedRequestChunks(String... chunks) { - return Arrays.asList(chunks); - } - - protected static Iterable<String> responseChunks(String... chunks) { - return Arrays.asList(chunks); - } - - protected static int expectedResponseStatus(int status) { - return status; - } - - protected static String expectedResponseMessage(String message) { - return message; - } - - protected static HeaderFields expectedResponseHeaders(HeaderEntry... entries) { - return asHeaders(entries); - } - - protected static Iterable<ByteBuffer> expectedResponseContent(String... chunks) { - return asContent(chunks); - } - - protected static HeaderEntry newHeader(String key, String val) { - return new HeaderEntry(key, val); - } - - protected static HeaderFields asHeaders(HeaderEntry... entries) { - HeaderFields ret = new HeaderFields(); - for (HeaderEntry entry : entries) { - ret.add(entry.key, entry.val); - } - return ret; - } - - protected static Iterable<ByteBuffer> asContent(String... chunks) { - List<ByteBuffer> ret = new LinkedList<>(); - for (String chunk : chunks) { - ret.add(ByteBuffer.wrap(chunk.getBytes(StandardCharsets.UTF_8))); - } - return ret; - } - - protected static class MyRequestDispatch extends RequestDispatch { - - final Map<String, Object> context = new HashMap<>(); - final CurrentContainer container; - final URI requestUri; - final HeaderFields requestHeaders; - final Iterable<ByteBuffer> requestContent; - final BufferedContentChannel responseContent = new BufferedContentChannel(); - - MyRequestDispatch(CurrentContainer container, URI requestUri, HeaderFields requestHeaders, - Iterable<ByteBuffer> requestContent, Map<String, Object> context) { - this.container = container; - this.requestUri = requestUri; - this.requestHeaders = requestHeaders; - this.requestContent = requestContent; - this.context.putAll(context); - } - - @Override - protected Request newRequest() { - Request request = new Request(container, requestUri); - request.headers().addAll(requestHeaders); - request.context().putAll(context); - return request; - } - - @Override - protected Iterable<ByteBuffer> requestContent() { - return requestContent; - } - - @Override - public ContentChannel handleResponse(Response response) { - return responseContent; - } - } - - protected static class HeaderEntry { - - final String key; - final String val; - - HeaderEntry(String key, String val) { - this.key = key; - this.val = val; - } - } -} diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/AsyncResponseHandlerTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/AsyncResponseHandlerTestCase.java deleted file mode 100644 index 30cdd7acfe2..00000000000 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/AsyncResponseHandlerTestCase.java +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.jdisc.http.client; - -import com.ning.http.client.AsyncHandler; -import com.yahoo.jdisc.Metric; -import com.yahoo.jdisc.Response; -import com.yahoo.jdisc.handler.ContentChannel; -import com.yahoo.jdisc.handler.ReadableContentChannel; -import com.yahoo.jdisc.handler.ResponseHandler; -import com.yahoo.jdisc.test.NonWorkingRequest; -import org.testng.annotations.Test; - -import java.util.Map; - -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNull; - -/** - * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a> - */ -public class AsyncResponseHandlerTestCase { - - @Test(enabled = false) - public void requireThatOnThrowableAbortsHandler() throws Exception { - AsyncResponseHandler handler = new AsyncResponseHandler(NonWorkingRequest.newInstance("http://localhost/"), - new MyResponseHandler(), new MyMetric(), - new Metric.Context() { }); - handler.onThrowable(new Throwable()); - assertEquals(AsyncHandler.STATE.ABORT, handler.onStatusReceived(null)); - assertEquals(AsyncHandler.STATE.ABORT, handler.onHeadersReceived(null)); - assertEquals(AsyncHandler.STATE.ABORT, handler.onBodyPartReceived(null)); - assertNull(handler.onCompleted()); - } - - private static class MyResponseHandler implements ResponseHandler { - - @Override - public ContentChannel handleResponse(Response response) { - return new ReadableContentChannel(); - } - } - - private static class MyMetric implements Metric { - - @Override - public void set(String key, Number val, Context ctx) { - - } - - @Override - public void add(String key, Number val, Context ctx) { - - } - - @Override - public Context createContext(Map<String, ?> properties) { - return null; - } - } -} diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ClientErrorTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ClientErrorTestCase.java deleted file mode 100644 index 84e758e868e..00000000000 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ClientErrorTestCase.java +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.jdisc.http.client; - -import org.testng.annotations.Test; - -import static org.testng.AssertJUnit.assertTrue; - -/** - * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen Hult</a> - */ -public class ClientErrorTestCase { - - @Test(enabled = false) - public void requireNothing() { - assertTrue(true); - } -} diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ClientThreadingTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ClientThreadingTestCase.java deleted file mode 100644 index 17140a88369..00000000000 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ClientThreadingTestCase.java +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.jdisc.http.client; - -import com.google.inject.AbstractModule; -import com.yahoo.jdisc.Request; -import com.yahoo.jdisc.Response; -import com.yahoo.jdisc.application.ContainerThread; -import com.yahoo.jdisc.handler.ContentChannel; -import com.yahoo.jdisc.handler.RequestDispatch; -import com.yahoo.jdisc.http.test.ClientTestDriver; -import org.testng.annotations.Test; - -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.TimeUnit; - -import static org.testng.AssertJUnit.assertTrue; - -/** - * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen Hult</a> - */ -public class ClientThreadingTestCase extends AbstractClientTestCase { - - @Test(enabled = false) - public void requireThatDefaultThreadFactoryCreatesContainerThreads() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(new HttpClientConfig.Builder()); - ThreadAwareDispatch dispatch = new ThreadAwareDispatch(driver, "/foo.html"); - assertDispatch(dispatch); - assertTrue(dispatch.latch.await(60, TimeUnit.SECONDS)); - assertTrue(dispatch.thread instanceof ContainerThread); - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatThreadFactoryIsUsed() throws Exception { - final MyThreadFactory factory = new MyThreadFactory(); - ClientTestDriver driver = ClientTestDriver.newInstance(new AbstractModule() { - - @Override - protected void configure() { - bind(ThreadFactory.class).toInstance(factory); - } - }); - ThreadAwareDispatch dispatch = new ThreadAwareDispatch(driver, "/foo.html"); - assertDispatch(dispatch); - assertTrue(dispatch.latch.await(60, TimeUnit.SECONDS)); - assertTrue(factory.threads.contains(dispatch.thread)); - assertTrue(driver.close()); - } - - private static void assertDispatch(ThreadAwareDispatch dispatch) throws Exception { - dispatch.dispatch(); - assertRequest(dispatch.driver.server(), - expectedRequestChunks("POST " + dispatch.requestUri + " HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - dispatch); - assertResponse(dispatch.get(60, TimeUnit.SECONDS), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders()); - } - - private static class ThreadAwareDispatch extends RequestDispatch { - - final CountDownLatch latch = new CountDownLatch(1); - final ClientTestDriver driver; - final String requestUri; - Thread thread; - - ThreadAwareDispatch(ClientTestDriver driver, String requestUri) { - this.driver = driver; - this.requestUri = requestUri; - } - - @Override - protected Request newRequest() { - return new Request(driver.currentContainer(), driver.server().newRequestUri(requestUri)); - } - - @Override - public ContentChannel handleResponse(Response response) { - thread = Thread.currentThread(); - latch.countDown(); - return null; - } - } - - private static class MyThreadFactory implements ThreadFactory { - - final BlockingQueue<Thread> threads = new LinkedBlockingQueue<>(); - - @Override - public Thread newThread(Runnable task) { - Thread thread = new Thread(task); - threads.add(thread); - return thread; - } - } -} diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/EmptyResponseTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/EmptyResponseTestCase.java deleted file mode 100644 index 62b9612e59b..00000000000 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/EmptyResponseTestCase.java +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.jdisc.http.client; - -import org.testng.annotations.Test; - -import java.io.IOException; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertFalse; - -/** - * @author <a href="mailto:vikasp@yahoo-inc.com">Vikas Panwar</a> - */ -public class EmptyResponseTestCase { - @Test(enabled = false) - public void testGetterSetters() throws IOException { - EmptyResponse underTest = EmptyResponse.INSTANCE; - - assertEquals(0, underTest.getStatusCode()); - assertNull(underTest.getStatusText()); - assertEquals(0, underTest.getResponseBodyAsByteBuffer().remaining()); - assertEquals(0, underTest.getResponseBodyAsBytes().length); - assertNull(underTest.getResponseBodyAsStream()); - assertNull(underTest.getResponseBody()); - assertNull(underTest.getResponseBodyExcerpt(10, "")); - assertNull(underTest.getResponseBodyExcerpt(10)); - assertNull(underTest.getResponseBody()); - assertNull(underTest.getUri()); - assertNull(underTest.getContentType()); - assertNull(underTest.getHeader("")); - assertNull(underTest.getHeaders("")); - assertNull(underTest.getHeaders()); - assertFalse(underTest.isRedirected()); - assertNull(underTest.getCookies()); - assertFalse(underTest.hasResponseStatus()); - assertFalse(underTest.hasResponseHeaders()); - assertFalse(underTest.hasResponseBody()); - } -} diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/HttpClientTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/HttpClientTestCase.java deleted file mode 100644 index 751b696399e..00000000000 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/HttpClientTestCase.java +++ /dev/null @@ -1,578 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.jdisc.http.client; - -import com.google.inject.AbstractModule; -import com.yahoo.jdisc.Metric; -import com.yahoo.jdisc.Request; -import com.yahoo.jdisc.Response; -import com.yahoo.jdisc.application.MetricConsumer; -import com.yahoo.jdisc.handler.RequestDispatch; -import com.yahoo.jdisc.http.HttpRequest; -import com.yahoo.jdisc.http.HttpResponse; -import com.yahoo.jdisc.http.client.filter.FilterException; -import com.yahoo.jdisc.http.client.filter.ResponseFilter; -import com.yahoo.jdisc.http.client.filter.ResponseFilterContext; -import com.yahoo.jdisc.http.test.ClientTestDriver; -import com.yahoo.jdisc.http.test.RemoteServer; -import org.testng.annotations.Test; - -import java.net.URI; -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import static com.yahoo.jdisc.http.test.ClientTestDriver.newFilterModule; -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertSame; -import static org.testng.AssertJUnit.assertTrue; -import static org.testng.AssertJUnit.fail; - -/** - * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a> - */ -public class HttpClientTestCase extends AbstractClientTestCase { - - private static final int NUM_REQUESTS = 10; - - @Test(enabled = false) - public void requireThatRequestCanBeSent() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/foo.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /foo.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent()); - } - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatRequestHeadersAreSent() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/status.html"), - requestHeaders(newHeader("foo", "bar")), - requestContent(), - expectedRequestChunks("POST /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "foo: bar\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent()); - } - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatRequestContentIsSent() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/status.html"), - requestHeaders(), - requestContent("foo", "bar"), - expectedRequestChunks("POST /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "Content-Length: 6\r\n" + - "\r\n" + - "foobar"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent()); - } - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatRequestContentCanBeChunked() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(new HttpClientConfig.Builder() - .chunkedEncodingEnabled(true)); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/status.html"), - requestHeaders(), - requestContent("foo", "bar"), - expectedRequestChunks("POST /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "Transfer-Encoding: chunked\r\n" + - "\r\n", - "3\r\nfoo\r\n", - "3\r\nbar\r\n", - "0\r\n\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent()); - } - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatGetRequestsAreNeverChunked() throws Exception { - final ClientTestDriver driver = ClientTestDriver.newInstance(new HttpClientConfig.Builder() - .chunkedEncodingEnabled(true)); - for (int i = 0; i < NUM_REQUESTS; ++i) { - Future<Response> future = new RequestDispatch() { - - @Override - protected Request newRequest() { - return HttpRequest.newServerRequest(driver.currentContainer(), - driver.server().newRequestUri("/status.html"), - HttpRequest.Method.GET); - } - }.dispatch(); - assertRequest(driver.server(), - expectedRequestChunks("GET /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - future); - } - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatTraceRequestsDoNotAcceptContent() throws Exception { - final ClientTestDriver driver = ClientTestDriver.newInstance(new HttpClientConfig.Builder() - .chunkedEncodingEnabled(true)); - RequestDispatch dispatch = new RequestDispatch() { - - @Override - protected Request newRequest() { - return HttpRequest.newServerRequest(driver.currentContainer(), - driver.server().newRequestUri("/status.html"), - HttpRequest.Method.TRACE); - } - - @Override - protected Iterable<ByteBuffer> requestContent() { - return Arrays.asList(ByteBuffer.allocate(69)); - } - }; - try { - dispatch.dispatch(); - fail(); - } catch (UnsupportedOperationException e) { - - } - assertRequest(driver.server(), - expectedRequestChunks("TRACE /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - dispatch); - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatResponseCodeIsRead() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/status.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 69 foo\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(69), - expectedResponseMessage("foo"), - expectedResponseHeaders(), - expectedResponseContent()); - } - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatResponseHeadersAreRead() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/status.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "foo: bar\r\n" + - "baz: cox\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(newHeader("foo", "bar"), newHeader("baz", "cox")), - expectedResponseContent()); - } - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatResponseContentIsRead() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/status.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "Content-Length: 6\r\n" + - "\r\n" + - "foobar"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent("foobar")); - } - assertTrue(driver.close()); - } - - private void requireThatChunkedResponseContentIsRead() throws Exception { - ClientTestDriver driver = ClientTestDriver.newInstance(); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/status.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /status.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Transfer-Encoding: chunked\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "Connection: keep-alive\r\n" + - "\r\n", - "3\r\nfoo\r\n", - "3\r\nbar\r\n", - "0\r\n\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent("foo", "bar")); - } - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatRequestTimeoutCanOccur() throws Exception { - final ClientTestDriver driver = ClientTestDriver.newInstance(); - Response response = new RequestDispatch() { - - @Override - protected Request newRequest() { - Request request = new Request(driver.currentContainer(), driver.server().connectionSpec()); - request.setTimeout(1, TimeUnit.MILLISECONDS); - return request; - } - }.dispatch().get(60, TimeUnit.SECONDS); - assertNotNull(response); - assertEquals(Response.Status.REQUEST_TIMEOUT, response.getStatus()); - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatConnectionTimeoutCanOccur() throws Exception { - final ClientTestDriver driver = ClientTestDriver.newInstance(); - Response response = new RequestDispatch() { - - @Override - protected Request newRequest() { - HttpRequest request = HttpRequest.newServerRequest(driver.currentContainer(), - driver.server().connectionSpec()); - request.setConnectionTimeout(1, TimeUnit.MILLISECONDS); - return request; - } - }.dispatch().get(60, TimeUnit.SECONDS); - assertTrue(response instanceof HttpResponse); - HttpResponse httpResponse = (HttpResponse)response; - assertEquals(Response.Status.REQUEST_TIMEOUT, httpResponse.getStatus()); - assertEquals("java.util.concurrent.TimeoutException: No response received after 1", httpResponse.getMessage()); - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatMetricContextIsCachedPerServer() throws Exception { - MyMetric metric = new MyMetric(new Metric.Context() { - - }); - ClientTestDriver driver = ClientTestDriver.newInstance(metric); - RemoteServer server1 = driver.server(); - RemoteServer server2 = RemoteServer.newInstance(); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), server1, - requestUri("/foo.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /foo.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent()); - assertRequest(driver.currentContainer(), server2, - requestUri("/foo.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /foo.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent()); - } - assertTrue(driver.close()); - assertTrue(server2.close(60, TimeUnit.SECONDS)); - assertEquals(2, metric.numContexts.get()); - assertTrue(metric.numCalls.get() > 0); - } - - @Test(enabled = false) - public void requireThatNullMetricContextIsLegal() throws Exception { - MyMetric metric = new MyMetric(null); - ClientTestDriver driver = ClientTestDriver.newInstance(metric); - for (int i = 0; i < NUM_REQUESTS; ++i) { - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/foo.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /foo.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent()); - } - assertTrue(driver.close()); - assertEquals(1, metric.numContexts.get()); - assertTrue(metric.numCalls.get() > 0); - } - - @Test(enabled = false) - public void requireThatUnsupportedURISchemeThrowsException() throws Exception { - final ClientTestDriver driver = ClientTestDriver.newInstance(new HttpClientConfig.Builder() - .chunkedEncodingEnabled(true) - .connectionPoolEnabled(false)); - - try { - new RequestDispatch() { - @Override - public Request newRequest() { - return HttpRequest.newServerRequest( - driver.currentContainer(), - URI.create("ftp://localhost/"), - HttpRequest.Method.GET); - } - }.dispatch(); - fail(); - } catch (UnsupportedOperationException e) { - assertEquals("Unknown protocol: ftp", e.getMessage()); - } - - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatResponseFilterIsInvoked() throws Exception { - final CountDownLatch filterInvokeCount = new CountDownLatch(2); - final StringBuffer responseBuffer = new StringBuffer(); - ResponseFilter[] filters = new ResponseFilter[2]; - filters[0] = (new ResponseFilter() { - - @Override - public ResponseFilterContext filter(ResponseFilterContext filterContext) { - filterInvokeCount.countDown(); - return filterContext; - } - }); - filters[1] = (new ResponseFilter() { - - @Override - public ResponseFilterContext filter(ResponseFilterContext filterContext) { - filterInvokeCount.countDown(); - responseBuffer.append(filterContext.getRequestURI().getHost()) - .append(filterContext.getRequestURI().getPath()) - .append(filterContext.getResponseStatusCode()) - .append(filterContext.getResponseFirstHeader("Content-Type")) - .append(filterContext.getRequestContext().get("key1")) - .append(filterContext.getRequestContext().get("key2")); - return filterContext; - } - }); - Map<String, Object> context = new HashMap<>(); - context.put("key1", "value1"); - context.put("key2", "value2"); - ClientTestDriver driver = ClientTestDriver.newInstance(newFilterModule(filters)); - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/foo.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks("POST /foo.html HTTP/1.1\r\n" + - "Host: .+\r\n" + - "Connection: keep-alive\r\n" + - "Accept: .+/.+\r\n" + - "User-Agent: JDisc/1.0\r\n" + - "\r\n"), - responseChunks("HTTP/1.1 200 OK\r\n" + - "Content-Type: text/plain; charset=UTF-8\r\n" + - "\r\n"), - expectedResponseStatus(200), - expectedResponseMessage("OK"), - expectedResponseHeaders(), - expectedResponseContent(), - context); - - filterInvokeCount.await(60, TimeUnit.SECONDS); - assertEquals(0, filterInvokeCount.getCount()); - assertEquals("localhost/foo.html200text/plain; charset=UTF-8value1value2", responseBuffer.toString()); - assertTrue(driver.close()); - } - - @Test(enabled = false) - public void requireThatResponseFilterHandlesFilterExceptionProperly() throws Exception { - ResponseFilter filter = new ResponseFilter() { - - @Override - public ResponseFilterContext filter(ResponseFilterContext filterContext) throws FilterException { - throw new FilterException("Request aborted."); - } - }; - ClientTestDriver driver = ClientTestDriver.newInstance(newFilterModule(filter)); - assertRequest(driver.currentContainer(), driver.server(), - requestUri("/foo.html"), - requestHeaders(), - requestContent(), - expectedRequestChunks(), - responseChunks("HTTP/1.1 400 \r\n" + - "\r\n"), - expectedResponseStatus(400), - expectedResponseMessage("Request aborted."), - expectedResponseHeaders(), - expectedResponseContent()); - assertTrue(driver.close()); - } - - private static class MyMetric extends AbstractModule implements MetricConsumer { - - final AtomicInteger numContexts = new AtomicInteger(0); - final AtomicInteger numCalls = new AtomicInteger(0); - final Metric.Context context; - - MyMetric(Metric.Context context) { - this.context = context; - } - - @Override - protected void configure() { - bind(MetricConsumer.class).toInstance(this); - } - - @Override - public void set(String key, Number val, Metric.Context context) { - assertSame(this.context, context); - numCalls.incrementAndGet(); - } - - @Override - public void add(String key, Number val, Metric.Context context) { - assertSame(this.context, context); - numCalls.incrementAndGet(); - } - - @Override - public Metric.Context createContext(Map<String, ?> properties) { - numContexts.incrementAndGet(); - return context; - } - } -} diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ProxyServerFactoryTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ProxyServerFactoryTestCase.java deleted file mode 100644 index 7f5e22e48da..00000000000 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ProxyServerFactoryTestCase.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.jdisc.http.client; - -import com.ning.http.client.ProxyServer; -import org.testng.annotations.Test; - -import java.net.URI; - -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNull; - -/** - * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen Hult</a> - */ -public class ProxyServerFactoryTestCase { - - @Test(enabled = false) - public void requireThatProxyServerFactoryWorks() { - assertNull(ProxyServerFactory.newInstance(null)); - - ProxyServer proxy = ProxyServerFactory.newInstance(URI.create("http://localhost:1234")); - assertEquals(ProxyServer.Protocol.HTTP, proxy.getProtocol()); - assertEquals("localhost", proxy.getHost()); - assertEquals(1234, proxy.getPort()); - assertNull(proxy.getPrincipal()); - assertNull(proxy.getPassword()); - - proxy = ProxyServerFactory.newInstance(URI.create("http://foo@localhost:1234")); - assertEquals(ProxyServer.Protocol.HTTP, proxy.getProtocol()); - assertEquals("localhost", proxy.getHost()); - assertEquals(1234, proxy.getPort()); - assertEquals("foo", proxy.getPrincipal()); - assertNull(proxy.getPassword()); - - proxy = ProxyServerFactory.newInstance(URI.create("https://foo:bar@localhost:1234")); - assertEquals(ProxyServer.Protocol.HTTPS, proxy.getProtocol()); - assertEquals("localhost", proxy.getHost()); - assertEquals(1234, proxy.getPort()); - assertEquals("foo", proxy.getPrincipal()); - assertEquals("bar", proxy.getPassword()); - } -} diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/filter/core/ResponseFilterBridgeTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/filter/core/ResponseFilterBridgeTestCase.java deleted file mode 100644 index b2154349549..00000000000 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/filter/core/ResponseFilterBridgeTestCase.java +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.jdisc.http.client.filter.core; - -import com.ning.http.client.FluentCaseInsensitiveStringsMap; -import com.ning.http.client.HttpResponseHeaders; -import com.ning.http.client.HttpResponseStatus; -import com.ning.http.client.Request; -import com.ning.http.client.filter.FilterContext; -import com.yahoo.jdisc.http.HttpRequest; -import com.yahoo.jdisc.http.client.filter.ResponseFilterContext; -import org.testng.annotations.Test; - -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import static org.testng.AssertJUnit.assertEquals; - -/** - * @author <a href="mailto:alain@yahoo-inc.com">Alain Wan Buen Cheong</a> - */ -public class ResponseFilterBridgeTestCase { - - @Test(enabled = false) - public void requireThatResponseFilterBridgeConvertsFieldsProperly() throws MalformedURLException, URISyntaxException { - ResponseFilterContext responseFilterContext = ResponseFilterBridge.toResponseFilterContext( - constructFilterContext(), - constructRequest() - ); - - assertEquals("http://localhost:8080/echo", responseFilterContext.getRequestURI().toString()); - assertEquals(200, responseFilterContext.getResponseStatusCode()); - assertEquals("v1", responseFilterContext.getResponseFirstHeader("k1")); - assertEquals("v2", responseFilterContext.getResponseFirstHeader("k2")); - Map<String, Object> customParams = responseFilterContext.getRequestContext(); - assertEquals("cv1", customParams.get("c1")); - assertEquals("cv2", customParams.get("c2")); - - } - - private HttpRequest constructRequest() { - HttpRequest request = mock(HttpRequest.class); - Map<String, Object> customParams = new HashMap<>(); - customParams.put("c1", "cv1"); - customParams.put("c2", "cv2"); - when(request.context()).thenReturn(customParams); - return request; - } - - private FilterContext<?> constructFilterContext() throws MalformedURLException, URISyntaxException { - FilterContext.FilterContextBuilder<?> builder = new FilterContext.FilterContextBuilder<>(); - - Request request = mock(Request.class); - URL url = new URL("http://localhost:8080/echo"); - URI reqURI = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), - url.getQuery(), url.getRef()); - when(request.getURI()).thenReturn(reqURI); - - HttpResponseStatus responseStatus = mock(HttpResponseStatus.class); - when(responseStatus.getStatusCode()).thenReturn(200); - - HttpResponseHeaders responseHeaders = mock(HttpResponseHeaders.class); - FluentCaseInsensitiveStringsMap headers = new FluentCaseInsensitiveStringsMap(); - headers.add("k1", "v1", "v12", "v13"); - headers.add("k2", "v2"); - when(responseHeaders.getHeaders()).thenReturn(headers); - - builder.request(request); - builder.responseStatus(responseStatus); - builder.responseHeaders(responseHeaders); - - return builder.build(); - } -} |