diff --git a/pom.xml b/pom.xml index e79b897..729255c 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.jupiter-tools spring-boot-extensions-parent - 0.4 + 0.5 pom spring-boot-extensions-parent @@ -35,10 +35,12 @@ UTF-8 UTF-8 3.7.0 - 1.8 + 1.8 5.5.0 - 5.5.0 - 1.5.0 + 5.9.0 + 1.9.0 + 1.17.5 + 5.12.1 @@ -75,7 +77,7 @@ org.springframework.boot spring-boot-starter-parent - [2.0.0.RELEASE,2.3.0.RELEASE] + 2.7.4 @@ -122,11 +124,6 @@ junit-platform-launcher ${junit-platform.version} - - org.junit.vintage - junit-vintage-engine - ${junit.vintage.version} - org.junit.jupiter junit-jupiter-params @@ -193,7 +190,7 @@ - + org.apache.maven.plugins @@ -230,7 +227,7 @@ org.apache.maven.plugins maven-surefire-plugin 2.22.2 - + plain diff --git a/spring-test-activemq/pom.xml b/spring-test-activemq/pom.xml index a3e3268..fa3edff 100644 --- a/spring-test-activemq/pom.xml +++ b/spring-test-activemq/pom.xml @@ -6,7 +6,7 @@ com.jupiter-tools spring-boot-extensions-parent - 0.4 + 0.5 spring-test-activemq @@ -20,7 +20,7 @@ UTF-8 UTF-8 1.8 - 1.11.4 + 4.2.0 @@ -49,16 +49,21 @@ org.testcontainers testcontainers - ${test.containers.version} + ${testcontainers.version} compile + + net.java.dev.jna + jna + ${jna.version} + org.awaitility awaitility - 3.1.0 + ${awaitility.version} diff --git a/spring-test-activemq/src/main/java/com/jupiter/tools/spring/test/activemq/extension/ActiveMqTcExtension.java b/spring-test-activemq/src/main/java/com/jupiter/tools/spring/test/activemq/extension/ActiveMqTcExtension.java index 4fd5c6e..383072f 100644 --- a/spring-test-activemq/src/main/java/com/jupiter/tools/spring/test/activemq/extension/ActiveMqTcExtension.java +++ b/spring-test-activemq/src/main/java/com/jupiter/tools/spring/test/activemq/extension/ActiveMqTcExtension.java @@ -11,15 +11,15 @@ public class ActiveMqTcExtension implements Extension { private static final Integer MQ_PORT = 61616; - private static GenericContainer activemq = + private static final GenericContainer activemq = new GenericContainer("rmohr/activemq:latest").withExposedPorts(MQ_PORT); static { - + activemq.withReuse(true); activemq.start(); String brokerUrl = String.format("tcp://%s:%s", - activemq.getContainerIpAddress(), + activemq.getHost(), activemq.getMappedPort(MQ_PORT)); System.setProperty("spring.activemq.broker-url", brokerUrl); diff --git a/spring-test-core/pom.xml b/spring-test-core/pom.xml index a8e6d7f..46590bc 100644 --- a/spring-test-core/pom.xml +++ b/spring-test-core/pom.xml @@ -6,7 +6,7 @@ com.jupiter-tools spring-boot-extensions-parent - 0.4 + 0.5 spring-test-core @@ -20,16 +20,15 @@ UTF-8 UTF-8 1.8 - 2.11.0 - ${jackson.version} - ${jackson.version} + 2.13.4 + 2.11.0 commons-io commons-io - 2.4 + ${commons-io.version} com.fasterxml.jackson.core diff --git a/spring-test-core/src/main/java/com/jupiter/tools/spring/test/core/annotation/EnableIntegrationTest.java b/spring-test-core/src/main/java/com/jupiter/tools/spring/test/core/annotation/EnableIntegrationTest.java old mode 100755 new mode 100644 index 5d71e80..a35e086 --- a/spring-test-core/src/main/java/com/jupiter/tools/spring/test/core/annotation/EnableIntegrationTest.java +++ b/spring-test-core/src/main/java/com/jupiter/tools/spring/test/core/annotation/EnableIntegrationTest.java @@ -1,8 +1,6 @@ package com.jupiter.tools.spring.test.core.annotation; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -19,6 +17,5 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @SpringBootTest -@ExtendWith(SpringExtension.class) public @interface EnableIntegrationTest { } diff --git a/spring-test-jpa/pom.xml b/spring-test-jpa/pom.xml index ea1ce42..d8c4124 100644 --- a/spring-test-jpa/pom.xml +++ b/spring-test-jpa/pom.xml @@ -6,7 +6,7 @@ com.jupiter-tools spring-boot-extensions-parent - 0.4 + 0.5 spring-test-jpa @@ -20,6 +20,7 @@ UTF-8 UTF-8 1.8 + 1.34.0 @@ -54,18 +55,7 @@ com.github.database-rider rider-spring - 1.7.2 - compile - - - org.slf4j - slf4j-api - - - org.slf4j - slf4j-simple - - + ${rider-spring.version} diff --git a/spring-test-mysql/pom.xml b/spring-test-mysql/pom.xml index f116b9f..dbf6e64 100644 --- a/spring-test-mysql/pom.xml +++ b/spring-test-mysql/pom.xml @@ -6,7 +6,7 @@ com.jupiter-tools spring-boot-extensions-parent - 0.4 + 0.5 spring-test-mysql @@ -20,6 +20,7 @@ UTF-8 UTF-8 1.8 + 8.0.30 @@ -38,16 +39,21 @@ org.testcontainers mysql - 1.11.4 + ${testcontainers.version} compile + + net.java.dev.jna + jna + ${jna.version} + mysql mysql-connector-java - 5.1.47 + ${mysql-connector-java.version} provided diff --git a/spring-test-mysql/src/main/java/com/jupiter/tools/spring/test/mysql/extension/MySqlTcExtension.java b/spring-test-mysql/src/main/java/com/jupiter/tools/spring/test/mysql/extension/MySqlTcExtension.java index 0b0f3c5..4a6ec39 100644 --- a/spring-test-mysql/src/main/java/com/jupiter/tools/spring/test/mysql/extension/MySqlTcExtension.java +++ b/spring-test-mysql/src/main/java/com/jupiter/tools/spring/test/mysql/extension/MySqlTcExtension.java @@ -14,7 +14,8 @@ public class MySqlTcExtension implements Extension { static { System.out.println("Start MySql testcontainers extension...\n"); - MySQLContainer mysql = new MySQLContainer(); + MySQLContainer mysql = new MySQLContainer("mysql:8.0.30"); + mysql.withReuse(true); mysql.start(); System.setProperty("spring.datasource.driver-class-name", mysql.getDriverClassName()); diff --git a/spring-test-postgres/pom.xml b/spring-test-postgres/pom.xml index 923c620..156b60f 100644 --- a/spring-test-postgres/pom.xml +++ b/spring-test-postgres/pom.xml @@ -6,7 +6,7 @@ com.jupiter-tools spring-boot-extensions-parent - 0.4 + 0.5 spring-test-postgres @@ -40,8 +40,12 @@ org.testcontainers postgresql - 1.11.4 - compile + ${testcontainers.version} + + + net.java.dev.jna + jna + ${jna.version} @@ -62,7 +66,6 @@ - diff --git a/spring-test-postgres/src/main/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtension.java b/spring-test-postgres/src/main/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtension.java index 01da115..bfb7f6b 100644 --- a/spring-test-postgres/src/main/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtension.java +++ b/spring-test-postgres/src/main/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtension.java @@ -14,7 +14,8 @@ public class PostgresTcExtension implements Extension { static { System.out.println("Start Postgres testcontainers extension...\n"); - PostgreSQLContainer postgres = new PostgreSQLContainer(); + PostgreSQLContainer postgres = new PostgreSQLContainer("postgres:14.5-alpine"); + postgres.withReuse(true); postgres.start(); System.setProperty("spring.datasource.driver-class-name", postgres.getDriverClassName()); diff --git a/spring-test-rabbitmq/pom.xml b/spring-test-rabbitmq/pom.xml index c37d21a..d952724 100644 --- a/spring-test-rabbitmq/pom.xml +++ b/spring-test-rabbitmq/pom.xml @@ -6,7 +6,7 @@ com.jupiter-tools spring-boot-extensions-parent - 0.4 + 0.5 spring-test-rabbitmq @@ -20,7 +20,7 @@ UTF-8 UTF-8 1.8 - 1.11.4 + 4.2.0 @@ -44,16 +44,21 @@ org.testcontainers testcontainers - ${test.containers.version} + ${testcontainers.version} compile + + net.java.dev.jna + jna + ${jna.version} + org.awaitility awaitility - 3.1.0 + ${awaitility.version} diff --git a/spring-test-rabbitmq/src/main/java/com/jupiter/tools/spring/test/rabbitmq/extension/RabbitMqTcExtension.java b/spring-test-rabbitmq/src/main/java/com/jupiter/tools/spring/test/rabbitmq/extension/RabbitMqTcExtension.java index 84e6dfe..a2f6c7d 100644 --- a/spring-test-rabbitmq/src/main/java/com/jupiter/tools/spring/test/rabbitmq/extension/RabbitMqTcExtension.java +++ b/spring-test-rabbitmq/src/main/java/com/jupiter/tools/spring/test/rabbitmq/extension/RabbitMqTcExtension.java @@ -11,12 +11,13 @@ public class RabbitMqTcExtension implements Extension { private static final Integer RABBIT_PORT = 5672; - private static GenericContainer rabbitmq = - new GenericContainer("rabbitmq:management").withExposedPorts(RABBIT_PORT, 15672); + private static final GenericContainer rabbitmq = + new GenericContainer("rabbitmq:3.9.23-management-alpine").withExposedPorts(RABBIT_PORT, 15672); static { rabbitmq.start(); - System.setProperty("spring.rabbitmq.host", rabbitmq.getContainerIpAddress()); + rabbitmq.withReuse(true); + System.setProperty("spring.rabbitmq.host", rabbitmq.getHost()); System.setProperty("spring.rabbitmq.port", rabbitmq.getMappedPort(RABBIT_PORT).toString()); } } diff --git a/spring-test-web/pom.xml b/spring-test-web/pom.xml index d8f60aa..bb880fb 100644 --- a/spring-test-web/pom.xml +++ b/spring-test-web/pom.xml @@ -6,11 +6,11 @@ com.jupiter-tools spring-boot-extensions-parent - 0.4 + 0.5 spring-test-web - ${parent.version} + 0.5 jar spring-test-web @@ -22,7 +22,7 @@ 1.8 1.11.4 - Greenwich.RELEASE + 2021.0.4 @@ -52,7 +52,7 @@ org.springframework.cloud - spring-cloud-starter-netflix-ribbon + spring-cloud-starter-loadbalancer diff --git a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/annotation/EnableRestMvcTest.java b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/annotation/EnableRestMvcTest.java new file mode 100644 index 0000000..93cfc9e --- /dev/null +++ b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/annotation/EnableRestMvcTest.java @@ -0,0 +1,31 @@ +package com.jupiter.tools.spring.test.web.annotation; + +import com.jupiter.tools.spring.test.core.annotation.EnableIntegrationTest; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Created on 17.07.2018. + * + * Enable configuration for tests with an API level. + * Run entire application context and configure a MockMvc. + * + * Main test-cases: + * - test REST API communication + * - test API response/request converters + * - test all application scoup from REST-API (for example: API->Service->DAO->JPA) + * + * @author Korovin Anatoliy + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +@EnableIntegrationTest +@AutoConfigureMockMvc +public @interface EnableRestMvcTest { + SpringBootTest.WebEnvironment webEnvironment() default SpringBootTest.WebEnvironment.RANDOM_PORT; +} diff --git a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/annotation/EnableRestTest.java b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/annotation/EnableRestTest.java index 983f95e..5b17e88 100644 --- a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/annotation/EnableRestTest.java +++ b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/annotation/EnableRestTest.java @@ -1,33 +1,18 @@ package com.jupiter.tools.spring.test.web.annotation; +import com.jupiter.tools.spring.test.core.annotation.EnableIntegrationTest; +import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient; +import org.springframework.boot.test.context.SpringBootTest; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import com.jupiter.tools.spring.test.core.annotation.EnableIntegrationTest; -import org.junit.jupiter.api.extension.ExtendWith; - -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -/** - * Created on 17.07.2018. - * - * Enable configuration for tests with an API level. - * Run entire application context and configure a MockMvc. - * - * Main test-cases: - * - test REST API communication - * - test API response/request converters - * - test all application scoup from REST-API (for example: API->Service->DAO->JPA) - * - * @author Korovin Anatoliy - */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) +@AutoConfigureWebTestClient @EnableIntegrationTest -@AutoConfigureMockMvc public @interface EnableRestTest { + SpringBootTest.WebEnvironment webEnvironment() default SpringBootTest.WebEnvironment.RANDOM_PORT; } diff --git a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/LocalHostLoadBalancerClientFactory.java b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/LocalHostLoadBalancerClientFactory.java new file mode 100644 index 0000000..52d48a8 --- /dev/null +++ b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/LocalHostLoadBalancerClientFactory.java @@ -0,0 +1,63 @@ +package com.jupiter.tools.spring.test.web.extension.ribbon; + +import org.springframework.cloud.client.DefaultServiceInstance; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties; +import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer; +import org.springframework.cloud.context.named.NamedContextFactory; +import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientConfiguration; +import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientSpecification; +import org.springframework.cloud.loadbalancer.core.RoundRobinLoadBalancer; +import org.springframework.cloud.loadbalancer.support.ServiceInstanceListSuppliers; +import org.springframework.core.env.Environment; + +import java.util.HashMap; +import java.util.Map; + +import static org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory.NAMESPACE; +import static org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory.PROPERTY_NAME; + +/** + * @author Gennady Kuzmin + */ +public class LocalHostLoadBalancerClientFactory extends NamedContextFactory + implements ReactiveLoadBalancer.Factory { + + private final Map instances = new HashMap<>(); + private final Environment environment; + + public LocalHostLoadBalancerClientFactory(Environment environment) { + super(LoadBalancerClientConfiguration.class, NAMESPACE, PROPERTY_NAME); + + this.environment = environment; + } + + @Override + public LoadBalancerProperties getProperties(String serviceId) { + return new LoadBalancerProperties(); + } + + @Override + public ReactiveLoadBalancer getInstance(String serviceId) { + ServiceInstance serviceInstance = instances.isEmpty() ? + toServiceInstances(serviceId) : + instances.get(serviceId); + + return new RoundRobinLoadBalancer(ServiceInstanceListSuppliers.toProvider(serviceId, serviceInstance), serviceId); + } + + private ServiceInstance toServiceInstances(String serviceId) { + int port = environment.getProperty("local.server.port", Integer.class); + return new DefaultServiceInstance(serviceId, serviceId, "127.0.0.1", port, false); + } + + public void clearInstances() { + instances.clear(); + } + + public void addInstances(String... serviceIds) { + for (String serviceId : serviceIds) { + instances.put(serviceId, toServiceInstances(serviceId)); + } + } +} diff --git a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtension.java b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtension.java similarity index 52% rename from spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtension.java rename to spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtension.java index 2af8959..78ec709 100644 --- a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtension.java +++ b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtension.java @@ -4,27 +4,33 @@ import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.Extension; import org.junit.jupiter.api.extension.ExtensionContext; +import org.springframework.test.context.junit.jupiter.SpringExtension; /** * Created on 05.02.2019. * * @author Korovin Anatoliy + * @author Gennady Kuzmin */ -public class RedirectRibbonExtension implements Extension, BeforeEachCallback, AfterAllCallback { +public class RedirectLBExtension implements Extension, BeforeEachCallback, AfterAllCallback { @Override public void beforeEach(ExtensionContext context) throws Exception { - RedirectRibbonExtensionConfig.setClients(getClientNameFromTestClass(context)); + getLoadBalancerClientFactory(context).addInstances(getClientNameFromTestClass(context)); } @Override public void afterAll(ExtensionContext context) throws Exception { - RedirectRibbonExtensionConfig.setClients(); + getLoadBalancerClientFactory(context).clearInstances(); + } + + private LocalHostLoadBalancerClientFactory getLoadBalancerClientFactory(ExtensionContext context) { + return SpringExtension.getApplicationContext(context).getBean(LocalHostLoadBalancerClientFactory.class); } private String[] getClientNameFromTestClass(ExtensionContext context) { return context.getRequiredTestClass() - .getAnnotation(RedirectRibbonToEmbeddedWebServer.class) + .getAnnotation(RedirectLBToLocalHost.class) .value(); } } diff --git a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionConfig.java b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionConfig.java new file mode 100644 index 0000000..25dc76e --- /dev/null +++ b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionConfig.java @@ -0,0 +1,29 @@ +package com.jupiter.tools.spring.test.web.extension.ribbon; + +import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; +import org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.env.Environment; + +/** + * Created on 06.02.2019. + * + * @author Korovin Anatoliy + * @author Gennady Kuzmin + */ +@Configuration +public class RedirectLBExtensionConfig { + + @Bean + @Primary + public LocalHostLoadBalancerClientFactory jupiterToolsLoadBalancerClientFactory(Environment environment) { + return new LocalHostLoadBalancerClientFactory(environment); + } + + @Bean + public LoadBalancerClient blockingLoadBalancerClient(LocalHostLoadBalancerClientFactory loadBalancerClientFactory) { + return new BlockingLoadBalancerClient(loadBalancerClientFactory); + } +} diff --git a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonToEmbeddedWebServer.java b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBToLocalHost.java similarity index 69% rename from spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonToEmbeddedWebServer.java rename to spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBToLocalHost.java index 8113c12..849aa67 100644 --- a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonToEmbeddedWebServer.java +++ b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBToLocalHost.java @@ -1,7 +1,7 @@ package com.jupiter.tools.spring.test.web.extension.ribbon; import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.cloud.netflix.ribbon.RibbonClients; +import org.springframework.context.annotation.Import; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -15,9 +15,9 @@ */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) -@ExtendWith(RedirectRibbonExtension.class) -@RibbonClients(defaultConfiguration = RedirectRibbonExtensionConfig.class) -public @interface RedirectRibbonToEmbeddedWebServer { +@ExtendWith(RedirectLBExtension.class) +@Import(RedirectLBExtensionConfig.class) +public @interface RedirectLBToLocalHost { /** * @return List of client names which should be redirected to the embedded web server diff --git a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionConfig.java b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionConfig.java deleted file mode 100644 index 15034a7..0000000 --- a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionConfig.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.jupiter.tools.spring.test.web.extension.ribbon; - -import com.netflix.client.config.IClientConfig; -import com.netflix.loadbalancer.Server; -import com.netflix.loadbalancer.ServerList; -import org.springframework.context.annotation.Bean; - -import java.util.Arrays; -import java.util.List; - -/** - * Created on 06.02.2019. - * - * @author Korovin Anatoliy - */ -public class RedirectRibbonExtensionConfig { - - private static List clientNames; - - /** - * set list of client which will be redirect to local embedded server - * - * @param clients list of ribbon client names - */ - public static void setClients(String... clients) { - clientNames = Arrays.asList(clients); - } - - @Bean - public ServerList customServerList(IClientConfig ribbonClientConfig) { - return new RedirectRibbonServerList(ribbonClientConfig, clientNames); - } -} diff --git a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonServerList.java b/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonServerList.java deleted file mode 100644 index e9b191d..0000000 --- a/spring-test-web/src/main/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonServerList.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.jupiter.tools.spring.test.web.extension.ribbon; - -import com.netflix.client.config.IClientConfig; -import com.netflix.loadbalancer.AbstractServerList; -import com.netflix.loadbalancer.Server; - -import java.util.Collections; -import java.util.List; - -/** - * Created on 06.02.2019. - * - * @author Korovin Anatoliy - */ -public class RedirectRibbonServerList extends AbstractServerList { - - private final List clientNames; - private IClientConfig clientConfig; - - - public RedirectRibbonServerList(IClientConfig clientConfig, List clientNames) { - if (clientNames == null) { - throw new RuntimeException("clientNames must be not null"); - } - this.clientConfig = clientConfig; - this.clientNames = clientNames; - } - - @Override - public List getInitialListOfServers() { - return getUpdatedListOfServers(); - } - - @Override - public List getUpdatedListOfServers() { - - // processing of default value of the RedirectRibbonToEmbeddedWebServer annotation - if (clientNames.isEmpty()) { - return getEmbeddedServers(); - } - - if (clientConfig != null && clientNames.contains(clientConfig.getClientName())) { - return getEmbeddedServers(); - } else { - return Collections.emptyList(); - } - } - - @Override - public void initWithNiwsConfig(IClientConfig clientConfig) { - this.clientConfig = clientConfig; - } - - private List getEmbeddedServers() { - return Collections.singletonList(new Server("127.0.0.1", getPort())); - } - - private Integer getPort() { - return Integer.valueOf(System.getProperty("server.port")); - } -} diff --git a/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/EnableRestTestTest.java b/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/EnableRestTestMvcTest.java similarity index 92% rename from spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/EnableRestTestTest.java rename to spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/EnableRestTestMvcTest.java index 6fa79ef..c75ee46 100644 --- a/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/EnableRestTestTest.java +++ b/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/EnableRestTestMvcTest.java @@ -1,8 +1,7 @@ package com.jupiter.tools.spring.test.web.extension; -import com.jupiter.tools.spring.test.web.annotation.EnableRestTest; +import com.jupiter.tools.spring.test.web.annotation.EnableRestMvcTest; import org.junit.jupiter.api.Test; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.test.web.servlet.MockMvc; @@ -19,8 +18,8 @@ * * @author Korovin Anatoliy */ -@EnableRestTest -public class EnableRestTestTest { +@EnableRestMvcTest +public class EnableRestTestMvcTest { @Autowired private MockMvc mockMvc; diff --git a/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionByFeignTest.java b/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionByFeignTest.java similarity index 87% rename from spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionByFeignTest.java rename to spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionByFeignTest.java index 6a5277b..dff5a1c 100644 --- a/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionByFeignTest.java +++ b/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionByFeignTest.java @@ -1,11 +1,10 @@ package com.jupiter.tools.spring.test.web.extension.ribbon; -import com.jupiter.tools.spring.test.web.annotation.EnableEmbeddedWebServerTest; import feign.Client; import feign.Feign; import org.junit.jupiter.api.Test; - import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.cloud.openfeign.support.SpringMvcContract; import org.springframework.context.annotation.Bean; @@ -20,9 +19,9 @@ * * @author Korovin Anatoliy */ -@EnableEmbeddedWebServerTest -@RedirectRibbonToEmbeddedWebServer("test-service") -class RedirectRibbonExtensionByFeignTest { +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@RedirectLBToLocalHost("test-service") +class RedirectLBExtensionByFeignTest { @Autowired private CustomFeign customFeign; diff --git a/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionTest.java b/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionTest.java similarity index 85% rename from spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionTest.java rename to spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionTest.java index ad8b6c8..29a71fa 100644 --- a/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonExtensionTest.java +++ b/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBExtensionTest.java @@ -1,9 +1,9 @@ package com.jupiter.tools.spring.test.web.extension.ribbon; -import com.jupiter.tools.spring.test.web.annotation.EnableEmbeddedWebServerTest; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; @@ -23,9 +23,9 @@ * * @author Korovin Anatoliy */ -@EnableEmbeddedWebServerTest -@RedirectRibbonToEmbeddedWebServer("test-service") -class RedirectRibbonExtensionTest { +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@RedirectLBToLocalHost("test-service") +class RedirectLBExtensionTest { @Autowired private RestTemplate restTemplate; @@ -47,8 +47,8 @@ void testRedirectToUnknownClient() { // Act Assertions.assertThrows(Exception.class, () -> restTemplate.getForObject("http://foo-service/messages/{message}/size", - String.class, - "test-message")); + String.class, + "test-message")); } @TestConfiguration diff --git a/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonToEmbeddedWebServerTest.java b/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBToLocalHostTest.java similarity index 89% rename from spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonToEmbeddedWebServerTest.java rename to spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBToLocalHostTest.java index 4a57c02..9cd14ff 100644 --- a/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectRibbonToEmbeddedWebServerTest.java +++ b/spring-test-web/src/test/java/com/jupiter/tools/spring/test/web/extension/ribbon/RedirectLBToLocalHostTest.java @@ -1,9 +1,8 @@ package com.jupiter.tools.spring.test.web.extension.ribbon; -import com.jupiter.tools.spring.test.web.annotation.EnableEmbeddedWebServerTest; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; @@ -23,9 +22,9 @@ * * @author Korovin Anatoliy */ -@EnableEmbeddedWebServerTest -@RedirectRibbonToEmbeddedWebServer -class RedirectRibbonToEmbeddedWebServerTest { +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@RedirectLBToLocalHost +class RedirectLBToLocalHostTest { @Autowired private RestTemplate restTemplate;