diff --git a/common/redis-common/src/test/java/org/springframework/cloud/fn/consumer/redis/RedisTestContainerSupport.java b/common/redis-common/src/test/java/org/springframework/cloud/fn/consumer/redis/RedisTestContainerSupport.java index 2cd2976e..8f12bba9 100644 --- a/common/redis-common/src/test/java/org/springframework/cloud/fn/consumer/redis/RedisTestContainerSupport.java +++ b/common/redis-common/src/test/java/org/springframework/cloud/fn/consumer/redis/RedisTestContainerSupport.java @@ -29,7 +29,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; */ @Testcontainers(disabledWithoutDocker = true) public interface RedisTestContainerSupport { - GenericContainer REDIS_CONTAINER = new GenericContainer<>("redis:7.0.2") + GenericContainer REDIS_CONTAINER = new GenericContainer<>("redis:7") .withExposedPorts(6379) .withStartupTimeout(Duration.ofSeconds(120)) .withStartupAttempts(3); diff --git a/function/aggregator-function/pom.xml b/function/aggregator-function/pom.xml index 9403407a..f72778fd 100644 --- a/function/aggregator-function/pom.xml +++ b/function/aggregator-function/pom.xml @@ -51,6 +51,13 @@ spring-boot-starter-data-redis runtime + + org.springframework.cloud.fn + redis-common + ${project.version} + test-jar + test + org.springframework.integration diff --git a/function/aggregator-function/src/test/java/org/springframework/cloud/fn/aggregator/RedisMessageStoreAggregatorTests.java b/function/aggregator-function/src/test/java/org/springframework/cloud/fn/aggregator/RedisMessageStoreAggregatorTests.java index 8091aaee..2a2af98c 100644 --- a/function/aggregator-function/src/test/java/org/springframework/cloud/fn/aggregator/RedisMessageStoreAggregatorTests.java +++ b/function/aggregator-function/src/test/java/org/springframework/cloud/fn/aggregator/RedisMessageStoreAggregatorTests.java @@ -19,15 +19,17 @@ package org.springframework.cloud.fn.aggregator; import java.time.Duration; import java.util.List; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import reactor.core.publisher.Flux; import reactor.test.StepVerifier; +import org.springframework.cloud.fn.consumer.redis.RedisTestContainerSupport; import org.springframework.integration.IntegrationMessageHeaderAccessor; import org.springframework.integration.redis.store.RedisMessageStore; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.TestPropertySource; import static org.assertj.core.api.Assertions.assertThat; @@ -36,35 +38,38 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Artem Bilan */ @TestPropertySource(properties = "aggregator.message-store-type=redis") -@Disabled("Needs real Redis Server to be run") // TODO add redis test container -public class RedisMessageStoreAggregatorTests extends AbstractAggregatorFunctionTests { +public class RedisMessageStoreAggregatorTests extends AbstractAggregatorFunctionTests implements RedisTestContainerSupport { + @DynamicPropertySource + static void redisProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.redis.url", RedisTestContainerSupport::getUri); + } @Test public void test() { Flux> input = - Flux.just(MessageBuilder.withPayload("2") - .setHeader(IntegrationMessageHeaderAccessor.CORRELATION_ID, "my_correlation") - .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, 2) - .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_SIZE, 2) - .build(), - MessageBuilder.withPayload("1") - .setHeader(IntegrationMessageHeaderAccessor.CORRELATION_ID, "my_correlation") - .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, 1) - .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_SIZE, 2) - .build()); + Flux.just(MessageBuilder.withPayload("2") + .setHeader(IntegrationMessageHeaderAccessor.CORRELATION_ID, "my_correlation") + .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, 2) + .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_SIZE, 2) + .build(), + MessageBuilder.withPayload("1") + .setHeader(IntegrationMessageHeaderAccessor.CORRELATION_ID, "my_correlation") + .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, 1) + .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_SIZE, 2) + .build()); Flux> output = this.aggregatorFunction.apply(input); output.as(StepVerifier::create) - .assertNext((message) -> - assertThat(message) - .extracting(Message::getPayload) - .isInstanceOf(List.class) - .asList() - .hasSize(2) - .contains("1", "2")) - .thenCancel() - .verify(Duration.ofSeconds(10)); + .assertNext((message) -> + assertThat(message) + .extracting(Message::getPayload) + .isInstanceOf(List.class) + .asList() + .hasSize(2) + .contains("1", "2")) + .thenCancel() + .verify(Duration.ofSeconds(10)); assertThat(this.messageGroupStore).isInstanceOf(RedisMessageStore.class);