Search in sources :

Example 1 with Either

use of org.apache.druid.java.util.common.Either in project druid by druid-io.

the class ObjectOrErrorResponseHandlerTest method testExceptionAfterOk.

@Test
public void testExceptionAfterOk() throws Exception {
    HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
    response.setChunked(false);
    response.setContent(new BigEndianHeapChannelBuffer("abcd".getBytes(StringUtils.UTF8_STRING)));
    final ObjectOrErrorResponseHandler<InputStreamFullResponseHolder, InputStreamFullResponseHolder> responseHandler = new ObjectOrErrorResponseHandler<>(new InputStreamFullResponseHandler());
    ClientResponse<Either<StringFullResponseHolder, InputStreamFullResponseHolder>> clientResp = responseHandler.handleResponse(response, null);
    Exception ex = new RuntimeException("dummy!");
    responseHandler.exceptionCaught(clientResp, ex);
    // Exception after HTTP OK still is handled by the "OK handler"
    // (The handler that starts the request gets to finish it.)
    Assert.assertTrue(clientResp.isFinished());
    Assert.assertTrue(clientResp.getObj().isValue());
    final InputStream responseStream = clientResp.getObj().valueOrThrow().getContent();
    final IOException e = Assert.assertThrows(IOException.class, () -> IOUtils.toString(responseStream, StandardCharsets.UTF_8));
    Assert.assertEquals("java.lang.RuntimeException: dummy!", e.getMessage());
}
Also used : InputStream(java.io.InputStream) DefaultHttpResponse(org.jboss.netty.handler.codec.http.DefaultHttpResponse) HttpResponse(org.jboss.netty.handler.codec.http.HttpResponse) BigEndianHeapChannelBuffer(org.jboss.netty.buffer.BigEndianHeapChannelBuffer) IOException(java.io.IOException) IOException(java.io.IOException) DefaultHttpResponse(org.jboss.netty.handler.codec.http.DefaultHttpResponse) Either(org.apache.druid.java.util.common.Either) Test(org.junit.Test)

Example 2 with Either

use of org.apache.druid.java.util.common.Either in project druid by druid-io.

the class ObjectOrErrorResponseHandlerTest method testOk.

@Test
public void testOk() throws Exception {
    HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
    response.setChunked(false);
    response.setContent(new BigEndianHeapChannelBuffer("abcd".getBytes(StringUtils.UTF8_STRING)));
    final ObjectOrErrorResponseHandler<InputStreamFullResponseHolder, InputStreamFullResponseHolder> responseHandler = new ObjectOrErrorResponseHandler<>(new InputStreamFullResponseHandler());
    ClientResponse<Either<StringFullResponseHolder, InputStreamFullResponseHolder>> clientResp = responseHandler.handleResponse(response, null);
    DefaultHttpChunk chunk = new DefaultHttpChunk(new BigEndianHeapChannelBuffer("efg".getBytes(StringUtils.UTF8_STRING)));
    clientResp = responseHandler.handleChunk(clientResp, chunk, 0);
    clientResp = responseHandler.done(clientResp);
    Assert.assertTrue(clientResp.isFinished());
    Assert.assertEquals("abcdefg", IOUtils.toString(clientResp.getObj().valueOrThrow().getContent(), StandardCharsets.UTF_8));
}
Also used : DefaultHttpChunk(org.jboss.netty.handler.codec.http.DefaultHttpChunk) DefaultHttpResponse(org.jboss.netty.handler.codec.http.DefaultHttpResponse) DefaultHttpResponse(org.jboss.netty.handler.codec.http.DefaultHttpResponse) HttpResponse(org.jboss.netty.handler.codec.http.HttpResponse) BigEndianHeapChannelBuffer(org.jboss.netty.buffer.BigEndianHeapChannelBuffer) Either(org.apache.druid.java.util.common.Either) Test(org.junit.Test)

Example 3 with Either

use of org.apache.druid.java.util.common.Either in project druid by druid-io.

the class ObjectOrErrorResponseHandlerTest method testServerError.

@Test
public void testServerError() throws Exception {
    HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR);
    response.setChunked(false);
    response.setContent(new BigEndianHeapChannelBuffer("abcd".getBytes(StringUtils.UTF8_STRING)));
    final ObjectOrErrorResponseHandler<InputStreamFullResponseHolder, InputStreamFullResponseHolder> responseHandler = new ObjectOrErrorResponseHandler<>(new InputStreamFullResponseHandler());
    ClientResponse<Either<StringFullResponseHolder, InputStreamFullResponseHolder>> clientResp = responseHandler.handleResponse(response, null);
    DefaultHttpChunk chunk = new DefaultHttpChunk(new BigEndianHeapChannelBuffer("efg".getBytes(StringUtils.UTF8_STRING)));
    clientResp = responseHandler.handleChunk(clientResp, chunk, 0);
    clientResp = responseHandler.done(clientResp);
    // 5xx HTTP code is handled by the error handler.
    Assert.assertTrue(clientResp.isFinished());
    Assert.assertTrue(clientResp.getObj().isError());
    Assert.assertEquals(HttpResponseStatus.INTERNAL_SERVER_ERROR.getCode(), clientResp.getObj().error().getResponse().getStatus().getCode());
    Assert.assertEquals("abcdefg", clientResp.getObj().error().getContent());
}
Also used : DefaultHttpChunk(org.jboss.netty.handler.codec.http.DefaultHttpChunk) DefaultHttpResponse(org.jboss.netty.handler.codec.http.DefaultHttpResponse) DefaultHttpResponse(org.jboss.netty.handler.codec.http.DefaultHttpResponse) HttpResponse(org.jboss.netty.handler.codec.http.HttpResponse) BigEndianHeapChannelBuffer(org.jboss.netty.buffer.BigEndianHeapChannelBuffer) Either(org.apache.druid.java.util.common.Either) Test(org.junit.Test)

Aggregations

Either (org.apache.druid.java.util.common.Either)3 BigEndianHeapChannelBuffer (org.jboss.netty.buffer.BigEndianHeapChannelBuffer)3 DefaultHttpResponse (org.jboss.netty.handler.codec.http.DefaultHttpResponse)3 HttpResponse (org.jboss.netty.handler.codec.http.HttpResponse)3 Test (org.junit.Test)3 DefaultHttpChunk (org.jboss.netty.handler.codec.http.DefaultHttpChunk)2 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1