Making sure to stop embedded web servers in tests

Closes gh-9012
This commit is contained in:
Stephane Nicoll 2017-05-03 11:33:42 +02:00
parent 7b1fc01733
commit 5121b848e1
4 changed files with 43 additions and 27 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2016 the original author or authors. * Copyright 2012-2017 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -19,6 +19,7 @@ package org.springframework.boot.actuate.cloudfoundry;
import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.SSLHandshakeException;
import org.hamcrest.Matcher; import org.hamcrest.Matcher;
import org.junit.After;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.ExpectedException; import org.junit.rules.ExpectedException;
@ -44,6 +45,15 @@ public class SkipSslVerificationHttpRequestFactoryTests {
@Rule @Rule
public ExpectedException thrown = ExpectedException.none(); public ExpectedException thrown = ExpectedException.none();
private EmbeddedServletContainer container;
@After
public void shutdownContainer() {
if (this.container != null) {
this.container.stop();
}
}
@Test @Test
public void restCallToSelfSignedServershouldNotThrowSslException() throws Exception { public void restCallToSelfSignedServershouldNotThrowSslException() throws Exception {
String httpsUrl = getHttpsUrl(); String httpsUrl = getHttpsUrl();
@ -66,10 +76,10 @@ public class SkipSslVerificationHttpRequestFactoryTests {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory( TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(
0); 0);
factory.setSsl(getSsl("password", "classpath:test.jks")); factory.setSsl(getSsl("password", "classpath:test.jks"));
EmbeddedServletContainer container = factory.getEmbeddedServletContainer( this.container = factory.getEmbeddedServletContainer(
new ServletRegistrationBean(new ExampleServlet(), "/hello")); new ServletRegistrationBean(new ExampleServlet(), "/hello"));
container.start(); this.container.start();
return "https://localhost:" + container.getPort() + "/hello"; return "https://localhost:" + this.container.getPort() + "/hello";
} }
private Ssl getSsl(String keyPassword, String keyStore) { private Ssl getSsl(String keyPassword, String keyStore) {

View File

@ -43,6 +43,7 @@ import org.mockito.MockitoAnnotations;
import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.MutablePropertyValues;
import org.springframework.boot.bind.RelaxedDataBinder; import org.springframework.boot.bind.RelaxedDataBinder;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainer;
import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatContextCustomizer; import org.springframework.boot.context.embedded.tomcat.TomcatContextCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer;
@ -438,12 +439,12 @@ public class ServerPropertiesTests {
@Test @Test
public void defaultTomcatBackgroundProcessorDelay() throws Exception { public void defaultTomcatBackgroundProcessorDelay() throws Exception {
TomcatEmbeddedServletContainerFactory container = new TomcatEmbeddedServletContainerFactory(); TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
this.properties.customize(container); this.properties.customize(factory);
assertThat( EmbeddedServletContainer container = factory.getEmbeddedServletContainer();
((TomcatEmbeddedServletContainer) container.getEmbeddedServletContainer()) assertThat(((TomcatEmbeddedServletContainer) container).getTomcat().getEngine()
.getTomcat().getEngine().getBackgroundProcessorDelay()) .getBackgroundProcessorDelay()).isEqualTo(30);
.isEqualTo(30); container.stop();
} }
@Test @Test
@ -451,12 +452,12 @@ public class ServerPropertiesTests {
Map<String, String> map = new HashMap<String, String>(); Map<String, String> map = new HashMap<String, String>();
map.put("server.tomcat.background-processor-delay", "5"); map.put("server.tomcat.background-processor-delay", "5");
bindProperties(map); bindProperties(map);
TomcatEmbeddedServletContainerFactory container = new TomcatEmbeddedServletContainerFactory(); TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
this.properties.customize(container); this.properties.customize(factory);
assertThat( EmbeddedServletContainer container = factory.getEmbeddedServletContainer();
((TomcatEmbeddedServletContainer) container.getEmbeddedServletContainer()) assertThat(((TomcatEmbeddedServletContainer) container).getTomcat().getEngine()
.getTomcat().getEngine().getBackgroundProcessorDelay()) .getBackgroundProcessorDelay()).isEqualTo(5);
.isEqualTo(5); container.stop();
} }
@Test @Test

View File

@ -267,9 +267,9 @@ public class JettyEmbeddedServletContainerFactoryTests
JettyEmbeddedServletContainerFactory factory = getFactory(); JettyEmbeddedServletContainerFactory factory = getFactory();
factory.setThreadPool(null); factory.setThreadPool(null);
assertThat(factory.getThreadPool()).isNull(); assertThat(factory.getThreadPool()).isNull();
JettyEmbeddedServletContainer servletContainer = (JettyEmbeddedServletContainer) factory this.container = factory.getEmbeddedServletContainer();
.getEmbeddedServletContainer(); assertThat(((JettyEmbeddedServletContainer) this.container).getServer()
assertThat(servletContainer.getServer().getThreadPool()).isNotNull(); .getThreadPool()).isNotNull();
} }
@Test @Test
@ -277,9 +277,9 @@ public class JettyEmbeddedServletContainerFactoryTests
JettyEmbeddedServletContainerFactory factory = getFactory(); JettyEmbeddedServletContainerFactory factory = getFactory();
ThreadPool threadPool = mock(ThreadPool.class); ThreadPool threadPool = mock(ThreadPool.class);
factory.setThreadPool(threadPool); factory.setThreadPool(threadPool);
JettyEmbeddedServletContainer servletContainer = (JettyEmbeddedServletContainer) factory this.container = factory.getEmbeddedServletContainer();
.getEmbeddedServletContainer(); assertThat(((JettyEmbeddedServletContainer) this.container).getServer()
assertThat(servletContainer.getServer().getThreadPool()).isSameAs(threadPool); .getThreadPool()).isSameAs(threadPool);
} }
@Override @Override

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2016 the original author or authors. * Copyright 2012-2017 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -263,11 +263,16 @@ public class UndertowEmbeddedServletContainerFactoryTests
} }
private ServletContainer getServletContainerFromNewFactory() { private ServletContainer getServletContainerFromNewFactory() {
UndertowEmbeddedServletContainer undertow1 = (UndertowEmbeddedServletContainer) getFactory() UndertowEmbeddedServletContainer container = (UndertowEmbeddedServletContainer)
.getEmbeddedServletContainer(); getFactory().getEmbeddedServletContainer();
return ((DeploymentManager) ReflectionTestUtils.getField(undertow1, "manager")) try {
return ((DeploymentManager) ReflectionTestUtils.getField(container, "manager"))
.getDeployment().getServletContainer(); .getDeployment().getServletContainer();
} }
finally {
container.stop();
}
}
@Override @Override
protected Map<String, String> getActualMimeMappings() { protected Map<String, String> getActualMimeMappings() {