From 5121b848e18c37e6b603928f20c60e5627423414 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 3 May 2017 11:33:42 +0200 Subject: [PATCH 1/2] Making sure to stop embedded web servers in tests Closes gh-9012 --- ...slVerificationHttpRequestFactoryTests.java | 18 ++++++++++--- .../web/ServerPropertiesTests.java | 25 ++++++++++--------- ...yEmbeddedServletContainerFactoryTests.java | 12 ++++----- ...wEmbeddedServletContainerFactoryTests.java | 15 +++++++---- 4 files changed, 43 insertions(+), 27 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 68828b93f0e..6d5756b815c 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 @@ -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"); * 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 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 EmbeddedServletContainer container; + + @After + public void shutdownContainer() { + if (this.container != null) { + this.container.stop(); + } + } + @Test public void restCallToSelfSignedServershouldNotThrowSslException() throws Exception { String httpsUrl = getHttpsUrl(); @@ -66,10 +76,10 @@ public class SkipSslVerificationHttpRequestFactoryTests { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory( 0); factory.setSsl(getSsl("password", "classpath:test.jks")); - EmbeddedServletContainer container = factory.getEmbeddedServletContainer( + this.container = factory.getEmbeddedServletContainer( new ServletRegistrationBean(new ExampleServlet(), "/hello")); - container.start(); - return "https://localhost:" + container.getPort() + "/hello"; + this.container.start(); + return "https://localhost:" + this.container.getPort() + "/hello"; } private Ssl getSsl(String keyPassword, String keyStore) { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java index 6401bf834fb..96e1576b977 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java @@ -43,6 +43,7 @@ import org.mockito.MockitoAnnotations; import org.springframework.beans.MutablePropertyValues; import org.springframework.boot.bind.RelaxedDataBinder; 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.tomcat.TomcatContextCustomizer; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer; @@ -438,12 +439,12 @@ public class ServerPropertiesTests { @Test public void defaultTomcatBackgroundProcessorDelay() throws Exception { - TomcatEmbeddedServletContainerFactory container = new TomcatEmbeddedServletContainerFactory(); - this.properties.customize(container); - assertThat( - ((TomcatEmbeddedServletContainer) container.getEmbeddedServletContainer()) - .getTomcat().getEngine().getBackgroundProcessorDelay()) - .isEqualTo(30); + TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); + this.properties.customize(factory); + EmbeddedServletContainer container = factory.getEmbeddedServletContainer(); + assertThat(((TomcatEmbeddedServletContainer) container).getTomcat().getEngine() + .getBackgroundProcessorDelay()).isEqualTo(30); + container.stop(); } @Test @@ -451,12 +452,12 @@ public class ServerPropertiesTests { Map map = new HashMap(); map.put("server.tomcat.background-processor-delay", "5"); bindProperties(map); - TomcatEmbeddedServletContainerFactory container = new TomcatEmbeddedServletContainerFactory(); - this.properties.customize(container); - assertThat( - ((TomcatEmbeddedServletContainer) container.getEmbeddedServletContainer()) - .getTomcat().getEngine().getBackgroundProcessorDelay()) - .isEqualTo(5); + TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); + this.properties.customize(factory); + EmbeddedServletContainer container = factory.getEmbeddedServletContainer(); + assertThat(((TomcatEmbeddedServletContainer) container).getTomcat().getEngine() + .getBackgroundProcessorDelay()).isEqualTo(5); + container.stop(); } @Test diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java index bdc527eb9e8..607c2ab68ae 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java @@ -267,9 +267,9 @@ public class JettyEmbeddedServletContainerFactoryTests JettyEmbeddedServletContainerFactory factory = getFactory(); factory.setThreadPool(null); assertThat(factory.getThreadPool()).isNull(); - JettyEmbeddedServletContainer servletContainer = (JettyEmbeddedServletContainer) factory - .getEmbeddedServletContainer(); - assertThat(servletContainer.getServer().getThreadPool()).isNotNull(); + this.container = factory.getEmbeddedServletContainer(); + assertThat(((JettyEmbeddedServletContainer) this.container).getServer() + .getThreadPool()).isNotNull(); } @Test @@ -277,9 +277,9 @@ public class JettyEmbeddedServletContainerFactoryTests JettyEmbeddedServletContainerFactory factory = getFactory(); ThreadPool threadPool = mock(ThreadPool.class); factory.setThreadPool(threadPool); - JettyEmbeddedServletContainer servletContainer = (JettyEmbeddedServletContainer) factory - .getEmbeddedServletContainer(); - assertThat(servletContainer.getServer().getThreadPool()).isSameAs(threadPool); + this.container = factory.getEmbeddedServletContainer(); + assertThat(((JettyEmbeddedServletContainer) this.container).getServer() + .getThreadPool()).isSameAs(threadPool); } @Override diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactoryTests.java index ab77946d26e..bb47f09f2a7 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactoryTests.java @@ -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"); * you may not use this file except in compliance with the License. @@ -263,10 +263,15 @@ public class UndertowEmbeddedServletContainerFactoryTests } private ServletContainer getServletContainerFromNewFactory() { - UndertowEmbeddedServletContainer undertow1 = (UndertowEmbeddedServletContainer) getFactory() - .getEmbeddedServletContainer(); - return ((DeploymentManager) ReflectionTestUtils.getField(undertow1, "manager")) - .getDeployment().getServletContainer(); + UndertowEmbeddedServletContainer container = (UndertowEmbeddedServletContainer) + getFactory().getEmbeddedServletContainer(); + try { + return ((DeploymentManager) ReflectionTestUtils.getField(container, "manager")) + .getDeployment().getServletContainer(); + } + finally { + container.stop(); + } } @Override From 61f88d0c9014139fee377f423f22afa302261e10 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 3 May 2017 12:19:32 +0200 Subject: [PATCH 2/2] Provide dependency management for missing jersey dependencies Closes gh-9009 --- spring-boot-dependencies/pom.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml index b59ff88deda..fe775ad65e1 100644 --- a/spring-boot-dependencies/pom.xml +++ b/spring-boot-dependencies/pom.xml @@ -1623,6 +1623,11 @@ javax.el ${glassfish-el.version} + + org.glassfish.jersey.bundles.repackaged + jersey-guava + ${jersey.version} + org.glassfish.jersey.containers jersey-container-servlet @@ -1633,6 +1638,16 @@ jersey-container-servlet-core ${jersey.version} + + org.glassfish.jersey.core + jersey-client + ${jersey.version} + + + org.glassfish.jersey.core + jersey-common + ${jersey.version} + org.glassfish.jersey.core jersey-server @@ -1643,6 +1658,11 @@ jersey-bean-validation ${jersey.version} + + org.glassfish.jersey.ext + jersey-entity-filtering + ${jersey.version} + org.glassfish.jersey.ext jersey-spring3 @@ -1654,6 +1674,11 @@ + + org.glassfish.jersey.media + jersey-media-jaxb + ${jersey.version} + org.glassfish.jersey.media jersey-media-json-jackson