From 2e1c4dbbb85908f23108a77d7eb209fb40855dec Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Mon, 6 Apr 2020 20:46:00 -0700 Subject: [PATCH] fix flaky jetty test --- .../apache/druid/server/initialization/JettyTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/server/src/test/java/org/apache/druid/server/initialization/JettyTest.java b/server/src/test/java/org/apache/druid/server/initialization/JettyTest.java index 64ccd1487699..206c3186e02c 100644 --- a/server/src/test/java/org/apache/druid/server/initialization/JettyTest.java +++ b/server/src/test/java/org/apache/druid/server/initialization/JettyTest.java @@ -78,6 +78,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import java.util.zip.GZIPInputStream; @@ -186,6 +187,8 @@ public boolean isValidateHostnames() throw new RuntimeException(e); } + final int ephemeralPort = ThreadLocalRandom.current().nextInt(49152, 65535); + latchedRequestState = new LatchedRequestStateHolder(); injector = Initialization.makeInjectorWithModules( GuiceInjectors.makeStartupInjector(), @@ -198,7 +201,7 @@ public void configure(Binder binder) JsonConfigProvider.bindInstance( binder, Key.get(DruidNode.class, Self.class), - new DruidNode("test", "localhost", false, 9988, 9999, true, true) + new DruidNode("test", "localhost", false, ephemeralPort, ephemeralPort + 1, true, true) ); binder.bind(TLSServerConfig.class).toInstance(tlsConfig); binder.bind(JettyServerInitializer.class).to(JettyServerInit.class).in(LazySingleton.class); @@ -450,6 +453,7 @@ public void testNumConnectionsMetricHttp() throws Exception JettyServerModule jsm = injector.getInstance(JettyServerModule.class); latchedRequestState.reset(); + waitForJettyServerModuleActiveConnectionsZero(jsm); Assert.assertEquals(0, jsm.getActiveConnections()); ListenableFuture go = client.go( @@ -489,6 +493,7 @@ public void testNumConnectionsMetricHttps() throws Exception JettyServerModule jsm = injector.getInstance(JettyServerModule.class); latchedRequestState.reset(); + waitForJettyServerModuleActiveConnectionsZero(jsm); Assert.assertEquals(0, jsm.getActiveConnections()); ListenableFuture go = client.go( request, @@ -511,5 +516,8 @@ private void waitForJettyServerModuleActiveConnectionsZero(JettyServerModule jsm while (jsm.getActiveConnections() > 0 && count++ < totalSleeps) { Thread.sleep(sleepTimeMills); } + if (jsm.getActiveConnections() > 0) { + throw new RuntimeException("Connections greater than 0"); + } } }