From 4be1e63bc11d1f63ff035018158383fad8d46055 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Sat, 28 Aug 2021 19:28:02 +1000 Subject: [PATCH] Issue #6605 cherry-pick changes flaky test HttpOutputTest#testEmptyBufferKnown 10.0.x branch (#6651) * #6605 testEmptyBufferKnown: make sure the assertion does not happen before the committed flag is read Signed-off-by: Ludovic Orban * #6605 rename test Signed-off-by: Ludovic Orban Co-authored-by: Ludovic Orban --- .../java/org/eclipse/jetty/server/HttpOutputTest.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpOutputTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpOutputTest.java index 8e3c7e18a318..8cb93368812a 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpOutputTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpOutputTest.java @@ -22,6 +22,7 @@ import java.nio.channels.ReadableByteChannel; import java.nio.charset.StandardCharsets; import java.util.Arrays; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import javax.servlet.AsyncContext; @@ -838,9 +839,9 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques } @Test - public void testEmptyBufferKnown() throws Exception + public void testEmptyBufferWithZeroContentLength() throws Exception { - FuturePromise committed = new FuturePromise<>(); + CountDownLatch latch = new CountDownLatch(1); AbstractHandler handler = new AbstractHandler() { @Override @@ -850,7 +851,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques response.setStatus(200); response.setContentLength(0); ((HttpOutput)response.getOutputStream()).write(ByteBuffer.wrap(new byte[0])); - committed.succeeded(response.isCommitted()); + assertThat(response.isCommitted(), is(true)); + latch.countDown(); } }; @@ -859,7 +861,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques String response = _connector.getResponse("GET / HTTP/1.0\nHost: localhost:80\n\n"); assertThat(response, containsString("HTTP/1.1 200 OK")); assertThat(response, containsString("Content-Length: 0")); - assertThat(committed.get(10, TimeUnit.SECONDS), is(true)); + assertThat(latch.await(3, TimeUnit.SECONDS), is(true)); } @Test