summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/test/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'jdisc_http_service/src/test/java/com')
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/AbstractClientTestCase.java230
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/AsyncResponseHandlerTestCase.java60
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ClientErrorTestCase.java17
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ClientThreadingTestCase.java108
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/EmptyResponseTestCase.java40
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/HttpClientTestCase.java578
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/ProxyServerFactoryTestCase.java42
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/client/filter/core/ResponseFilterBridgeTestCase.java79
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();
- }
-}