public static DefaultFullResponse.Builder newOk() { return defaultHeaders(DefaultFullResponse.builder().status(HttpResponseStatus.OK)); }
if (request.startOfMessage()) { log.error("proxy request failed client write failed", f.cause()); Response notFound = ResponseBuilders.newServiceUnavailable(request); ctx.writeAndFlush(notFound); } else { if (request.startOfMessage()) { log.error("proxy request failed - backend client disconnected"); Response notFound = ResponseBuilders.newNotFound(request); ctx.writeAndFlush(notFound); } else {
@Override public void handle(ChannelHandlerContext ctx, Request request, RouteState route) { Response notFound = ResponseBuilders.newNotFound(request); ctx.writeAndFlush(notFound); } }
Response notAvailable = ResponseBuilders.newServiceUnavailable(request); ctx.writeAndFlush(notAvailable);
@Test public void testFullResponse() throws Exception { outputReceived = new CountDownLatch(2); ByteBuf body = ByteBufUtil.writeUtf8(UnpooledByteBufAllocator.DEFAULT, "response"); FullHttpRequest requestIn = new DefaultFullHttpRequest(HTTP_1_1, GET, "/"); FullResponse responseIn = ResponseBuilders.newOk().body(body).build(); channel.writeInbound(requestIn); channel.runPendingTasks(); // blocks channel.writeOutbound(responseIn); channel.runPendingTasks(); // blocks Uninterruptibles.awaitUninterruptibly(outputReceived); HttpResponse responseOut = (HttpResponse) responses.remove(0); assertTrue(responseOut != null); assertTrue(responseOut instanceof FullHttpResponse); assertEquals(HTTP_1_1, responseOut.protocolVersion()); assertEquals(OK, responseOut.status()); assertFalse(((FullHttpResponse) responseOut).content() == null); assertEquals(body, ((FullHttpResponse) responseOut).content()); // https://tools.ietf.org/html/rfc7230#section-3.3.2 assertNotNull(responseOut.headers().get(HttpHeaderNames.CONTENT_LENGTH)); assertNull(responseOut.headers().get(HttpHeaderNames.TRANSFER_ENCODING)); }
public static DefaultFullResponse.Builder newOk(Request request) { return defaultHeaders( DefaultFullResponse.builder() .streamId(request.streamId()) .httpTraceInfo(request.httpTraceInfo()) .status(HttpResponseStatus.OK)); } }
@Test public void testFullResponse() throws Exception { outputReceived = new CountDownLatch(2); Http2Headers headersIn = new DefaultHttp2Headers().method("GET").path("/"); Http2Request requestIn = Http2Request.build(1, headersIn, true); FullResponse responseIn = ResponseBuilders.newOk().streamId(1).body(Unpooled.EMPTY_BUFFER).build(); channel.writeInbound(requestIn); channel.runPendingTasks(); // blocks channel.writeOutbound(responseIn); channel.runPendingTasks(); // blocks Uninterruptibles.awaitUninterruptibly(outputReceived); Http2Response responseOut = responses.remove(0); assertNotNull(responseOut); assertTrue(responseOut.payload instanceof Http2Headers); assertEquals("200", ((Http2Headers) responseOut.payload).status().toString()); assertTrue(responseOut.eos); assertEquals(1, responseOut.streamId); }
public static Response newServiceTimeout(Request request) { return defaultHeaders(DefaultFullResponse.builder()) .body(Unpooled.EMPTY_BUFFER) .httpTraceInfo(request.httpTraceInfo()) .streamId(request.streamId()) .status(HttpResponseStatus.GATEWAY_TIMEOUT) .build(); }
@Test public void testFullResponseWithBody() throws Exception { outputReceived = new CountDownLatch(2); ByteBuf body = ByteBufUtil.writeUtf8(UnpooledByteBufAllocator.DEFAULT, "response"); Http2Headers headersIn = new DefaultHttp2Headers().method("GET").path("/"); Http2Request requestIn = Http2Request.build(1, headersIn, true); FullResponse responseIn = ResponseBuilders.newOk().streamId(1).body(body).build(); channel.writeInbound(requestIn); channel.runPendingTasks(); // blocks channel.writeOutbound(responseIn); channel.runPendingTasks(); // blocks Uninterruptibles.awaitUninterruptibly(outputReceived); Http2Response responseOut = responses.remove(0); assertNotNull(responseOut); assertTrue(responseOut.payload instanceof Http2Headers); assertEquals("200", ((Http2Headers) responseOut.payload).status().toString()); assertFalse(responseOut.eos); assertEquals(1, responseOut.streamId); Http2Response bodyOut1 = responses.remove(0); assertNotNull(bodyOut1); assertTrue(bodyOut1.payload instanceof Http2DataFrame); assertEquals(body, ((Http2DataFrame) bodyOut1.payload).content()); assertTrue(bodyOut1.eos); assertEquals(1, bodyOut1.streamId); }
public static Response newNotFound(Request request) { return defaultHeaders(DefaultFullResponse.builder()) .body(Unpooled.EMPTY_BUFFER) .httpTraceInfo(request.httpTraceInfo()) .streamId(request.streamId()) .status(HttpResponseStatus.NOT_FOUND) .build(); }
public static Response newServiceUnavailable(Request request) { return defaultHeaders(DefaultFullResponse.builder()) .body(Unpooled.EMPTY_BUFFER) .httpTraceInfo(request.httpTraceInfo()) .streamId(request.streamId()) .status(HttpResponseStatus.SERVICE_UNAVAILABLE) .build(); }