From 2b4f2c6abaabba0d67558a026d6066bb2197718b Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 3 May 2017 11:33:42 +0200 Subject: [PATCH] Making sure to stop embedded web servers in tests Closes gh-9012 --- ...ipSslVerificationHttpRequestFactoryTests.java | 16 +++++++++++++--- ...ltServletWebServerFactoryCustomizerTests.java | 12 ++++++++---- .../jetty/JettyServletWebServerFactoryTests.java | 10 ++++++---- .../UndertowServletWebServerFactoryTests.java | 13 +++++++++---- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cloudfoundry/SkipSslVerificationHttpRequestFactoryTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cloudfoundry/SkipSslVerificationHttpRequestFactoryTests.java index 6c02dc18f4e..4a8d901e8ff 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cloudfoundry/SkipSslVerificationHttpRequestFactoryTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cloudfoundry/SkipSslVerificationHttpRequestFactoryTests.java @@ -19,6 +19,7 @@ package org.springframework.boot.actuate.cloudfoundry; import javax.net.ssl.SSLHandshakeException; import org.hamcrest.Matcher; +import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -44,6 +45,15 @@ public class SkipSslVerificationHttpRequestFactoryTests { @Rule public ExpectedException thrown = ExpectedException.none(); + private WebServer webServer; + + @After + public void shutdownContainer() { + if (this.webServer != null) { + this.webServer.stop(); + } + } + @Test public void restCallToSelfSignedServerShouldNotThrowSslException() throws Exception { String httpsUrl = getHttpsUrl(); @@ -65,10 +75,10 @@ public class SkipSslVerificationHttpRequestFactoryTests { private String getHttpsUrl() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(0); factory.setSsl(getSsl("password", "classpath:test.jks")); - WebServer webServer = factory.getWebServer( + this.webServer = factory.getWebServer( new ServletRegistrationBean<>(new ExampleServlet(), "/hello")); - webServer.start(); - return "https://localhost:" + webServer.getPort() + "/hello"; + this.webServer.start(); + return "https://localhost:" + this.webServer.getPort() + "/hello"; } private Ssl getSsl(String keyPassword, String keyStore) { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/DefaultServletWebServerFactoryCustomizerTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/DefaultServletWebServerFactoryCustomizerTests.java index 4f903cb607a..6559426cd45 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/DefaultServletWebServerFactoryCustomizerTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/DefaultServletWebServerFactoryCustomizerTests.java @@ -269,8 +269,10 @@ public class DefaultServletWebServerFactoryCustomizerTests { public void defaultTomcatBackgroundProcessorDelay() throws Exception { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); this.customizer.customize(factory); - assertThat(((TomcatWebServer) factory.getWebServer()).getTomcat().getEngine() - .getBackgroundProcessorDelay()).isEqualTo(30); + TomcatWebServer webServer = (TomcatWebServer) factory.getWebServer(); + assertThat(webServer.getTomcat().getEngine().getBackgroundProcessorDelay()) + .isEqualTo(30); + webServer.stop(); } @Test @@ -280,8 +282,10 @@ public class DefaultServletWebServerFactoryCustomizerTests { bindProperties(map); TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); this.customizer.customize(factory); - assertThat(((TomcatWebServer) factory.getWebServer()).getTomcat().getEngine() - .getBackgroundProcessorDelay()).isEqualTo(5); + TomcatWebServer webServer = (TomcatWebServer) factory.getWebServer(); + assertThat(webServer.getTomcat().getEngine().getBackgroundProcessorDelay()) + .isEqualTo(5); + webServer.stop(); } @Test diff --git a/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java index d2d0160a6d5..ddc4b0f3572 100644 --- a/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java @@ -262,8 +262,9 @@ public class JettyServletWebServerFactoryTests JettyServletWebServerFactory factory = getFactory(); factory.setThreadPool(null); assertThat(factory.getThreadPool()).isNull(); - JettyWebServer jettyWebServer = (JettyWebServer) factory.getWebServer(); - assertThat(jettyWebServer.getServer().getThreadPool()).isNotNull(); + this.webServer = factory.getWebServer(); + assertThat(((JettyWebServer) this.webServer).getServer().getThreadPool()) + .isNotNull(); } @Test @@ -271,8 +272,9 @@ public class JettyServletWebServerFactoryTests JettyServletWebServerFactory factory = getFactory(); ThreadPool threadPool = mock(ThreadPool.class); factory.setThreadPool(threadPool); - JettyWebServer jettyWebServer = (JettyWebServer) factory.getWebServer(); - assertThat(jettyWebServer.getServer().getThreadPool()).isSameAs(threadPool); + this.webServer = factory.getWebServer(); + assertThat(((JettyWebServer) this.webServer).getServer().getThreadPool()) + .isSameAs(threadPool); } @Override diff --git a/spring-boot/src/test/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactoryTests.java index c9284c103e1..02f37f14998 100644 --- a/spring-boot/src/test/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactoryTests.java @@ -261,10 +261,15 @@ public class UndertowServletWebServerFactoryTests } private ServletContainer getServletContainerFromNewFactory() { - UndertowServletWebServer undertow1 = (UndertowServletWebServer) getFactory() - .getWebServer(); - return ((DeploymentManager) ReflectionTestUtils.getField(undertow1, "manager")) - .getDeployment().getServletContainer(); + UndertowServletWebServer container = (UndertowServletWebServer) + getFactory().getWebServer(); + try { + return ((DeploymentManager) ReflectionTestUtils.getField(container, "manager")) + .getDeployment().getServletContainer(); + } + finally { + container.stop(); + } } @Override