diff options
Diffstat (limited to 'application/src/test/java/com/yahoo')
-rw-r--r-- | application/src/test/java/com/yahoo/application/container/ContainerDocprocTest.java (renamed from application/src/test/java/com/yahoo/application/container/JDiscContainerDocprocTest.java) | 2 | ||||
-rw-r--r-- | application/src/test/java/com/yahoo/application/container/ContainerModelEvaluationTest.java | 73 | ||||
-rw-r--r-- | application/src/test/java/com/yahoo/application/container/ContainerProcessingTest.java (renamed from application/src/test/java/com/yahoo/application/container/JDiscContainerProcessingTest.java) | 2 | ||||
-rw-r--r-- | application/src/test/java/com/yahoo/application/container/ContainerRequestTest.java (renamed from application/src/test/java/com/yahoo/application/container/JDiscContainerRequestTest.java) | 12 | ||||
-rw-r--r-- | application/src/test/java/com/yahoo/application/container/ContainerSearchTest.java (renamed from application/src/test/java/com/yahoo/application/container/JDiscContainerSearchTest.java) | 8 | ||||
-rw-r--r-- | application/src/test/java/com/yahoo/application/container/ContainerTest.java (renamed from application/src/test/java/com/yahoo/application/container/JDiscTest.java) | 14 | ||||
-rw-r--r-- | application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java | 5 |
7 files changed, 96 insertions, 20 deletions
diff --git a/application/src/test/java/com/yahoo/application/container/JDiscContainerDocprocTest.java b/application/src/test/java/com/yahoo/application/container/ContainerDocprocTest.java index 2a363916fa3..fddd41e7cc2 100644 --- a/application/src/test/java/com/yahoo/application/container/JDiscContainerDocprocTest.java +++ b/application/src/test/java/com/yahoo/application/container/ContainerDocprocTest.java @@ -25,7 +25,7 @@ import static org.junit.Assert.assertTrue; /** * @author Einar M R Rosenvinge */ -public class JDiscContainerDocprocTest { +public class ContainerDocprocTest { private static final String DOCUMENT = "document music {\n" + " field title type string { }\n" diff --git a/application/src/test/java/com/yahoo/application/container/ContainerModelEvaluationTest.java b/application/src/test/java/com/yahoo/application/container/ContainerModelEvaluationTest.java new file mode 100644 index 00000000000..75c18f29b29 --- /dev/null +++ b/application/src/test/java/com/yahoo/application/container/ContainerModelEvaluationTest.java @@ -0,0 +1,73 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.application.container; + +import com.sun.xml.bind.api.impl.NameConverter; +import com.yahoo.application.Application; +import com.yahoo.application.Networking; +import com.yahoo.application.container.handler.Request; +import com.yahoo.application.container.handler.Response; +import com.yahoo.container.jdisc.HttpRequest; +import com.yahoo.container.jdisc.HttpResponse; +import com.yahoo.tensor.Tensor; +import com.yahoo.tensor.TensorType; +import org.junit.Test; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.CharacterCodingException; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +import static org.junit.Assert.assertEquals; + +/** + * Verify that we can create a JDisc (and hence Application) instance capable of doing model evaluation + * + * @author bratseth + */ +public class ContainerModelEvaluationTest { + + @Test + public void testCreateJDiscInstanceWithModelEvaluation() { + try (Application application = + Application.fromApplicationPackage(new File("src/test/app-packages/model-evaluation"), + Networking.disable)) { + { + String expected = "{\"xgboost_xgboost_2_2\":\"http://localhost/model-evaluation/v1/xgboost_xgboost_2_2\",\"onnx_mnist_softmax\":\"http://localhost/model-evaluation/v1/onnx_mnist_softmax\",\"tensorflow_mnist_softmax_saved\":\"http://localhost/model-evaluation/v1/tensorflow_mnist_softmax_saved\",\"tensorflow_mnist_saved\":\"http://localhost/model-evaluation/v1/tensorflow_mnist_saved\",\"vespa_example\":\"http://localhost/model-evaluation/v1/vespa_example\"}"; + assertResponse("http://localhost/model-evaluation/v1", expected, application); + } + + { + String expected = "{\"cells\":[{\"address\":{},\"value\":-8.17695}]}"; + assertResponse("http://localhost/model-evaluation/v1/xgboost_xgboost_2_2/eval", expected, application); + } + + { + // Note: The specific response value here has not been verified + String expected = "{\"cells\":[{\"address\":{\"d0\":\"0\",\"d1\":\"0\"},\"value\":-0.5066885003407351},{\"address\":{\"d0\":\"0\",\"d1\":\"1\"},\"value\":0.3912837743150205},{\"address\":{\"d0\":\"0\",\"d1\":\"2\"},\"value\":-0.12401806321703948},{\"address\":{\"d0\":\"0\",\"d1\":\"3\"},\"value\":-0.7019029168606575},{\"address\":{\"d0\":\"0\",\"d1\":\"4\"},\"value\":0.13120114146441697},{\"address\":{\"d0\":\"0\",\"d1\":\"5\"},\"value\":0.6611923203384626},{\"address\":{\"d0\":\"0\",\"d1\":\"6\"},\"value\":-0.22365810810026446},{\"address\":{\"d0\":\"0\",\"d1\":\"7\"},\"value\":-0.0740018307465809},{\"address\":{\"d0\":\"0\",\"d1\":\"8\"},\"value\":0.056492490256153896},{\"address\":{\"d0\":\"0\",\"d1\":\"9\"},\"value\":-0.18422015072393733}]}"; + assertResponse("http://localhost/model-evaluation/v1/tensorflow_mnist_saved/serving_default.y/eval?input=" + inputTensor(), expected, application); + } + } + } + + private void assertResponse(String url, String expectedResponse, Application application) { + try { + Response response = application.getJDisc("default").handleRequest(new Request(url)); + assertEquals(expectedResponse, response.getBodyAsString()); + assertEquals(200, response.getStatus()); + } + catch (CharacterCodingException e) { + throw new RuntimeException(e); + } + } + + private String inputTensor() { + Tensor.Builder b = Tensor.Builder.of(TensorType.fromSpec("tensor(d0[],d1[784])")); + for (int i = 0; i < 784; i++) + b.cell(0.0, 0, i); + return URLEncoder.encode(b.build().toString(), StandardCharsets.UTF_8); + } + +} diff --git a/application/src/test/java/com/yahoo/application/container/JDiscContainerProcessingTest.java b/application/src/test/java/com/yahoo/application/container/ContainerProcessingTest.java index 443b938693f..36657caeb40 100644 --- a/application/src/test/java/com/yahoo/application/container/JDiscContainerProcessingTest.java +++ b/application/src/test/java/com/yahoo/application/container/ContainerProcessingTest.java @@ -18,7 +18,7 @@ import static org.junit.Assert.assertThat; /** * @author Einar M R Rosenvinge */ -public class JDiscContainerProcessingTest { +public class ContainerProcessingTest { private static String getXML(String chainName, String... processorIds) { String xml = diff --git a/application/src/test/java/com/yahoo/application/container/JDiscContainerRequestTest.java b/application/src/test/java/com/yahoo/application/container/ContainerRequestTest.java index 9f5555069cd..8f3e7693bc5 100644 --- a/application/src/test/java/com/yahoo/application/container/JDiscContainerRequestTest.java +++ b/application/src/test/java/com/yahoo/application/container/ContainerRequestTest.java @@ -22,7 +22,7 @@ import static org.junit.Assert.assertThat; /** * @author Einar M R Rosenvinge */ -public class JDiscContainerRequestTest { +public class ContainerRequestTest { private static String getXML(String className, String binding) { return "<container version=\"1.0\">\n" + @@ -37,7 +37,7 @@ public class JDiscContainerRequestTest { } @Test - public void requireThatRequestBodyWorks() throws InterruptedException, CharacterCodingException { + public void requireThatRequestBodyWorks() throws CharacterCodingException { String DATA = "we have no bananas today"; Request req = new Request("http://banana/echo", DATA.getBytes(Utf8.getCharset())); @@ -50,7 +50,7 @@ public class JDiscContainerRequestTest { } @Test - public void requireThatCustomRequestHeadersWork() throws InterruptedException { + public void requireThatCustomRequestHeadersWork() { Request req = new Request("http://banana/echo"); req.getHeaders().add("X-Foo", "Bar"); @@ -63,7 +63,7 @@ public class JDiscContainerRequestTest { } @Test(expected = WriteException.class) - public void requireThatRequestHandlerThatThrowsInWriteWorks() throws InterruptedException { + public void requireThatRequestHandlerThatThrowsInWriteWorks() { String DATA = "we have no bananas today"; Request req = new Request("http://banana/throwwrite", DATA.getBytes(Utf8.getCharset())); @@ -73,9 +73,8 @@ public class JDiscContainerRequestTest { } } - @Test(expected = DelayedWriteException.class) - public void requireThatRequestHandlerThatThrowsDelayedInWriteWorks() throws InterruptedException { + public void requireThatRequestHandlerThatThrowsDelayedInWriteWorks() { String DATA = "we have no bananas today"; Request req = new Request("http://banana/delayedthrowwrite", DATA.getBytes(Utf8.getCharset())); @@ -83,6 +82,7 @@ public class JDiscContainerRequestTest { Response response = container.handleRequest(req); req.toString(); } + } } diff --git a/application/src/test/java/com/yahoo/application/container/JDiscContainerSearchTest.java b/application/src/test/java/com/yahoo/application/container/ContainerSearchTest.java index b7445d13a17..d133b71b8da 100644 --- a/application/src/test/java/com/yahoo/application/container/JDiscContainerSearchTest.java +++ b/application/src/test/java/com/yahoo/application/container/ContainerSearchTest.java @@ -16,7 +16,8 @@ import static org.junit.Assert.assertThat; * @author gjoranv * @author ollivir */ -public class JDiscContainerSearchTest { +public class ContainerSearchTest { + @Test public void processing_and_rendering_works() throws Exception { final String searcherId = AddHitSearcher.class.getName(); @@ -30,7 +31,7 @@ public class JDiscContainerSearchTest { } @Test - public void searching_works() throws Exception { + public void searching_works() { final String searcherId = AddHitSearcher.class.getName(); try (JDisc container = containerWithSearch(searcherId)) { @@ -52,9 +53,10 @@ public class JDiscContainerSearchTest { } @Test(expected = UnsupportedOperationException.class) - public void retrieving_search_from_container_without_search_is_illegal() throws Exception { + public void retrieving_search_from_container_without_search_is_illegal() { try (JDisc container = JDisc.fromServicesXml("<container version=\"1.0\" />", Networking.disable)) { container.search(); // throws } + } } diff --git a/application/src/test/java/com/yahoo/application/container/JDiscTest.java b/application/src/test/java/com/yahoo/application/container/ContainerTest.java index 86a96d04848..e44916d2ec4 100644 --- a/application/src/test/java/com/yahoo/application/container/JDiscTest.java +++ b/application/src/test/java/com/yahoo/application/container/ContainerTest.java @@ -32,9 +32,10 @@ import static org.junit.Assert.fail; * @author gjoranv * @author ollivir */ -public class JDiscTest { +public class ContainerTest { + @Test - public void jdisc_can_be_used_as_top_level_element() throws Exception { + public void jdisc_can_be_used_as_top_level_element() { try (JDisc container = fromServicesXml("<jdisc version=\"1.0\">" + // "<search />" + // "</jdisc>", Networking.disable)) { @@ -43,7 +44,7 @@ public class JDiscTest { } @Test - public void jdisc_id_can_be_set() throws Exception { + public void jdisc_id_can_be_set() { try (JDisc container = fromServicesXml("<jdisc version=\"1.0\" id=\"my-service-id\">" + // "<search />" + // "</jdisc>", Networking.disable)) { @@ -52,7 +53,7 @@ public class JDiscTest { } @Test - public void jdisc_can_be_embedded_in_services_tag() throws Exception { + public void jdisc_can_be_embedded_in_services_tag() { try (JDisc container = fromServicesXml("<services>" + // "<jdisc version=\"1.0\" id=\"my-service-id\">" + // "<search />" + // @@ -77,7 +78,7 @@ public class JDiscTest { } @Test - public void handleRequest_yields_response_from_correct_request_handler() throws Exception { + public void handleRequest_yields_response_from_correct_request_handler() { final String handlerClass = TestHandler.class.getName(); try (JDisc container = fromServicesXml("<container version=\"1.0\">" + // "<handler id=\"test-handler\" class=\"" + handlerClass + "\">" + // @@ -94,7 +95,7 @@ public class JDiscTest { } @Test - public void load_searcher_from_bundle() throws Exception { + public void load_searcher_from_bundle() { try (JDisc container = JDisc.fromPath(FileSystems.getDefault().getPath("src/test/app-packages/searcher-app"), Networking.disable)) { Result result = container.search().process(ComponentSpecification.fromString("default"), @@ -175,4 +176,5 @@ public class JDiscTest { } throw new RuntimeException("No http server found"); } + } diff --git a/application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java b/application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java index 9c3cd1e612c..89c23fe0001 100644 --- a/application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java +++ b/application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java @@ -3,11 +3,10 @@ package com.yahoo.application.container.jersey; import com.yahoo.application.Networking; import com.yahoo.application.container.JDisc; -import com.yahoo.application.container.JDiscTest; +import com.yahoo.application.container.ContainerTest; import com.yahoo.application.container.jersey.resources.TestResource; import com.yahoo.application.container.jersey.resources.nestedpackage1.NestedTestResource1; import com.yahoo.application.container.jersey.resources.nestedpackage2.NestedTestResource2; -import com.yahoo.container.Container; import com.yahoo.container.test.jars.jersey.resources.TestResourceBase; import com.yahoo.osgi.maven.ProjectBundleClassPaths; import com.yahoo.osgi.maven.ProjectBundleClassPaths.BundleClasspathMapping; @@ -144,7 +143,7 @@ public class JerseyTest { "</jdisc>" + // "</services>", // Networking.enable)) { - final int port = JDiscTest.getListenPort(); + final int port = ContainerTest.getListenPort(); f.accept(path -> { String p = path.startsWith("/") ? path.substring(1) : path; CloseableHttpClient client = HttpClientBuilder.create().build(); |