Address flakiness in TomcatServletWebServerFactoryTests
This commit is contained in:
@@ -574,10 +574,12 @@ class TomcatServletWebServerFactoryTests extends AbstractServletWebServerFactory
|
||||
blockingServlet.awaitQueue();
|
||||
this.webServer.shutDownGracefully((result) -> {
|
||||
});
|
||||
Future<Object> unconnectableRequest = initiateGetRequest(HttpClients.createDefault(), port, "/");
|
||||
Object unconnectableRequest = Awaitility.await().until(
|
||||
() -> initiateGetRequest(HttpClients.createDefault(), port, "/").get(),
|
||||
(result) -> result instanceof Exception);
|
||||
assertThat(unconnectableRequest).isInstanceOf(HttpHostConnectException.class);
|
||||
blockingServlet.admitOne();
|
||||
assertThat(request.get()).isInstanceOf(HttpResponse.class);
|
||||
assertThat(unconnectableRequest.get()).isInstanceOf(HttpHostConnectException.class);
|
||||
this.webServer.stop();
|
||||
}
|
||||
|
||||
@@ -600,11 +602,10 @@ class TomcatServletWebServerFactoryTests extends AbstractServletWebServerFactory
|
||||
assertThat(keepAliveRequest.get()).isInstanceOf(HttpResponse.class);
|
||||
Future<Object> request = initiateGetRequest(port, "/blocking");
|
||||
blockingServlet.awaitQueue();
|
||||
blockingServlet.setBlocking(false);
|
||||
this.webServer.shutDownGracefully((result) -> {
|
||||
});
|
||||
Object idleConnectionRequestResult = Awaitility.await().until(() -> {
|
||||
Future<Object> idleConnectionRequest = initiateGetRequest(httpClient, port, "/blocking");
|
||||
Future<Object> idleConnectionRequest = initiateGetRequest(httpClient, port, "/");
|
||||
Object result = idleConnectionRequest.get();
|
||||
return result;
|
||||
}, (result) -> result instanceof Exception);
|
||||
|
||||
@@ -1445,26 +1445,22 @@ public abstract class AbstractServletWebServerFactoryTests {
|
||||
|
||||
private final BlockingQueue<CyclicBarrier> barriers = new ArrayBlockingQueue<>(10);
|
||||
|
||||
protected volatile boolean blocking = true;
|
||||
|
||||
public BlockingServlet() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
if (this.blocking) {
|
||||
CyclicBarrier barrier = new CyclicBarrier(2);
|
||||
this.barriers.add(barrier);
|
||||
try {
|
||||
barrier.await();
|
||||
}
|
||||
catch (InterruptedException ex) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
catch (BrokenBarrierException ex) {
|
||||
throw new ServletException(ex);
|
||||
}
|
||||
CyclicBarrier barrier = new CyclicBarrier(2);
|
||||
this.barriers.add(barrier);
|
||||
try {
|
||||
barrier.await();
|
||||
}
|
||||
catch (InterruptedException ex) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
catch (BrokenBarrierException ex) {
|
||||
throw new ServletException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1495,10 +1491,6 @@ public abstract class AbstractServletWebServerFactoryTests {
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlocking(boolean blocking) {
|
||||
this.blocking = blocking;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class BlockingAsyncServlet extends HttpServlet {
|
||||
|
||||
Reference in New Issue
Block a user