Changes how redis tests get configuration from Testcontainers.
Moved from ApplicationContextInitializer to DynamicPropertyRegistry
This commit is contained in:
@@ -24,12 +24,10 @@ import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.util.TestPropertyValues;
|
||||
import org.springframework.cloud.gateway.route.RedisRouteDefinitionRepository;
|
||||
import org.springframework.context.ApplicationContextInitializer;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.DynamicPropertyRegistry;
|
||||
import org.springframework.test.context.DynamicPropertySource;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -37,8 +35,6 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
properties = "spring.cloud.gateway.redis-route-definition-repository.enabled=true")
|
||||
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
@Testcontainers
|
||||
@ContextConfiguration(
|
||||
initializers = GatewayRedisRouteDefinitionRepositoryEnabledByPropertyTests.RedisDbInitializer.class)
|
||||
public class GatewayRedisRouteDefinitionRepositoryEnabledByPropertyTests {
|
||||
|
||||
@Container
|
||||
@@ -52,19 +48,15 @@ public class GatewayRedisRouteDefinitionRepositoryEnabledByPropertyTests {
|
||||
redis.start();
|
||||
}
|
||||
|
||||
@DynamicPropertySource
|
||||
static void containerProperties(DynamicPropertyRegistry registry) {
|
||||
registry.add("spring.redis.host", redis::getContainerIpAddress);
|
||||
registry.add("spring.redis.port", redis::getFirstMappedPort);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void redisRouteDefinitionRepository() {
|
||||
assertThat(redisRouteDefinitionRepository).isNotNull();
|
||||
}
|
||||
|
||||
public static class RedisDbInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
|
||||
|
||||
@Override
|
||||
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
|
||||
TestPropertyValues values = TestPropertyValues.of("spring.redis.port=" + redis.getFirstMappedPort());
|
||||
values.applyTo(configurableApplicationContext);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@ import org.springframework.cloud.gateway.filter.ratelimit.RateLimiter.Response;
|
||||
import org.springframework.cloud.gateway.test.BaseWebClientTests;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.DynamicPropertyRegistry;
|
||||
import org.springframework.test.context.DynamicPropertySource;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
@@ -55,11 +57,17 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen
|
||||
public class RedisRateLimiterTests extends BaseWebClientTests {
|
||||
|
||||
@Container
|
||||
public GenericContainer redis = new GenericContainer<>("redis:5.0.9-alpine").withExposedPorts(6379);
|
||||
public static GenericContainer redis = new GenericContainer<>("redis:5.0.9-alpine").withExposedPorts(6379);
|
||||
|
||||
@Autowired
|
||||
private RedisRateLimiter rateLimiter;
|
||||
|
||||
@DynamicPropertySource
|
||||
static void containerProperties(DynamicPropertyRegistry registry) {
|
||||
registry.add("spring.redis.host", redis::getContainerIpAddress);
|
||||
registry.add("spring.redis.port", redis::getFirstMappedPort);
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
assumeThat("Ignore on Circle", System.getenv("CIRCLECI"), is(nullValue()));
|
||||
|
||||
@@ -33,18 +33,16 @@ 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.boot.test.util.TestPropertyValues;
|
||||
import org.springframework.cloud.gateway.filter.FilterDefinition;
|
||||
import org.springframework.cloud.gateway.filter.GatewayFilter;
|
||||
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
|
||||
import org.springframework.cloud.gateway.handler.predicate.AbstractRoutePredicateFactory;
|
||||
import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
|
||||
import org.springframework.context.ApplicationContextInitializer;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.DynamicPropertyRegistry;
|
||||
import org.springframework.test.context.DynamicPropertySource;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -52,11 +50,10 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
/**
|
||||
* @author Dennis Menge
|
||||
*/
|
||||
@SpringBootTest(properties = {"debug=true", "logging.level.org.springframework.cloud.gateway=trace"})
|
||||
@SpringBootTest(properties = { "debug=true", "logging.level.org.springframework.cloud.gateway=trace" })
|
||||
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
@ActiveProfiles("redis-route-repository")
|
||||
@Testcontainers
|
||||
@ContextConfiguration(initializers = RedisRouteDefinitionRepositoryTests.RedisDbInitializer.class)
|
||||
public class RedisRouteDefinitionRepositoryTests {
|
||||
|
||||
@Container
|
||||
@@ -70,9 +67,14 @@ public class RedisRouteDefinitionRepositoryTests {
|
||||
redis.start();
|
||||
}
|
||||
|
||||
@DynamicPropertySource
|
||||
static void containerProperties(DynamicPropertyRegistry registry) {
|
||||
registry.add("spring.redis.host", redis::getContainerIpAddress);
|
||||
registry.add("spring.redis.port", redis::getFirstMappedPort);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddRouteToRedis() {
|
||||
|
||||
RouteDefinition testRouteDefinition = defaultTestRoute();
|
||||
|
||||
redisRouteDefinitionRepository.save(Mono.just(testRouteDefinition)).block();
|
||||
@@ -173,14 +175,4 @@ public class RedisRouteDefinitionRepositoryTests {
|
||||
|
||||
}
|
||||
|
||||
public static class RedisDbInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
|
||||
|
||||
@Override
|
||||
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
|
||||
TestPropertyValues values = TestPropertyValues.of("spring.redis.port=" + redis.getFirstMappedPort());
|
||||
values.applyTo(configurableApplicationContext);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user