diff --git a/.circleci/config.yml b/.circleci/config.yml index 11e49e77..f2865b3a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,32 +1,28 @@ version: 2 +machine: true jobs: build: - docker: - - image: springcloud/pipeline-base - # user: appuser + machine: + image: ubuntu-1604:202007-01 environment: _JAVA_OPTIONS: "-Xms1024m -Xmx2048m" TERM: dumb + CACHE_VERSION: 1 branches: ignore: - gh-pages # list of branches to ignore steps: - checkout - restore_cache: - key: sc-consul-{{ .Branch }} - - run: - command: ./src/main/bash/ci_install_consul.sh + key: sc-consul-{{ .Environment.CACHE_VERSION }}-{{ .Branch }} - run: name: "Download dependencies" command: | ./mvnw -s .settings.xml -U --fail-never dependency:go-offline || true - save_cache: - key: sc-consul-{{ .Branch }} + key: sc-consul-{{ .Environment.CACHE_VERSION }}-{{ .Branch }} paths: - ~/.m2 - - run: - name: "Running Consul" - command: ./src/test/bash/ci_run_consul.sh - run: name: "Running build" command: ./mvnw -s .settings.xml clean org.jacoco:jacoco-maven-plugin:prepare-agent install -U -P sonar -nsu --batch-mode -Dmaven.test.redirectTestOutputToFile=true -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn diff --git a/pom.xml b/pom.xml index 36cbc0cd..a1cedb23 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,7 @@ 1.0.3.RELEASE 3.0.0-SNAPSHOT 3.1.0-SNAPSHOT + 1.14.3 @@ -163,6 +164,11 @@ + + org.testcontainers + testcontainers + ${testcontainers.version} + diff --git a/scripts/build.sh b/scripts/build.sh index 0825ee48..1a38a5a1 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,6 +1,3 @@ #!/bin/bash -trap 'pkill -9 consul; EXIT' 0 -./src/main/bash/ci_install_consul.sh -./src/test/bash/ci_run_consul.sh ./mvnw clean install -B -Pdocs ${@} diff --git a/scripts/compileOnly.sh b/scripts/compileOnly.sh index cfc78f94..437c70ac 100755 --- a/scripts/compileOnly.sh +++ b/scripts/compileOnly.sh @@ -1,5 +1,3 @@ #!/bin/bash -./src/main/bash/ci_install_consul.sh -./src/test/bash/ci_run_consul.sh ./mvnw clean install -B -Pdocs -DskipTests -fae diff --git a/spring-cloud-consul-binder/pom.xml b/spring-cloud-consul-binder/pom.xml index d3bd301c..6890f4fc 100644 --- a/spring-cloud-consul-binder/pom.xml +++ b/spring-cloud-consul-binder/pom.xml @@ -68,7 +68,18 @@ 2.0.0 test - + + org.testcontainers + testcontainers + test + + + org.springframework.cloud + spring-cloud-consul-core + ${project.version} + test-jar + test + diff --git a/spring-cloud-consul-binder/src/test/java/org/springframework/cloud/consul/binder/ConsulBinderApplicationTests.java b/spring-cloud-consul-binder/src/test/java/org/springframework/cloud/consul/binder/ConsulBinderApplicationTests.java index aaa3b99f..dfa070ef 100644 --- a/spring-cloud-consul-binder/src/test/java/org/springframework/cloud/consul/binder/ConsulBinderApplicationTests.java +++ b/spring-cloud-consul-binder/src/test/java/org/springframework/cloud/consul/binder/ConsulBinderApplicationTests.java @@ -28,6 +28,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.cloud.stream.annotation.EnableBinding; import org.springframework.cloud.stream.annotation.Output; import org.springframework.context.annotation.Bean; @@ -36,6 +37,7 @@ import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.support.MessageBuilder; import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; @@ -55,6 +57,7 @@ import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER @RunWith(SpringRunner.class) @SpringBootTest(classes = ConsulBinderApplicationTests.Application.class) @DirtiesContext(classMode = AFTER_EACH_TEST_METHOD) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulBinderApplicationTests { @Rule diff --git a/spring-cloud-consul-binder/src/test/java/org/springframework/cloud/consul/binder/config/ConsulBinderConfigurationTests.java b/spring-cloud-consul-binder/src/test/java/org/springframework/cloud/consul/binder/config/ConsulBinderConfigurationTests.java index 51dfff6f..03ea44c0 100644 --- a/spring-cloud-consul-binder/src/test/java/org/springframework/cloud/consul/binder/config/ConsulBinderConfigurationTests.java +++ b/spring-cloud-consul-binder/src/test/java/org/springframework/cloud/consul/binder/config/ConsulBinderConfigurationTests.java @@ -23,6 +23,7 @@ import org.junit.rules.ExpectedException; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.cloud.stream.annotation.EnableBinding; import org.springframework.cloud.stream.annotation.Output; import org.springframework.context.annotation.Configuration; @@ -43,6 +44,7 @@ public class ConsulBinderConfigurationTests { public void consulBinderDisabledWorks() { this.exception.expectMessage(containsString("no proper implementation found")); new SpringApplicationBuilder(Application.class) + .initializers(new ConsulTestcontainers()) .properties("spring.cloud.consul.binder.enabled=false").run(); } @@ -51,6 +53,7 @@ public class ConsulBinderConfigurationTests { public void consulDisabledDisablesBinder() { this.exception.expectMessage(containsString("no proper implementation found")); new SpringApplicationBuilder(Application.class) + .initializers(new ConsulTestcontainers()) .properties("spring.cloud.consul.enabled=false").run(); } diff --git a/spring-cloud-consul-config/pom.xml b/spring-cloud-consul-config/pom.xml index abe4c4f4..95ce8685 100644 --- a/spring-cloud-consul-config/pom.xml +++ b/spring-cloud-consul-config/pom.xml @@ -78,6 +78,18 @@ junit-vintage-engine test + + org.testcontainers + testcontainers + test + + + org.springframework.cloud + spring-cloud-consul-core + ${project.version} + test-jar + test + diff --git a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulConfigBootstrapConfigurationTests.java b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulConfigBootstrapConfigurationTests.java index 2dc57db3..1f3b6278 100644 --- a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulConfigBootstrapConfigurationTests.java +++ b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulConfigBootstrapConfigurationTests.java @@ -19,6 +19,7 @@ package org.springframework.cloud.consul.config; import org.junit.Test; import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Bean; import static org.assertj.core.api.Assertions.assertThat; @@ -36,6 +37,7 @@ public class ConsulConfigBootstrapConfigurationTests { @Test public void testConfigPropsBeanBacksOff() { this.contextRunner.withUserConfiguration(TestConfig.class) + .withInitializer(new ConsulTestcontainers()) .withUserConfiguration(ConsulConfigBootstrapConfiguration.class) .run(context -> { ConsulConfigProperties config = context @@ -54,7 +56,7 @@ public class ConsulConfigBootstrapConfigurationTests { @Test public void testConfigPropsBeanKicksIn() { this.contextRunner.withUserConfiguration(ConsulConfigBootstrapConfiguration.class) - .run(context -> { + .withInitializer(new ConsulTestcontainers()).run(context -> { ConsulConfigProperties config = context .getBean(ConsulConfigProperties.class); assertThat(config.getPrefix()).as("Prefix did not match") @@ -64,19 +66,19 @@ public class ConsulConfigBootstrapConfigurationTests { }); } -} + /** + * Test config that simulates a "user provided bean". + */ + private static class TestConfig { -/** - * Test config that simulates a "user provided bean". - */ -class TestConfig { + @Bean + public ConsulConfigProperties consulConfigProperties() { + ConsulConfigProperties config = new ConsulConfigProperties(); + config.setPrefix("platform-config"); + config.setDefaultContext("defaults"); + return config; + } - @Bean - public ConsulConfigProperties consulConfigProperties() { - ConsulConfigProperties config = new ConsulConfigProperties(); - config.setPrefix("platform-config"); - config.setDefaultContext("defaults"); - return config; } } diff --git a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertyPrefixTests.java b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertyPrefixTests.java index 5650c4a5..7a9b36fb 100644 --- a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertyPrefixTests.java +++ b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertyPrefixTests.java @@ -21,7 +21,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.springframework.cloud.consul.ConsulProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import static org.assertj.core.api.Assertions.assertThat; @@ -31,8 +31,8 @@ public class ConsulPropertyPrefixTests { @Before public void setup() { - ConsulProperties properties = new ConsulProperties(); - this.client = new ConsulClient(properties.getHost(), properties.getPort()); + ConsulTestcontainers.start(); + this.client = ConsulTestcontainers.client(); } @After diff --git a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorAppNameCustomizedTests.java b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorAppNameCustomizedTests.java index f21fde0e..04d17d6e 100644 --- a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorAppNameCustomizedTests.java +++ b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorAppNameCustomizedTests.java @@ -26,7 +26,7 @@ import org.junit.Test; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.cloud.consul.ConsulProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -64,13 +64,10 @@ public class ConsulPropertySourceLocatorAppNameCustomizedTests { private ConsulClient client; - private ConsulProperties properties; - @Before public void setup() { - this.properties = new ConsulProperties(); - this.client = new ConsulClient(this.properties.getHost(), - this.properties.getPort()); + ConsulTestcontainers.start(); + this.client = ConsulTestcontainers.client(); this.client.deleteKVValues(PREFIX); this.client.setKVValue(KEY1, VALUE1); this.client.setKVValue(KEY2, VALUE2); @@ -79,11 +76,12 @@ public class ConsulPropertySourceLocatorAppNameCustomizedTests { .web(WebApplicationType.NONE) .run("--spring.application.name=testConsulPropertySourceLocatorAppNameCustomized", "--spring.config.use-legacy-processing=true", + "--spring.cloud.consul.host=" + ConsulTestcontainers.getHost(), + "--spring.cloud.consul.port=" + ConsulTestcontainers.getPort(), "--spring.cloud.consul.config.name=" + CONFIG_NAME, "--spring.cloud.consul.config.prefix=" + ROOT); this.client = this.context.getBean(ConsulClient.class); - this.properties = this.context.getBean(ConsulProperties.class); this.environment = this.context.getEnvironment(); } diff --git a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorFilesTests.java b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorFilesTests.java index 0f92bb1f..2d6c2596 100644 --- a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorFilesTests.java +++ b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorFilesTests.java @@ -26,7 +26,7 @@ import org.junit.Test; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.cloud.consul.ConsulProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -61,13 +61,10 @@ public class ConsulPropertySourceLocatorFilesTests { private ConsulClient client; - private ConsulProperties properties; - @Before public void setup() { - this.properties = new ConsulProperties(); - this.client = new ConsulClient(this.properties.getHost(), - this.properties.getPort()); + ConsulTestcontainers.start(); + this.client = ConsulTestcontainers.client(); this.client.setKVValue(ROOT + APPLICATION_YML, "foo: bar\nmy.baz: ${foo}"); this.client.setKVValue(ROOT + APPLICATION_DEV_YML, "foo: bar-dev\nmy.baz: ${foo}"); @@ -79,13 +76,14 @@ public class ConsulPropertySourceLocatorFilesTests { this.context = new SpringApplicationBuilder(Config.class) .web(WebApplicationType.NONE).run("--spring.application.name=" + APP_NAME, "--spring.config.use-legacy-processing=true", + "--spring.cloud.consul.host=" + ConsulTestcontainers.getHost(), + "--spring.cloud.consul.port=" + ConsulTestcontainers.getPort(), "--spring.cloud.consul.config.prefix=" + ROOT, "--spring.cloud.consul.config.format=FILES", "--spring.profiles.active=dev", "spring.cloud.consul.config.watch.delay=1"); this.client = this.context.getBean(ConsulClient.class); - this.properties = this.context.getBean(ConsulProperties.class); this.environment = this.context.getEnvironment(); } diff --git a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorTests.java b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorTests.java index f8b70b62..2ad9ef0b 100644 --- a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorTests.java +++ b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorTests.java @@ -29,7 +29,7 @@ import org.junit.Test; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.cloud.consul.ConsulProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.cloud.context.environment.EnvironmentChangeEvent; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; @@ -80,13 +80,10 @@ public class ConsulPropertySourceLocatorTests { private ConsulClient client; - private ConsulProperties properties; - @Before public void setup() { - this.properties = new ConsulProperties(); - this.client = new ConsulClient(this.properties.getHost(), - this.properties.getPort()); + ConsulTestcontainers.start(); + this.client = ConsulTestcontainers.client(); this.client.deleteKVValues(PREFIX); this.client.setKVValue(KEY1, VALUE1); this.client.setKVValue(KEY2, VALUE2); @@ -94,11 +91,12 @@ public class ConsulPropertySourceLocatorTests { this.context = new SpringApplicationBuilder(Config.class) .web(WebApplicationType.NONE).run("--SPRING_APPLICATION_NAME=" + APP_NAME, "--spring.config.use-legacy-processing=true", + "--spring.cloud.consul.host=" + ConsulTestcontainers.getHost(), + "--spring.cloud.consul.port=" + ConsulTestcontainers.getPort(), "--spring.cloud.consul.config.prefix=" + ROOT, "spring.cloud.consul.config.watch.delay=10"); this.client = this.context.getBean(ConsulClient.class); - this.properties = this.context.getBean(ConsulProperties.class); this.environment = this.context.getEnvironment(); } diff --git a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceTests.java b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceTests.java index faeca934..72cf37d8 100644 --- a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceTests.java +++ b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceTests.java @@ -23,7 +23,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.springframework.cloud.consul.ConsulProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import static org.assertj.core.api.Assertions.assertThat; @@ -34,8 +34,6 @@ public class ConsulPropertySourceTests { private ConsulClient client; - private ConsulProperties properties; - private String prefix; private String kvContext; @@ -44,11 +42,10 @@ public class ConsulPropertySourceTests { @Before public void setup() { - this.properties = new ConsulProperties(); + ConsulTestcontainers.start(); this.prefix = "consulPropertySourceTests" + new Random().nextInt(Integer.MAX_VALUE); - this.client = new ConsulClient(this.properties.getHost(), - this.properties.getPort()); + this.client = ConsulTestcontainers.client(); } @After diff --git a/spring-cloud-consul-core/pom.xml b/spring-cloud-consul-core/pom.xml index 3c66ab44..004ee6ac 100644 --- a/spring-cloud-consul-core/pom.xml +++ b/spring-cloud-consul-core/pom.xml @@ -98,6 +98,26 @@ junit-vintage-engine test + + org.testcontainers + testcontainers + test + - + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + test-jar + + + + + + diff --git a/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulProperties.java b/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulProperties.java index 777730f1..75dfcfb8 100644 --- a/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulProperties.java +++ b/spring-cloud-consul-core/src/main/java/org/springframework/cloud/consul/ConsulProperties.java @@ -24,13 +24,20 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.core.style.ToStringCreator; import org.springframework.validation.annotation.Validated; +import static org.springframework.cloud.consul.ConsulProperties.PREFIX; + /** * @author Spencer Gibb */ -@ConfigurationProperties("spring.cloud.consul") +@ConfigurationProperties(PREFIX) @Validated public class ConsulProperties { + /** + * Prefix for configuration properties. + */ + public static final String PREFIX = "spring.cloud.consul"; + /** Consul agent hostname. Defaults to 'localhost'. */ @NotNull private String host = "localhost"; diff --git a/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulAutoConfigurationTests.java b/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulAutoConfigurationTests.java index 50d7a6d7..53331c74 100644 --- a/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulAutoConfigurationTests.java +++ b/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulAutoConfigurationTests.java @@ -28,6 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.consul.test.ConsulTestcontainers; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.util.ReflectionTestUtils; @@ -39,6 +41,7 @@ import static org.assertj.core.api.Assertions.assertThat; "spring.cloud.consul.tls.key-store-password=letmein", "spring.cloud.consul.tls.certificate-path=src/test/resources/trustStore.jks", "spring.cloud.consul.tls.certificate-password=change_me" }) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoConfigurationTests { @Autowired diff --git a/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulHealthIndicatorUpTest.java b/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulHealthIndicatorUpTest.java index 3235c640..6d63577e 100644 --- a/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulHealthIndicatorUpTest.java +++ b/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/ConsulHealthIndicatorUpTest.java @@ -25,6 +25,8 @@ import org.springframework.boot.actuate.health.HealthEndpoint; import org.springframework.boot.actuate.health.Status; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.consul.test.ConsulTestcontainers; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -34,6 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat; */ @RunWith(SpringRunner.class) @SpringBootTest +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulHealthIndicatorUpTest { @Autowired diff --git a/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/test/ConsulTestcontainers.java b/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/test/ConsulTestcontainers.java new file mode 100644 index 00000000..ed31bc63 --- /dev/null +++ b/spring-cloud-consul-core/src/test/java/org/springframework/cloud/consul/test/ConsulTestcontainers.java @@ -0,0 +1,83 @@ +/* + * Copyright 2013-2020 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 + * + * https://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.cloud.consul.test; + +import java.util.HashMap; + +import com.ecwid.consul.v1.ConsulClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.output.Slf4jLogConsumer; +import org.testcontainers.containers.wait.strategy.Wait; + +import org.springframework.cloud.consul.ConsulProperties; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.MapPropertySource; +import org.springframework.core.env.MutablePropertySources; + +public class ConsulTestcontainers + implements ApplicationContextInitializer { + + static final Logger logger = LoggerFactory.getLogger(ConsulTestcontainers.class); + + public static GenericContainer consul = new GenericContainer<>("consul:1.7.2") + .withLogConsumer(new Slf4jLogConsumer(logger).withSeparateOutputStreams()) + .waitingFor(Wait.forHttp("/v1/status/leader")).withExposedPorts(8500) + .withCommand("agent", "-dev", "-server", "-bootstrap", "-client", "0.0.0.0", + "-log-level", "trace"); + + @Override + public void initialize(ConfigurableApplicationContext context) { + start(); + + MutablePropertySources sources = context.getEnvironment().getPropertySources(); + + if (!sources.contains("consulTestcontainer")) { + Integer mappedPort = consul.getMappedPort(8500); + HashMap map = new HashMap<>(); + map.put(ConsulProperties.PREFIX + ".port", String.valueOf(mappedPort)); + map.put(ConsulProperties.PREFIX + ".host", consul.getContainerIpAddress()); + + sources.addFirst(new MapPropertySource("consulTestcontainer", map)); + } + } + + public static void start() { + consul.start(); + } + + public static Integer getPort() { + if (!consul.isRunning()) { + throw new IllegalStateException("consul Testcontainer is not running"); + } + return consul.getMappedPort(8500); + } + + public static String getHost() { + if (!consul.isRunning()) { + throw new IllegalStateException("consul Testcontainer is not running"); + } + return consul.getContainerIpAddress(); + } + + public static ConsulClient client() { + return new ConsulClient(getHost(), getPort()); + } + +} diff --git a/spring-cloud-consul-discovery/pom.xml b/spring-cloud-consul-discovery/pom.xml index 9eff4e1f..b5e3f88e 100644 --- a/spring-cloud-consul-discovery/pom.xml +++ b/spring-cloud-consul-discovery/pom.xml @@ -122,6 +122,18 @@ reactor-test test + + org.testcontainers + testcontainers + test + + + org.springframework.cloud + spring-cloud-consul-core + ${project.version} + test-jar + test + diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientAclTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientAclTests.java index 0e0d90a3..717119eb 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientAclTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientAclTests.java @@ -27,7 +27,9 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -42,6 +44,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.preferIpAddress=true", "consul.token=2d2e6b3b-1c82-40ab-8171-54609d8ad304" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulDiscoveryClientAclTests { @Autowired @@ -58,10 +61,11 @@ public class ConsulDiscoveryClientAclTests { @Test public void getInstancesForSecondServiceWorks() throws Exception { - new SpringApplicationBuilder(MyTestConfig.class).run( - "--spring.application.name=testSecondServiceAcl", "--server.port=0", - "--spring.cloud.consul.discovery.preferIpAddress=true", - "--consul.token=2d2e6b3b-1c82-40ab-8171-54609d8ad304"); + new SpringApplicationBuilder(MyTestConfig.class) + .initializers(new ConsulTestcontainers()) + .run("--spring.application.name=testSecondServiceAcl", "--server.port=0", + "--spring.cloud.consul.discovery.preferIpAddress=true", + "--consul.token=2d2e6b3b-1c82-40ab-8171-54609d8ad304"); List instances = this.discoveryClient .getInstances("testSecondServiceAcl"); diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientCustomizedTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientCustomizedTests.java index a9ae4223..1b55bc5f 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientCustomizedTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientCustomizedTests.java @@ -28,7 +28,9 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -48,6 +50,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.metadata[foo]=bar", "spring.cloud.consul.discovery.metadata[foo2]=bar2" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulDiscoveryClientCustomizedTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientDefaultQueryTagTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientDefaultQueryTagTests.java index 5f6dc79a..8cb21466 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientDefaultQueryTagTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientDefaultQueryTagTests.java @@ -30,9 +30,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -48,6 +50,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.catalogServicesWatch.enabled=false", "spring.cloud.consul.discovery.defaultQueryTag=intg" }) @DirtiesContext +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulDiscoveryClientDefaultQueryTagTests { public static final String NAME = "consulServiceDefaultTag"; diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientHttpsTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientHttpsTests.java index 8363c3b5..a355a8d9 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientHttpsTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientHttpsTests.java @@ -26,7 +26,9 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -42,6 +44,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.scheme=https" }, classes = ConsulDiscoveryClientHttpsTests.MyTestConfig.class, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulDiscoveryClientHttpsTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientTests.java index 819e6ee8..ccba1c18 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientTests.java @@ -29,7 +29,9 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -46,6 +48,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.metadata[foo]=bar" }, classes = ConsulDiscoveryClientTests.MyTestConfig.class, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulDiscoveryClientTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLoadbalancerClientTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLoadbalancerClientTests.java index 7516b7ea..9f18f13f 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLoadbalancerClientTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLoadbalancerClientTests.java @@ -27,6 +27,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; +import org.springframework.cloud.consul.test.ConsulTestcontainers; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -41,6 +43,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.prefer-ip-address=true", "spring.cloud.consul.discovery.tags=foo=bar" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulLoadbalancerClientTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTests.java index 09a20923..cd6b1262 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTests.java @@ -33,8 +33,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.support.ConsulHeartbeatAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static com.ecwid.consul.v1.health.model.Check.CheckStatus.CRITICAL; @@ -52,6 +54,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.heartbeat.enabled=true", "spring.cloud.consul.discovery.heartbeat.ttlValue=2" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class TtlSchedulerRemoveTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTests.java index c6191bb8..9e829722 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTests.java @@ -32,8 +32,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.support.ConsulHeartbeatAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static com.ecwid.consul.v1.health.model.Check.CheckStatus.PASSING; @@ -51,6 +53,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.heartbeat.ttlValue=2", "management.server.port=0" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class TtlSchedulerTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/DiscoveryClientConfigServiceAutoConfigurationTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/DiscoveryClientConfigServiceAutoConfigurationTests.java index c8e0c1d5..03414c68 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/DiscoveryClientConfigServiceAutoConfigurationTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/DiscoveryClientConfigServiceAutoConfigurationTests.java @@ -26,6 +26,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.config.client.ConfigClientProperties; import org.springframework.cloud.consul.discovery.ConsulDiscoveryClient; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.cloud.test.ClassPathExclusions; import org.springframework.cloud.test.ModifiedClassPathRunner; import org.springframework.context.ConfigurableApplicationContext; @@ -63,8 +64,13 @@ public class DiscoveryClientConfigServiceAutoConfigurationTests { @Test public void onWhenRequested() throws Exception { + ConsulTestcontainers.start(); + Integer port = ConsulTestcontainers.getPort(); + String host = ConsulTestcontainers.getHost(); setup("server.port=0", "spring.cloud.config.discovery.enabled=true", + "spring.cloud.consul.port=" + port, "spring.cloud.consul.host=" + host, "logging.level.org.springframework.cloud.config.client=DEBUG", + "spring.cloud.consul.discovery.catalog-services-watch.enabled=false", "spring.cloud.consul.discovery.test.enabled:true", "spring.application.name=discoveryclientconfigservicetest", "spring.jmx.enabled=false", "spring.cloud.consul.discovery.port:7001", diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationCheckTtlDeregisterCriticalServiceTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationCheckTtlDeregisterCriticalServiceTests.java index ebe047ea..f009a267 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationCheckTtlDeregisterCriticalServiceTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationCheckTtlDeregisterCriticalServiceTests.java @@ -27,7 +27,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.support.ConsulHeartbeatAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -43,6 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat; "spring.cloud.consul.discovery.health-check-critical-timeout=1m", "spring.cloud.consul.discovery.heartbeat.enabled=true" }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoRegistrationCheckTtlDeregisterCriticalServiceTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationHealthCheckHeadersTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationHealthCheckHeadersTests.java index 233ef495..b347999e 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationHealthCheckHeadersTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationHealthCheckHeadersTests.java @@ -27,7 +27,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -42,6 +44,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.application.name=myTestService-DiscoveryHealthCheckTlsSkipVerify", "spring.cloud.consul.discovery.health-check-headers.X-Config-Token=ACCESSTOKEN" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoRegistrationHealthCheckHeadersTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationHealthCheckTlsSkipVerifyTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationHealthCheckTlsSkipVerifyTests.java index 22b453c6..cdb3f100 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationHealthCheckTlsSkipVerifyTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationHealthCheckTlsSkipVerifyTests.java @@ -27,7 +27,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -43,6 +45,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.application.name=myTestService-DiscoveryHealthCheckTlsSkipVerify", "spring.cloud.consul.discovery.health-check-tls-skip-verify=true" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoRegistrationHealthCheckTlsSkipVerifyTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationIncludeHostnameInInstanceIdTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationIncludeHostnameInInstanceIdTests.java index 656a1464..f8733584 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationIncludeHostnameInInstanceIdTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistrationIncludeHostnameInInstanceIdTests.java @@ -27,7 +27,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -44,6 +46,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.include-hostname-in-instance-id=true", "spring.cloud.client.hostname=testhostname" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoRegistrationIncludeHostnameInInstanceIdTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceDeRegistrationDisabledTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceDeRegistrationDisabledTests.java index 71d21461..e8f20c7f 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceDeRegistrationDisabledTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceDeRegistrationDisabledTests.java @@ -31,7 +31,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -46,6 +48,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.instanceId=myTestNotDeRegisteredService-D", "spring.cloud.consul.discovery.deregister=false" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceDeRegistrationDisabledTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedAgentAddressTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedAgentAddressTests.java index 762027cd..b942bc28 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedAgentAddressTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedAgentAddressTests.java @@ -30,7 +30,9 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.StringUtils; @@ -48,6 +50,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.serviceName=myprefix-${spring.application.name}", "spring.cloud.consul.discovery.preferAgentAddress=true" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedAgentAddressTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedDiscoveryPortTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedDiscoveryPortTests.java index 5b9e65c8..ef7f2545 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedDiscoveryPortTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedDiscoveryPortTests.java @@ -29,7 +29,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.SocketUtils; @@ -44,6 +46,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen classes = ConsulAutoServiceRegistrationCustomizedDiscoveryPortTests.TestConfig.class, properties = { "spring.application.name=myTestService-DiscoveryPort" }, webEnvironment = DEFINED_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedDiscoveryPortTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedInstanceGroupTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedInstanceGroupTests.java index b23c743f..e773f00e 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedInstanceGroupTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedInstanceGroupTests.java @@ -32,7 +32,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -48,6 +50,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.instanceId=myTestService1-WithGroup", "spring.cloud.consul.discovery.instanceGroup=test" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedInstanceGroupTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedInstanceZoneTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedInstanceZoneTests.java index 5b417bff..999464ef 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedInstanceZoneTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedInstanceZoneTests.java @@ -30,7 +30,9 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -47,6 +49,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.instanceZone=zone1", "spring.cloud.consul.discovery.defaultZoneMetadataName=myZone" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedInstanceZoneTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedManagementServicePortTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedManagementServicePortTests.java index 2f384fdd..9c8320f7 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedManagementServicePortTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedManagementServicePortTests.java @@ -32,7 +32,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.StringUtils; @@ -54,6 +56,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.serviceName=myprefix-${spring.application.name}", "management.server.port=0" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedManagementServicePortTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedPropsTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedPropsTests.java index 7ad02749..06bbabb8 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedPropsTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedPropsTests.java @@ -36,7 +36,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -64,6 +66,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.metadata.key1=value1", "spring.cloud.consul.discovery.metadata.key2=value2" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedPropsTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedServiceNameTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedServiceNameTests.java index 2723b214..7c79cb51 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedServiceNameTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedServiceNameTests.java @@ -30,7 +30,9 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -46,6 +48,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.instanceId=myTestService1-CC", "spring.cloud.consul.discovery.serviceName=myprefix-${spring.application.name}" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedServiceNameTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedServletContextTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedServletContextTests.java index a43010d9..67b7f556 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedServletContextTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedServletContextTests.java @@ -28,7 +28,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -44,6 +46,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.instanceId=myTestService1-WithServletContext", "server.servlet.context-path=/customContext" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedServletContextTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedTests.java index 9d9b9de3..4e9edad8 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedTests.java @@ -28,7 +28,9 @@ import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationC import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Bean; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -41,6 +43,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen @SpringBootTest(classes = ConsulAutoServiceRegistrationCustomizedTests.MyTestConfig.class, properties = { "spring.application.name=testCustomAutoServiceRegistration" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationCustomizedTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDefaultCheckTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDefaultCheckTests.java index d7bb979f..ed9af3b4 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDefaultCheckTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDefaultCheckTests.java @@ -24,6 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; import org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistrationCustomizedPropsTests.TestPropsConfig; +import org.springframework.cloud.consul.test.ConsulTestcontainers; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -41,6 +43,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.healthCheckInterval=19s", "spring.cloud.consul.discovery.healthCheckTimeout=12s" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationDefaultCheckTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDefaultPortTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDefaultPortTests.java index c3711dca..16cf3c43 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDefaultPortTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDefaultPortTests.java @@ -30,7 +30,9 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -44,6 +46,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen properties = { "spring.application.name=myTestService2-DD", "spring.cloud.consul.discovery.instanceId=myTestService2-DD" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationDefaultPortTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDisabledTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDisabledTests.java index 77e0b739..a2ec4809 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDisabledTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationDisabledTests.java @@ -25,6 +25,7 @@ import org.junit.Test; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; import static org.assertj.core.api.Assertions.assertThat; @@ -62,7 +63,7 @@ public class ConsulAutoServiceRegistrationDisabledTests { new WebApplicationContextRunner().withUserConfiguration(TestConfig.class) .withPropertyValues("spring.application.name=" + testName, disableProperty + "=false", "server.port=0") - .run(context -> { + .withInitializer(new ConsulTestcontainers()).run(context -> { assertThat(context) .doesNotHaveBean(ConsulAutoServiceRegistration.class); diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationFailFastTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationFailFastTests.java index 8053ab30..9d598b3e 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationFailFastTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationFailFastTests.java @@ -29,8 +29,10 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Bean; import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; import static org.hamcrest.Matchers.isA; @@ -39,6 +41,7 @@ import static org.hamcrest.Matchers.isA; * @author Venil Noronha */ @DirtiesContext +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationFailFastTests { @Rule diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementCustomizerTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementCustomizerTests.java index 6ae5fbc6..ef4cea89 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementCustomizerTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementCustomizerTests.java @@ -30,8 +30,10 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -48,6 +50,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.registerHealthCheck=false", "management.server.port=4453" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationManagementCustomizerTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementDisabledServiceTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementDisabledServiceTests.java index 9afa4ea3..b99293a1 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementDisabledServiceTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementDisabledServiceTests.java @@ -31,7 +31,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.StringUtils; @@ -50,6 +52,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.managementPort=4453", "management.port=0" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationManagementDisabledServiceTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementServiceTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementServiceTests.java index 5b0343b0..7a314e7f 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementServiceTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementServiceTests.java @@ -31,7 +31,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.StringUtils; @@ -49,6 +51,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.consul.discovery.registerHealthCheck=false", "management.server.port=4452" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationManagementServiceTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationNonWebTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationNonWebTests.java index 2fcf6fae..9af5b4e4 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationNonWebTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationNonWebTests.java @@ -28,7 +28,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -41,6 +43,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen @SpringBootTest(classes = ConsulAutoServiceRegistrationNonWebTests.TestConfig.class, properties = { "spring.application.name=consulNonWebTest", "server.port=32111" }, webEnvironment = NONE) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationNonWebTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationRetryTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationRetryTests.java index a8daa66e..334ffa25 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationRetryTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationRetryTests.java @@ -31,9 +31,11 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.test.system.OutputCaptureRule; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; import static org.hamcrest.Matchers.isA; @@ -42,6 +44,7 @@ import static org.hamcrest.Matchers.isA; * @author Venil Noronha */ @DirtiesContext +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationRetryTests { @Rule diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationTests.java index 55222af2..1d26105d 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationTests.java @@ -32,6 +32,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.StringUtils; @@ -46,6 +48,7 @@ import static org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistr @RunWith(SpringRunner.class) @SpringBootTest(properties = { "spring.application.name=myTestService1-FF::something" }, webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulAutoServiceRegistrationTests { @Autowired diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryCheckTtlTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryCheckTtlTests.java index 993e3f79..6d88c7b0 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryCheckTtlTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryCheckTtlTests.java @@ -33,7 +33,9 @@ import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; import org.springframework.cloud.consul.discovery.TtlScheduler; import org.springframework.cloud.consul.support.ConsulHeartbeatAutoConfiguration; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -47,10 +49,11 @@ import static org.assertj.core.api.Assertions.assertThat; "spring.application.name=myConsulServiceRegistryCheckTtlTestService-S", "spring.cloud.consul.discovery.heartbeat.enabled=true" }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulServiceRegistryCheckTtlTests { @LocalServerPort - private int randomServerPort; + private int port; @Autowired private ConsulDiscoveryProperties discoveryProperties; @@ -69,7 +72,7 @@ public class ConsulServiceRegistryCheckTtlTests { NewService.Check httpCheck = new NewService.Check(); httpCheck.setHttp( String.format("%s://%s:%s%s", this.discoveryProperties.getScheme(), - this.discoveryProperties.getHostname(), this.randomServerPort, + this.discoveryProperties.getHostname(), this.port, this.discoveryProperties.getHealthCheckPath())); httpCheck.setInterval(this.discoveryProperties.getHealthCheckInterval()); NewService httpService = new NewService(); diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryDisabledTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryDisabledTests.java index a54c996a..58a61e4e 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryDisabledTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryDisabledTests.java @@ -26,6 +26,7 @@ import org.junit.Test; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; import org.springframework.cloud.consul.discovery.HeartbeatProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; import org.springframework.context.annotation.Configuration; import static org.assertj.core.api.Assertions.assertThat; @@ -51,7 +52,7 @@ public class ConsulServiceRegistryDisabledTests { new WebApplicationContextRunner().withUserConfiguration(TestConfig.class) .withPropertyValues("spring.application.name=" + testName, disableProperty + "=false", "server.port=0") - .run(context -> { + .withInitializer(new ConsulTestcontainers()).run(context -> { assertThat(context).doesNotHaveBean(ConsulServiceRegistry.class); assertThat(context).doesNotHaveBean(HeartbeatProperties.class); diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryTests.java index ed4d6027..5497cd9b 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryTests.java @@ -32,6 +32,8 @@ import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.consul.discovery.ConsulDiscoveryClient; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.test.ConsulTestcontainers; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -43,6 +45,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen @RunWith(SpringRunner.class) @SpringBootTest(properties = "spring.cloud.consul.discovery.query-passing=true", webEnvironment = RANDOM_PORT) +@ContextConfiguration(initializers = ConsulTestcontainers.class) public class ConsulServiceRegistryTests { @Autowired(required = false) diff --git a/src/main/bash/ci_install_consul.sh b/src/main/bash/ci_install_consul.sh deleted file mode 100755 index 6d03bff9..00000000 --- a/src/main/bash/ci_install_consul.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -CONSUL_VER="1.7.2" -PLATFORM="amd64" -if [ "$(uname -m)" == aarch64 ]; then - PLATFORM="arm64" -fi -CONSUL_ZIP="consul_${CONSUL_VER}_linux_${PLATFORM}.zip" -IGNORE_CERTS="${IGNORE_CERTS:-no}" - -# cleanup -rm "consul_*" -rm "consul" -# install consul -if [[ "${IGNORE_CERTS}" == "no" ]] ; then - echo "Downloading consul with certs verification" - wget "https://releases.hashicorp.com/consul/${CONSUL_VER}/${CONSUL_ZIP}" -else - echo "WARNING... Downloading consul WITHOUT certs verification" - wget "https://releases.hashicorp.com/consul/${CONSUL_VER}/${CONSUL_ZIP}" --no-check-certificate -fi -unzip ${CONSUL_ZIP} -# check -./consul --version diff --git a/src/main/bash/local_run_consul.sh b/src/main/bash/local_run_consul.sh deleted file mode 100755 index 9f1054d2..00000000 --- a/src/main/bash/local_run_consul.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -mkdir /tmp/consul-config -BASEDIR=`dirname $0`/../../.. -consul agent -server -bootstrap-expect 1 -advertise 127.0.0.1 -data-dir /tmp/consul -config-dir=/tmp/consul-config -ui-dir ${BASEDIR}/src/test/resources/consul_ui diff --git a/src/test/bash/ci_run_consul.sh b/src/test/bash/ci_run_consul.sh deleted file mode 100755 index 00437b88..00000000 --- a/src/test/bash/ci_run_consul.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -ps -ef | grep consul -killall consul -BASEDIR=`dirname $0`/../../.. -#${BASEDIR}/consul agent -server -bootstrap-expect 1 -advertise 127.0.0.1 -data-dir /tmp/consul -ui-dir ${BASEDIR}/src/test/resources/consul_ui -config-dir ${BASEDIR}/src/test/resources/consul_config & -${BASEDIR}/consul agent -server -bootstrap-expect 1 -advertise 127.0.0.1 -data-dir /tmp/consul -ui-dir ${BASEDIR}/src/test/resources/consul_ui -config-dir ${BASEDIR}/src/test/resources/empty_config & -# wait for consul to elect a leader before sending acl -sleep 5 -# FIXME: 2.2.3 consul acl rework see https://github.com/spring-cloud/spring-cloud-consul/issues/628 -#curl -X PUT -d @`dirname $0`/../../test/resources/consul_acl/consul_anonymous_acl.json http://localhost:8500/v1/acl/create?token=2ee647bd-bd69-4118-9f34-b9a6e9e60746 -#echo "consul_anonymous_acl installed" -#curl -X PUT -d @`dirname $0`/../../test/resources/consul_acl/consul_discovery_client_acl.json http://localhost:8500/v1/acl/create?token=2ee647bd-bd69-4118-9f34-b9a6e9e60746 -#echo "consul_discovery_client_acl installed"