diff options
Diffstat (limited to 'container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java')
-rw-r--r-- | container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java | 295 |
1 files changed, 146 insertions, 149 deletions
diff --git a/container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java b/container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java index baed2ccdcc8..70bae6c97b1 100644 --- a/container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java +++ b/container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java @@ -21,9 +21,9 @@ import com.yahoo.processing.rendering.Renderer; import com.yahoo.processing.request.ErrorMessage; import com.yahoo.processing.response.Data; import com.yahoo.processing.test.ProcessorLibrary; -import org.junit.After; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.InputStream; @@ -39,12 +39,7 @@ import java.util.concurrent.ExecutionException; import static com.yahoo.jdisc.http.server.jetty.AccessLoggingRequestHandler.CONTEXT_KEY_ACCESS_LOG_ENTRY; import static com.yahoo.processing.test.ProcessorLibrary.MapData; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.*; /** * Tests processing handler scenarios end to end. @@ -74,13 +69,13 @@ public class ProcessingHandlerTestCase { new Chain<>("log-value", new ProcessorLibrary.LogValueAdder(LOG_KEY, LOG_VALUE)); - @After + @AfterEach public void shutDown() { driver.close(); } @Test - public void processing_handler_stores_trace_log_values_in_the_access_log_entry() { + void processing_handler_stores_trace_log_values_in_the_access_log_entry() { driver = new ProcessingTestDriver(logValueChain); Request request = HttpRequest.newServerRequest(driver.jDiscDriver(), URI.create("http://localhost/?chain=log-value"), HttpRequest.Method.GET); AccessLogEntry entry = new AccessLogEntry(); @@ -95,7 +90,7 @@ public class ProcessingHandlerTestCase { } @Test - public void testProcessingHandlerResolvesChains() { + void testProcessingHandlerResolvesChains() { List<Chain<Processor>> chains = new ArrayList<>(); chains.add(defaultChain); chains.add(simpleChain); @@ -106,16 +101,16 @@ public class ProcessingHandlerTestCase { } @Test - public void testProcessingHandlerPropagatesRequestParametersAndContext() { + void testProcessingHandlerPropagatesRequestParametersAndContext() { List<Chain<Processor>> chains = new ArrayList<>(); chains.add(new Chain<>("default", new RequestPropertyTracer())); driver = new ProcessingTestDriver(chains); - assertTrue("JDisc request context is propagated to properties()", - driver.sendRequest("http://localhost/?chain=default&tracelevel=4").readAll().contains("context.contextVariable: '37'")); + assertTrue(driver.sendRequest("http://localhost/?chain=default&tracelevel=4").readAll().contains("context.contextVariable: '37'"), + "JDisc request context is propagated to properties()"); } @Test - public void testProcessingHandlerOutputsTrace() { + void testProcessingHandlerOutputsTrace() { List<Chain<Processor>> chains = new ArrayList<>(); chains.add(defaultChain); driver = new ProcessingTestDriver(chains); @@ -128,28 +123,28 @@ public class ProcessingHandlerTestCase { } @Test - public void testProcessingHandlerTransfersErrorsToHttpStatusCodesNoData() { + void testProcessingHandlerTransfersErrorsToHttpStatusCodesNoData() { List<Chain<Processor>> chains = new ArrayList<>(); chains.add(simpleChain); - chains.add(new Chain<>("moved_permanently", new ProcessorLibrary.ErrorAdder(new ErrorMessage(301,"Message")))); - chains.add(new Chain<>("unauthorized", new ProcessorLibrary.ErrorAdder(new ErrorMessage(401,"Message")))); - chains.add(new Chain<>("unauthorized_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.UNAUTHORIZED.code,"Message")))); - chains.add(new Chain<>("forbidden", new ProcessorLibrary.ErrorAdder(new ErrorMessage(403,"Message")))); - chains.add(new Chain<>("forbidden_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.FORBIDDEN.code,"Message")))); - chains.add(new Chain<>("not_found", new ProcessorLibrary.ErrorAdder(new ErrorMessage(404,"Message")))); - chains.add(new Chain<>("not_found_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.NOT_FOUND.code,"Message")))); - chains.add(new Chain<>("too_many_requests", new ProcessorLibrary.ErrorAdder(new ErrorMessage(429,"Message")))); - chains.add(new Chain<>("bad_request", new ProcessorLibrary.ErrorAdder(new ErrorMessage(400,"Message")))); - chains.add(new Chain<>("bad_request_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.BAD_REQUEST.code,"Message")))); - chains.add(new Chain<>("internal_server_error", new ProcessorLibrary.ErrorAdder(new ErrorMessage(500,"Message")))); - chains.add(new Chain<>("internal_server_error_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.INTERNAL_SERVER_ERROR.code,"Message")))); - chains.add(new Chain<>("service_unavailable", new ProcessorLibrary.ErrorAdder(new ErrorMessage(503,"Message")))); - chains.add(new Chain<>("service_unavailable_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.NO_BACKENDS_IN_SERVICE.code,"Message")))); - chains.add(new Chain<>("gateway_timeout", new ProcessorLibrary.ErrorAdder(new ErrorMessage(504,"Message")))); - chains.add(new Chain<>("gateway_timeout_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.TIMEOUT.code,"Message")))); - chains.add(new Chain<>("bad_gateway", new ProcessorLibrary.ErrorAdder(new ErrorMessage(502,"Message")))); - chains.add(new Chain<>("bad_gateway_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.BACKEND_COMMUNICATION_ERROR.code,"Message")))); - chains.add(new Chain<>("unknown_code", new ProcessorLibrary.ErrorAdder(new ErrorMessage(1234567,"Message")))); + chains.add(new Chain<>("moved_permanently", new ProcessorLibrary.ErrorAdder(new ErrorMessage(301, "Message")))); + chains.add(new Chain<>("unauthorized", new ProcessorLibrary.ErrorAdder(new ErrorMessage(401, "Message")))); + chains.add(new Chain<>("unauthorized_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.UNAUTHORIZED.code, "Message")))); + chains.add(new Chain<>("forbidden", new ProcessorLibrary.ErrorAdder(new ErrorMessage(403, "Message")))); + chains.add(new Chain<>("forbidden_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.FORBIDDEN.code, "Message")))); + chains.add(new Chain<>("not_found", new ProcessorLibrary.ErrorAdder(new ErrorMessage(404, "Message")))); + chains.add(new Chain<>("not_found_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.NOT_FOUND.code, "Message")))); + chains.add(new Chain<>("too_many_requests", new ProcessorLibrary.ErrorAdder(new ErrorMessage(429, "Message")))); + chains.add(new Chain<>("bad_request", new ProcessorLibrary.ErrorAdder(new ErrorMessage(400, "Message")))); + chains.add(new Chain<>("bad_request_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.BAD_REQUEST.code, "Message")))); + chains.add(new Chain<>("internal_server_error", new ProcessorLibrary.ErrorAdder(new ErrorMessage(500, "Message")))); + chains.add(new Chain<>("internal_server_error_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.INTERNAL_SERVER_ERROR.code, "Message")))); + chains.add(new Chain<>("service_unavailable", new ProcessorLibrary.ErrorAdder(new ErrorMessage(503, "Message")))); + chains.add(new Chain<>("service_unavailable_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.NO_BACKENDS_IN_SERVICE.code, "Message")))); + chains.add(new Chain<>("gateway_timeout", new ProcessorLibrary.ErrorAdder(new ErrorMessage(504, "Message")))); + chains.add(new Chain<>("gateway_timeout_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.TIMEOUT.code, "Message")))); + chains.add(new Chain<>("bad_gateway", new ProcessorLibrary.ErrorAdder(new ErrorMessage(502, "Message")))); + chains.add(new Chain<>("bad_gateway_mapped", new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.BACKEND_COMMUNICATION_ERROR.code, "Message")))); + chains.add(new Chain<>("unknown_code", new ProcessorLibrary.ErrorAdder(new ErrorMessage(1234567, "Message")))); driver = new ProcessingTestDriver(chains); assertEqualStatus(200, "http://localhost/?chain=simple"); assertEqualStatus(301, "http://localhost/?chain=moved_permanently"); @@ -174,28 +169,28 @@ public class ProcessingHandlerTestCase { } @Test - public void testProcessingHandlerTransfersErrorsToHttpStatusCodesWithData() { + void testProcessingHandlerTransfersErrorsToHttpStatusCodesWithData() { List<Chain<Processor>> chains = new ArrayList<>(); chains.add(simpleChain); - chains.add(new Chain<>("moved_permanently", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(301,"Message")))); - chains.add(new Chain<>("unauthorized", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(401,"Message")))); - chains.add(new Chain<>("unauthorized_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.UNAUTHORIZED.code,"Message")))); - chains.add(new Chain<>("forbidden", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(403,"Message")))); - chains.add(new Chain<>("forbidden_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.FORBIDDEN.code,"Message")))); - chains.add(new Chain<>("not_found", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(404,"Message")))); - chains.add(new Chain<>("not_found_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.NOT_FOUND.code,"Message")))); - chains.add(new Chain<>("too_many_requests", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(429,"Message")))); - chains.add(new Chain<>("bad_request", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(400,"Message")))); - chains.add(new Chain<>("bad_request_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.BAD_REQUEST.code,"Message")))); - chains.add(new Chain<>("internal_server_error", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(500,"Message")))); - chains.add(new Chain<>("internal_server_error_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.INTERNAL_SERVER_ERROR.code,"Message")))); - chains.add(new Chain<>("service_unavailable", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(503,"Message")))); - chains.add(new Chain<>("service_unavailable_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.NO_BACKENDS_IN_SERVICE.code,"Message")))); - chains.add(new Chain<>("gateway_timeout", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(504,"Message")))); - chains.add(new Chain<>("gateway_timeout_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.TIMEOUT.code,"Message")))); - chains.add(new Chain<>("bad_gateway", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(502,"Message")))); - chains.add(new Chain<>("bad_gateway_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.BACKEND_COMMUNICATION_ERROR.code,"Message")))); - chains.add(new Chain<>("unknown_code", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(1234567,"Message")))); + chains.add(new Chain<>("moved_permanently", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(301, "Message")))); + chains.add(new Chain<>("unauthorized", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(401, "Message")))); + chains.add(new Chain<>("unauthorized_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.UNAUTHORIZED.code, "Message")))); + chains.add(new Chain<>("forbidden", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(403, "Message")))); + chains.add(new Chain<>("forbidden_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.FORBIDDEN.code, "Message")))); + chains.add(new Chain<>("not_found", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(404, "Message")))); + chains.add(new Chain<>("not_found_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.NOT_FOUND.code, "Message")))); + chains.add(new Chain<>("too_many_requests", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(429, "Message")))); + chains.add(new Chain<>("bad_request", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(400, "Message")))); + chains.add(new Chain<>("bad_request_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.BAD_REQUEST.code, "Message")))); + chains.add(new Chain<>("internal_server_error", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(500, "Message")))); + chains.add(new Chain<>("internal_server_error_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.INTERNAL_SERVER_ERROR.code, "Message")))); + chains.add(new Chain<>("service_unavailable", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(503, "Message")))); + chains.add(new Chain<>("service_unavailable_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.NO_BACKENDS_IN_SERVICE.code, "Message")))); + chains.add(new Chain<>("gateway_timeout", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(504, "Message")))); + chains.add(new Chain<>("gateway_timeout_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.TIMEOUT.code, "Message")))); + chains.add(new Chain<>("bad_gateway", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(502, "Message")))); + chains.add(new Chain<>("bad_gateway_mapped", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.BACKEND_COMMUNICATION_ERROR.code, "Message")))); + chains.add(new Chain<>("unknown_code", new ProcessorLibrary.StringDataAdder("Hello"), new ProcessorLibrary.ErrorAdder(new ErrorMessage(1234567, "Message")))); driver = new ProcessingTestDriver(chains); assertEqualStatus(200, "http://localhost/?chain=simple"); assertEqualStatus(301, "http://localhost/?chain=moved_permanently"); @@ -220,27 +215,27 @@ public class ProcessingHandlerTestCase { } @Test - public void testProcessorSetsResponseHeaders() throws InterruptedException { + void testProcessorSetsResponseHeaders() throws InterruptedException { ProcessingTestDriver.MockResponseHandler responseHandler = null; try { - Map<String,List<String>> responseHeaders = new HashMap<>(); + Map<String, List<String>> responseHeaders = new HashMap<>(); responseHeaders.put("foo", List.of("fooValue")); responseHeaders.put("bar", List.of("barValue", "bazValue")); - Map<String,List<String>> otherResponseHeaders = new HashMap<>(); + Map<String, List<String>> otherResponseHeaders = new HashMap<>(); otherResponseHeaders.put("foo", List.of("fooValue2")); otherResponseHeaders.put("bax", List.of("baxValue")); List<Chain<Processor>> chains = new ArrayList<>(); - chains.add(new Chain<>("default",new ResponseHeaderSetter(responseHeaders), - new ResponseHeaderSetter(otherResponseHeaders))); + chains.add(new Chain<>("default", new ResponseHeaderSetter(responseHeaders), + new ResponseHeaderSetter(otherResponseHeaders))); driver = new ProcessingTestDriver(chains); responseHandler = driver.sendRequest("http://localhost/?chain=default").awaitResponse(); Response response = responseHandler.getResponse(); - assertEquals("[fooValue2, fooValue]",response.headers().get("foo").toString()); + assertEquals("[fooValue2, fooValue]", response.headers().get("foo").toString()); assertEquals("[barValue, bazValue]", response.headers().get("bar").toString()); assertEquals("[baxValue]", response.headers().get("bax").toString()); - assertEquals("ResponseHeaders are not rendered", "{\"datalist\":[]}", responseHandler.read()); + assertEquals("{\"datalist\":[]}", responseHandler.read(), "ResponseHeaders are not rendered"); } finally { if (responseHandler != null) @@ -249,7 +244,7 @@ public class ProcessingHandlerTestCase { } @Test - public void testResponseDataStatus() throws InterruptedException { + void testResponseDataStatus() throws InterruptedException { ProcessingTestDriver.MockResponseHandler responseHandler = null; try { List<Chain<Processor>> chains = new ArrayList<>(); @@ -258,7 +253,7 @@ public class ProcessingHandlerTestCase { responseHandler = driver.sendRequest("http://localhost/?chain=default").awaitResponse(); Response response = responseHandler.getResponse(); assertEquals(429, response.getStatus()); - assertEquals("ResponseHeaders are not rendered", "{\"datalist\":[]}", responseHandler.read()); + assertEquals("{\"datalist\":[]}", responseHandler.read(), "ResponseHeaders are not rendered"); } finally { if (responseHandler != null) @@ -268,13 +263,13 @@ public class ProcessingHandlerTestCase { /** Tests that the ResponseStatus takes precedence over errors */ @Test - public void testResponseDataStatusOverridesErrors() throws InterruptedException { + void testResponseDataStatusOverridesErrors() throws InterruptedException { ProcessingTestDriver.MockResponseHandler responseHandler = null; try { List<Chain<Processor>> chains = new ArrayList<>(); chains.add(new Chain<>("default", new ResponseStatusSetter(200), - new ProcessorLibrary.StringDataAdder("Hello"), - new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.FORBIDDEN.code,"Message")))); + new ProcessorLibrary.StringDataAdder("Hello"), + new ProcessorLibrary.ErrorAdder(new ErrorMessage(Error.FORBIDDEN.code, "Message")))); driver = new ProcessingTestDriver(chains); responseHandler = driver.sendRequest("http://localhost/?chain=default").awaitResponse(); Response response = responseHandler.getResponse(); @@ -304,14 +299,14 @@ public class ProcessingHandlerTestCase { @SuppressWarnings("unchecked") @Test - public void testProcessingHandlerSupportsAsyncRendering() { + void testProcessingHandlerSupportsAsyncRendering() { // Set up ProcessorLibrary.FutureDataSource futureDataSource = new ProcessorLibrary.FutureDataSource(); Chain<Processor> asyncCompletionChain = new Chain<>("asyncCompletion", new ProcessorLibrary.DataCounter("async")); Chain<Processor> chain = new Chain<>("federation", new ProcessorLibrary.DataCounter("sync"), - new ProcessorLibrary.Federator(new Chain<Processor>(new ProcessorLibrary.DataSource()), - new Chain<>(new ProcessorLibrary.AsyncDataProcessingInitiator(asyncCompletionChain),futureDataSource))); + new ProcessorLibrary.Federator(new Chain<Processor>(new ProcessorLibrary.DataSource()), + new Chain<>(new ProcessorLibrary.AsyncDataProcessingInitiator(asyncCompletionChain), futureDataSource))); List<Chain<Processor>> chains = new ArrayList<>(); chains.add(chain); driver = new ProcessingTestDriver(chains); @@ -320,46 +315,46 @@ public class ProcessingHandlerTestCase { String synchronousResponse = responseHandler.read(); assertEquals( "{\"datalist\":[" + - "{\"datalist\":[" + - "{\"data\":\"first.null\"}," + - "{\"data\":\"second.null\"}," + - "{\"data\":\"third.null\"}" + - "]}", + "{\"datalist\":[" + + "{\"data\":\"first.null\"}," + + "{\"data\":\"second.null\"}," + + "{\"data\":\"third.null\"}" + + "]}", synchronousResponse); - assertEquals("No more data is available at this point", 0, responseHandler.available()); + assertEquals(0, responseHandler.available(), "No more data is available at this point"); // Now, complete async data futureDataSource.incomingData.get(0).add(new ProcessorLibrary.StringData(null, "d1")); assertEquals( - "," + - "{\"datalist\":[" + - "{\"data\":\"d1\"}", - responseHandler.read()); + "," + + "{\"datalist\":[" + + "{\"data\":\"d1\"}", + responseHandler.read()); futureDataSource.incomingData.get(0).addLast(new ProcessorLibrary.StringData(null, "d2")); // ... which leads to the rest of the response becoming available assertEquals( - "," + - "{\"data\":\"d2\"}," + - "{\"data\":\"[async] Data count: 2\"}" + - "]}", + "," + + "{\"data\":\"d2\"}," + + "{\"data\":\"[async] Data count: 2\"}" + + "]}", responseHandler.read()); assertEquals(",{\"data\":\"[sync] Data count: 3\"}" + // Async items not counted as they arrive after chain completion - "]}", - responseHandler.read()); - assertNull("Transmission completed", responseHandler.read()); + "]}", + responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } @SuppressWarnings("unchecked") @Test - public void testProcessingHandlerSupportsAsyncUnorderedRendering() { + void testProcessingHandlerSupportsAsyncUnorderedRendering() { // Set up ProcessorLibrary.FutureDataSource futureDataSource1 = new ProcessorLibrary.FutureDataSource(); ProcessorLibrary.FutureDataSource futureDataSource2 = new ProcessorLibrary.FutureDataSource(); Chain<Processor> chain = new Chain<>("federation", - new ProcessorLibrary.Federator(false,new Chain<Processor>(futureDataSource1), - new Chain<Processor>(futureDataSource2))); + new ProcessorLibrary.Federator(false, new Chain<Processor>(futureDataSource1), + new Chain<Processor>(futureDataSource2))); List<Chain<Processor>> chains = new ArrayList<>(); chains.add(chain); driver = new ProcessingTestDriver(chains); @@ -368,69 +363,69 @@ public class ProcessingHandlerTestCase { assertEquals( "{\"datalist\":[", responseHandler.read()); - assertEquals("No more data is available at this point", 0, responseHandler.available()); + assertEquals(0, responseHandler.available(), "No more data is available at this point"); // Complete second async data first futureDataSource2.incomingData.get(0).addLast(new ProcessorLibrary.StringData(null, "d2")); assertEquals( - "{\"datalist\":[" + - "{\"data\":\"d2\"}"+ - "]}", - responseHandler.read()); + "{\"datalist\":[" + + "{\"data\":\"d2\"}" + + "]}", + responseHandler.read()); // Now complete first async data (which is therefore rendered last) futureDataSource1.incomingData.get(0).addLast(new ProcessorLibrary.StringData(null, "d1")); assertEquals( - "," + - "{\"datalist\":[" + - "{\"data\":\"d1\"}"+ - "]}", - responseHandler.read()); + "," + + "{\"datalist\":[" + + "{\"data\":\"d1\"}" + + "]}", + responseHandler.read()); assertEquals( - "]}", - responseHandler.read()); + "]}", + responseHandler.read()); - assertNull("Transmission completed", responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } @SuppressWarnings("unchecked") @Test - public void testAsyncOnlyRendering() throws Exception { + void testAsyncOnlyRendering() throws Exception { // Set up ProcessorLibrary.ListenableFutureDataSource futureDataSource = new ProcessorLibrary.ListenableFutureDataSource(); Chain<Processor> chain = new Chain<>("main", List.of(futureDataSource)); driver = new ProcessingTestDriver(chain); ProcessingTestDriver.MockResponseHandler responseHandler = driver.sendRequest("http://localhost/?chain=main"); - assertEquals("No data is available at this point", 0, responseHandler.available()); + assertEquals(0, responseHandler.available(), "No data is available at this point"); futureDataSource.incomingData.get().add(new ProcessorLibrary.StringData(null, "d1")); assertEquals( - "{\"datalist\":[" + - "{\"data\":\"d1\"}", - responseHandler.read()); + "{\"datalist\":[" + + "{\"data\":\"d1\"}", + responseHandler.read()); futureDataSource.incomingData.get().addLast(new ProcessorLibrary.StringData(null, "d2")); assertEquals( "," + - "{\"data\":\"d2\"}" + - "]}", + "{\"data\":\"d2\"}" + + "]}", responseHandler.read()); assertEquals(200, responseHandler.getStatus()); - assertNull("Transmission completed", responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } @SuppressWarnings("unchecked") @Test - public void testAsyncRenderingWithClientClose() throws Exception { + void testAsyncRenderingWithClientClose() throws Exception { // Set up ProcessorLibrary.ListenableFutureDataSource futureDataSource = new ProcessorLibrary.ListenableFutureDataSource(); Chain<Processor> chain = new Chain<>("main", List.of(futureDataSource)); driver = new ProcessingTestDriver(chain); ProcessingTestDriver.MockResponseHandler responseHandler = driver.sendRequest("http://localhost/?chain=main"); - assertEquals("No data is available at this point", 0, responseHandler.available()); + assertEquals(0, responseHandler.available(), "No data is available at this point"); futureDataSource.incomingData.get().add(new ProcessorLibrary.StringData(null, "d1")); assertEquals( @@ -443,24 +438,24 @@ public class ProcessingHandlerTestCase { assertNull(responseHandler.read()); assertEquals(200, responseHandler.getStatus()); - assertNull("Transmission completed", responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } @SuppressWarnings("unchecked") @Test - public void testAsyncOnlyRenderingWithAsyncPostData() throws Exception { + void testAsyncOnlyRenderingWithAsyncPostData() throws Exception { // Set up ProcessorLibrary.ListenableFutureDataSource futureDataSource = new ProcessorLibrary.ListenableFutureDataSource(); PostReader postReader = new PostReader(); Chain<Processor> chain = new Chain<>("main", - new ProcessorLibrary.AsyncDataProcessingInitiator(new Chain<>(postReader)), - futureDataSource); + new ProcessorLibrary.AsyncDataProcessingInitiator(new Chain<>(postReader)), + futureDataSource); driver = new ProcessingTestDriver(chain); RequestHandlerTestDriver.MockResponseHandler responseHandler = driver.sendRequest("http://localhost/?chain=main", HttpRequest.Method.POST, "Hello, world!"); - assertFalse("Post data is read later, on async completion", postReader.bodyDataFuture.isDone()); - assertEquals("No data is available at this point", 0, responseHandler.available()); + assertFalse(postReader.bodyDataFuture.isDone(), "Post data is read later, on async completion"); + assertEquals(0, responseHandler.available(), "No data is available at this point"); futureDataSource.incomingData.get().add(new ProcessorLibrary.StringData(null, "d1")); assertEquals( @@ -476,10 +471,10 @@ public class ProcessingHandlerTestCase { "]}", responseHandler.read() ); - assertEquals("Data is completed, so post data is read", "Hello, world!", postReader.bodyDataFuture.get().trim()); + assertEquals("Hello, world!", postReader.bodyDataFuture.get().trim(), "Data is completed, so post data is read"); assertEquals(200, responseHandler.getStatus()); - assertNull("Transmission completed", responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } private static class PostReader extends Processor { @@ -506,8 +501,8 @@ public class ProcessingHandlerTestCase { @SuppressWarnings("unchecked") @Test - public void testStatusAndHeadersCanBeSetAsynchronously() throws Exception { - Map<String,List<String>> responseHeaders = new HashMap<>(); + void testStatusAndHeadersCanBeSetAsynchronously() throws Exception { + Map<String, List<String>> responseHeaders = new HashMap<>(); responseHeaders.put("foo", List.of("fooValue")); responseHeaders.put("bar", List.of("barValue", "bazValue")); @@ -517,7 +512,7 @@ public class ProcessingHandlerTestCase { driver = new ProcessingTestDriver(chain); ProcessingTestDriver.MockResponseHandler responseHandler = driver.sendRequest("http://localhost/?chain=main"); - assertEquals("No data is available at this point", 0, responseHandler.available()); + assertEquals(0, responseHandler.available(), "No data is available at this point"); com.yahoo.processing.Request request = futureDataSource.incomingData.get().getOwner().request(); futureDataSource.incomingData.get().addLast(new ProcessorLibrary.StringData(request, "d1")); @@ -527,12 +522,12 @@ public class ProcessingHandlerTestCase { assertEquals(500, responseHandler.getStatus()); assertEquals("[fooValue]", responseHandler.getResponse().headers().get("foo").toString()); assertEquals("[barValue, bazValue]", responseHandler.getResponse().headers().get("bar").toString()); - assertNull("Transmission completed", responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } @SuppressWarnings("unchecked") @Test - public void testAsyncRenderingDoesNotHoldThreads() { + void testAsyncRenderingDoesNotHoldThreads() { // Set up ProcessorLibrary.FutureDataSource futureDataSource = new ProcessorLibrary.FutureDataSource(); // Add some sync data as well to cause rendering to start before async data is added. @@ -545,11 +540,11 @@ public class ProcessingHandlerTestCase { ProcessingTestDriver.MockResponseHandler[] responseHandler = new ProcessingTestDriver.MockResponseHandler[requestCount]; for (int i = 0; i < requestCount; i++) { responseHandler[i] = driver.sendRequest("http://localhost/?chain=main"); - assertEquals("Sync data is available", - "{\"datalist\":[{\"datalist\":[{\"data\":\"first.null\"},{\"data\":\"second.null\"},{\"data\":\"third.null\"}]}", - responseHandler[i].read()); + assertEquals("{\"datalist\":[{\"datalist\":[{\"data\":\"first.null\"},{\"data\":\"second.null\"},{\"data\":\"third.null\"}]}", + responseHandler[i].read(), + "Sync data is available"); } - assertEquals("All requests was processed", requestCount, futureDataSource.incomingData.size()); + assertEquals(requestCount, futureDataSource.incomingData.size(), "All requests was processed"); // Complete all for (int i = 0; i < requestCount; i++) { @@ -558,13 +553,13 @@ public class ProcessingHandlerTestCase { futureDataSource.incomingData.get(i).addLast(new ProcessorLibrary.StringData(null, "d2")); assertEquals(",{\"data\":\"d2\"}]}", responseHandler[i].read()); assertEquals("]}", responseHandler[i].read()); - assertNull("Transmission completed", responseHandler[i].read()); + assertNull(responseHandler[i].read(), "Transmission completed"); } } @SuppressWarnings("unchecked") @Test - public void testStreamedRendering() throws Exception { + void testStreamedRendering() throws Exception { // Set up Chain<Processor> streamChain = new Chain<>(new StreamProcessor()); @@ -593,26 +588,27 @@ public class ProcessingHandlerTestCase { ",{\"data\":\"map data: {streamProcessed=true}\"}]}", responseHandler.read()); - assertNull("Transmission completed", responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } @Test - public void testEagerStreamedRenderingOnFreeze() { + void testEagerStreamedRenderingOnFreeze() { FreezingDataSource source = new FreezingDataSource(); Chain<Processor> mainChain = new Chain<>("main", source); driver = new ProcessingTestDriver(mainChain); ProcessingTestDriver.MockResponseHandler responseHandler = driver.sendRequest("http://localhost/?chain=main"); - assertEquals("No data is available at this point", 0, responseHandler.available()); + assertEquals(0, responseHandler.available(), "No data is available at this point"); source.freeze.set(true); assertEquals("{\"datalist\":[{\"data\":\"d1\"}", responseHandler.read()); source.addLastData.set(true); // signal completion assertEquals(",{\"data\":\"d2\"}]}", responseHandler.read()); - assertNull("Transmission completed", responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } + // TODO @Test - @Ignore // TODO - public void testNestedEagerStreamedRenderingOnFreeze() { + @Disabled + void testNestedEagerStreamedRenderingOnFreeze() { try { FreezingDataSource source1 = new FreezingDataSource("s1"); FreezingDataSource source2 = new FreezingDataSource("s2"); @@ -625,16 +621,15 @@ public class ProcessingHandlerTestCase { new Chain<Processor>(source3))); driver = new ProcessingTestDriver(mainChain); ProcessingTestDriver.MockResponseHandler responseHandler = driver.sendRequest("http://localhost/?chain=main"); - assertEquals("No data is available at this point", 0, responseHandler.available()); + assertEquals(0, responseHandler.available(), "No data is available at this point"); source1.freeze.set(true); - assertEquals("Received because the parent list and source1 list is frozen", - "{\"datalist\":[{\"datalist\":[{\"data\":\"s1d1\"}", responseHandler.read()); + assertEquals("{\"datalist\":[{\"datalist\":[{\"data\":\"s1d1\"}", responseHandler.read(), "Received because the parent list and source1 list is frozen"); source2.addLastData.set(true); // No effect as we are working on source1, which is not completed yet assertEquals("{\"datalist\":[{\"data\":\"s1d1\"}", responseHandler.read()); source1.addLastData.set(true); // Make source 1 and 2 available assertEquals(",{\"data\":\"d2\"}]}", responseHandler.read()); - assertNull("Transmission completed", responseHandler.read()); + assertNull(responseHandler.read(), "Transmission completed"); } catch (Throwable t) { t.printStackTrace(); @@ -642,14 +637,16 @@ public class ProcessingHandlerTestCase { } } - @Test(expected = IllegalArgumentException.class) - public void testRetrievingNonExistingRendererThrows() { - driver = new ProcessingTestDriver(List.of()); - driver.processingHandler().getRendererCopy(ComponentSpecification.fromString("non-existent")); + @Test + void testRetrievingNonExistingRendererThrows() { + assertThrows(IllegalArgumentException.class, () -> { + driver = new ProcessingTestDriver(List.of()); + driver.processingHandler().getRendererCopy(ComponentSpecification.fromString("non-existent")); + }); } @Test - public void testDefaultRendererIsAddedToRegistryWhenNoneIsGivenByUser() { + void testDefaultRendererIsAddedToRegistryWhenNoneIsGivenByUser() { String defaultId = AbstractProcessingHandler.DEFAULT_RENDERER_ID; driver = new ProcessingTestDriver(List.of()); @@ -659,7 +656,7 @@ public class ProcessingHandlerTestCase { } @Test - public void testUserSpecifiedDefaultRendererIsNotReplacedInRegistry() { + void testUserSpecifiedDefaultRendererIsNotReplacedInRegistry() { String defaultId = AbstractProcessingHandler.DEFAULT_RENDERER_ID; Renderer myDefaultRenderer = new ProcessingRenderer(); ComponentRegistry<Renderer> renderers = new ComponentRegistry<>(); |