diff --git a/spring-boot-project/spring-boot-parent/pom.xml b/spring-boot-project/spring-boot-parent/pom.xml index 88c3147ed1f..f7a83770774 100644 --- a/spring-boot-project/spring-boot-parent/pom.xml +++ b/spring-boot-project/spring-boot-parent/pom.xml @@ -26,6 +26,7 @@ 3.5.4 1.1.1 1.0-groovy-2.4 + 1.10.6 1.0.6.RELEASE 0.1.0.BUILD-SNAPSHOT @@ -97,11 +98,6 @@ mockwebserver 3.9.0 - - org.testcontainers - testcontainers - 1.10.6 - com.vaadin.external.google android-json @@ -243,6 +239,16 @@ spock-spring ${spock.version} + + org.testcontainers + neo4j + ${testcontainers.version} + + + org.testcontainers + testcontainers + ${testcontainers.version} + org.zeroturnaround zt-zip diff --git a/spring-boot-project/spring-boot-test-autoconfigure/pom.xml b/spring-boot-project/spring-boot-test-autoconfigure/pom.xml index 4d11357a8ae..435141c7905 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/pom.xml +++ b/spring-boot-project/spring-boot-test-autoconfigure/pom.xml @@ -294,6 +294,11 @@ spring-plugin-core test + + org.testcontainers + neo4j + test + org.testcontainers testcontainers diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java index 6dcd6f589c4..3e18d24fb46 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 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. @@ -20,11 +20,11 @@ import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.neo4j.ogm.session.Session; +import org.testcontainers.containers.Neo4jContainer; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.util.TestPropertyValues; -import org.springframework.boot.testsupport.testcontainers.Neo4jContainer; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; @@ -39,6 +39,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; * * @author Eddú Meléndez * @author Stephane Nicoll + * @author Michael Simons */ @RunWith(SpringRunner.class) @ContextConfiguration(initializers = DataNeo4jTestIntegrationTests.Initializer.class) @@ -46,7 +47,8 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; public class DataNeo4jTestIntegrationTests { @ClassRule - public static Neo4jContainer neo4j = new Neo4jContainer(); + public static Neo4jContainer neo4j = new Neo4jContainer<>() + .withAdminPassword(null); @Autowired private Session session; @@ -79,8 +81,7 @@ public class DataNeo4jTestIntegrationTests { @Override public void initialize( ConfigurableApplicationContext configurableApplicationContext) { - TestPropertyValues - .of("spring.data.neo4j.uri=bolt://localhost:" + neo4j.getMappedPort()) + TestPropertyValues.of("spring.data.neo4j.uri=" + neo4j.getBoltUrl()) .applyTo(configurableApplicationContext.getEnvironment()); } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java index 9ba5e1fe8ef..08afe8509a1 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 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,10 +19,10 @@ package org.springframework.boot.test.autoconfigure.data.neo4j; import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; +import org.testcontainers.containers.Neo4jContainer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.util.TestPropertyValues; -import org.springframework.boot.testsupport.testcontainers.Neo4jContainer; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.ComponentScan.Filter; @@ -36,6 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat; * Integration test with custom include filter for {@link DataNeo4jTest}. * * @author Eddú Meléndez + * @author Michael Simons */ @RunWith(SpringRunner.class) @ContextConfiguration(initializers = DataNeo4jTestWithIncludeFilterIntegrationTests.Initializer.class) @@ -43,7 +44,8 @@ import static org.assertj.core.api.Assertions.assertThat; public class DataNeo4jTestWithIncludeFilterIntegrationTests { @ClassRule - public static Neo4jContainer neo4j = new Neo4jContainer(); + public static Neo4jContainer neo4j = new Neo4jContainer<>() + .withAdminPassword(null); @Autowired private ExampleService service; @@ -59,8 +61,7 @@ public class DataNeo4jTestWithIncludeFilterIntegrationTests { @Override public void initialize( ConfigurableApplicationContext configurableApplicationContext) { - TestPropertyValues - .of("spring.data.neo4j.uri=bolt://localhost:" + neo4j.getMappedPort()) + TestPropertyValues.of("spring.data.neo4j.uri=" + neo4j.getBoltUrl()) .applyTo(configurableApplicationContext.getEnvironment()); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/Neo4jContainer.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/Neo4jContainer.java deleted file mode 100644 index 4209abb5e8e..00000000000 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/Neo4jContainer.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2012-2018 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.testsupport.testcontainers; - -import java.util.concurrent.Callable; -import java.util.concurrent.TimeUnit; - -import org.neo4j.ogm.config.Configuration; -import org.neo4j.ogm.session.SessionFactory; -import org.rnorth.ducttape.TimeoutException; -import org.rnorth.ducttape.unreliables.Unreliables; -import org.testcontainers.containers.GenericContainer; -import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy; - -/** - * A {@link GenericContainer} for Neo4J. - * - * @author Andy Wilkinson - * @author Madhura Bhave - */ -public class Neo4jContainer extends Container { - - private static final int PORT = 7687; - - public Neo4jContainer() { - super("neo4j:3.3.1", PORT, (container) -> container - .waitingFor(new WaitStrategy(container)).withEnv("NEO4J_AUTH", "none")); - } - - private static final class WaitStrategy extends HostPortWaitStrategy { - - private final GenericContainer container; - - private WaitStrategy(GenericContainer container) { - this.container = container; - } - - @Override - public void waitUntilReady() { - super.waitUntilReady(); - Configuration configuration = new Configuration.Builder() - .uri("bolt://localhost:" - + this.container.getMappedPort(Neo4jContainer.PORT)) - .build(); - SessionFactory sessionFactory = new SessionFactory(configuration, - "org.springframework.boot.test.autoconfigure.data.neo4j"); - try { - Unreliables.retryUntilTrue((int) this.startupTimeout.getSeconds(), - TimeUnit.SECONDS, checkConnection(sessionFactory)); - } - catch (TimeoutException ex) { - throw new IllegalStateException(ex); - } - } - - private Callable checkConnection(SessionFactory sessionFactory) { - return () -> { - try { - sessionFactory.openSession().beginTransaction().close(); - return true; - } - catch (Exception ex) { - return false; - } - }; - } - - } - -}