@Test(expectedExceptions = ExecutionException.class) public void testGetThrowsExceptionOnAbort() throws InterruptedException, ExecutionException { AsyncHandler<?> asyncHandler = mock(AsyncHandler.class); NettyResponseFuture<?> nettyResponseFuture = new NettyResponseFuture<>(null, asyncHandler, null, 3, null, null, null); nettyResponseFuture.abort(new RuntimeException()); nettyResponseFuture.get(); fail("An ExecutionException must have occurred by now as 'abort' was called before 'get'"); } }
@Test(expectedExceptions = CancellationException.class) public void testGetContentThrowsCancellationExceptionIfCancelled() throws InterruptedException, ExecutionException { AsyncHandler<?> asyncHandler = mock(AsyncHandler.class); NettyResponseFuture<?> nettyResponseFuture = new NettyResponseFuture<>(null, asyncHandler, null, 3, null, null, null); nettyResponseFuture.cancel(false); nettyResponseFuture.get(); fail("A CancellationException must have occurred by now as 'cancel' was called before 'get'"); }
@Test public void testGet() throws Exception { @SuppressWarnings("unchecked") AsyncHandler<Object> asyncHandler = mock(AsyncHandler.class); Object value = new Object(); when(asyncHandler.onCompleted()).thenReturn(value); NettyResponseFuture<?> nettyResponseFuture = new NettyResponseFuture<>(null, asyncHandler, null, 3, null, null, null); nettyResponseFuture.done(); Object result = nettyResponseFuture.get(); assertEquals(result, value, "The Future should return the value given by asyncHandler#onCompleted"); }
@Test(expectedExceptions = ExecutionException.class) public void testGetThrowsExceptionThrownByAsyncHandler() throws Exception { AsyncHandler<?> asyncHandler = mock(AsyncHandler.class); when(asyncHandler.onCompleted()).thenThrow(new RuntimeException()); NettyResponseFuture<?> nettyResponseFuture = new NettyResponseFuture<>(null, asyncHandler, null, 3, null, null, null); nettyResponseFuture.done(); nettyResponseFuture.get(); fail("An ExecutionException must have occurred by now as asyncHandler threw an exception in 'onCompleted'"); }
@Test public void testCancelOnAlreadyCancelled() { AsyncHandler<?> asyncHandler = mock(AsyncHandler.class); NettyResponseFuture<?> nettyResponseFuture = new NettyResponseFuture<>(null, asyncHandler, null, 3, null, null, null); nettyResponseFuture.cancel(false); boolean result = nettyResponseFuture.cancel(false); assertFalse(result, "cancel should return false for an already cancelled Future"); assertTrue(nettyResponseFuture.isCancelled(), "isCancelled should return true for a cancelled Future"); }
private <T> NettyResponseFuture<T> newNettyResponseFuture(Request request, AsyncHandler<T> asyncHandler, NettyRequest nettyRequest, ProxyServer proxyServer) { NettyResponseFuture<T> future = new NettyResponseFuture<>( request, asyncHandler, nettyRequest, config.getMaxRequestRetry(), request.getChannelPoolPartitioning(), connectionSemaphore, proxyServer); String expectHeader = request.getHeaders().get(EXPECT); if (HttpHeaderValues.CONTINUE.contentEqualsIgnoreCase(expectHeader)) future.setDontWriteBodyBecauseExpectContinue(true); return future; }
@Test public void testCancel() { AsyncHandler<?> asyncHandler = mock(AsyncHandler.class); NettyResponseFuture<?> nettyResponseFuture = new NettyResponseFuture<>(null, asyncHandler, null, 3, null, null, null); boolean result = nettyResponseFuture.cancel(false); verify(asyncHandler).onThrowable(anyObject()); assertTrue(result, "Cancel should return true if the Future was cancelled successfully"); assertTrue(nettyResponseFuture.isCancelled(), "isCancelled should return true for a cancelled Future"); }
private <T> NettyResponseFuture<T> newNettyResponseFuture(Uri uri, Request request, AsyncHandler<T> asyncHandler, NettyRequest nettyRequest, ProxyServer proxyServer) { NettyResponseFuture<T> future = new NettyResponseFuture<>(// uri,// request,// asyncHandler,// nettyRequest,// config.getMaxRequestRetry(),// request.getConnectionPoolPartitioning(),// proxyServer); String expectHeader = request.getHeaders().getFirstValue(HttpHeaders.Names.EXPECT); if (expectHeader != null && expectHeader.equalsIgnoreCase(HttpHeaders.Values.CONTINUE)) future.setDontWriteBodyBecauseExpectContinue(true); return future; }
private <T> NettyResponseFuture<T> newNettyResponseFuture(Request request, AsyncHandler<T> asyncHandler, NettyRequest nettyRequest, ProxyServer proxyServer) { NettyResponseFuture<T> future = new NettyResponseFuture<>(// request,// asyncHandler,// nettyRequest,// config.getMaxRequestRetry(),// request.getConnectionPoolPartitioning(),// proxyServer); String expectHeader = request.getHeaders().getFirstValue(HttpHeaders.Names.EXPECT); if (expectHeader != null && expectHeader.equalsIgnoreCase(HttpHeaders.Values.CONTINUE)) future.setDontWriteBodyBecauseExpectContinue(true); return future; }
private <T> NettyResponseFuture<T> newNettyResponseFuture(Request request, AsyncHandler<T> asyncHandler, NettyRequest nettyRequest, ProxyServer proxyServer) { NettyResponseFuture<T> future = new NettyResponseFuture<>(// request,// asyncHandler,// nettyRequest,// config.getMaxRequestRetry(),// request.getConnectionPoolPartitioning(),// proxyServer); String expectHeader = request.getHeaders().getFirstValue(HttpHeaders.Names.EXPECT); if (expectHeader != null && expectHeader.equalsIgnoreCase(HttpHeaders.Values.CONTINUE)) future.setDontWriteBodyBecauseExpectContinue(true); return future; }
private <T> NettyResponseFuture<T> newNettyResponseFuture(Uri uri, Request request, AsyncHandler<T> asyncHandler, NettyRequest nettyRequest, ProxyServer proxyServer) { NettyResponseFuture<T> future = new NettyResponseFuture<>(// uri,// request,// asyncHandler,// nettyRequest,// config.getMaxRequestRetry(),// request.getConnectionPoolPartitioning(),// proxyServer); String expectHeader = request.getHeaders().getFirstValue(HttpHeaders.Names.EXPECT); if (expectHeader != null && expectHeader.equalsIgnoreCase(HttpHeaders.Values.CONTINUE)) future.setDontWriteBodyBecauseExpectContinue(true); return future; }