Commit 00489c74 authored by Andy Wilkinson's avatar Andy Wilkinson

Start building against Spring Data Kay SR4 snapshots

The fix in Spring Data Redis for sentinel configuration means that
two Jedis sentinel tests now attempt to connect to a Sentinel. As a
result the tests fail. Running a Redis Sentinel in a Docker container
appears to be non-trivial. As an alternative, this commit updates the
tests to capture the JedisConnectionFactory prior to its
initialization (which is the failure trigger) and then assert that its
configuration is as expected.

See gh-11884
Closes gh-11855
parent 9a874248
......@@ -19,6 +19,8 @@ package org.springframework.boot.autoconfigure.data.redis;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.boot.testsupport.runner.classpath.ClassPathExclusions;
......@@ -160,8 +162,12 @@ public class RedisAutoConfigurationJedisTests {
this.runner
.withPropertyValues("spring.redis.sentinel.master:mymaster",
"spring.redis.sentinel.nodes:127.0.0.1:26379,127.0.0.1:26380")
.run((context) -> assertThat(context.getBean(JedisConnectionFactory.class)
.isRedisSentinelAware()).isTrue());
.withUserConfiguration(JedisConnectionFactoryCaptorConfiguration.class)
.run((context) -> {
assertThat(context).hasFailed();
assertThat(JedisConnectionFactoryCaptor.connectionFactory
.isRedisSentinelAware()).isTrue();
});
}
@Test
......@@ -170,9 +176,15 @@ public class RedisAutoConfigurationJedisTests {
.withPropertyValues("spring.redis.password=password",
"spring.redis.sentinel.master:mymaster",
"spring.redis.sentinel.nodes:127.0.0.1:26379,127.0.0.1:26380")
.run((context) -> assertThat(
context.getBean(JedisConnectionFactory.class).getPassword())
.isEqualTo("password"));
.withUserConfiguration(JedisConnectionFactoryCaptorConfiguration.class)
.run((context) -> {
assertThat(context).hasFailed();
assertThat(JedisConnectionFactoryCaptor.connectionFactory
.isRedisSentinelAware()).isTrue();
assertThat(
JedisConnectionFactoryCaptor.connectionFactory.getPassword())
.isEqualTo("password");
});
}
@Test
......@@ -194,4 +206,29 @@ public class RedisAutoConfigurationJedisTests {
}
@Configuration
static class JedisConnectionFactoryCaptorConfiguration {
@Bean
JedisConnectionFactoryCaptor jedisConnectionFactoryCaptor() {
return new JedisConnectionFactoryCaptor();
}
}
static class JedisConnectionFactoryCaptor implements BeanPostProcessor {
static JedisConnectionFactory connectionFactory;
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
if (bean instanceof JedisConnectionFactory) {
connectionFactory = (JedisConnectionFactory) bean;
}
return bean;
}
}
}
......@@ -144,7 +144,7 @@
<spring-amqp.version>2.0.2.RELEASE</spring-amqp.version>
<spring-batch.version>4.0.0.RELEASE</spring-batch.version>
<spring-cloud-connectors.version>2.0.1.RELEASE</spring-cloud-connectors.version>
<spring-data-releasetrain.version>Kay-SR3</spring-data-releasetrain.version>
<spring-data-releasetrain.version>Kay-BUILD-SNAPSHOT</spring-data-releasetrain.version>
<spring-hateoas.version>0.24.0.RELEASE</spring-hateoas.version>
<spring-integration.version>5.0.1.RELEASE</spring-integration.version>
<spring-kafka.version>2.1.2.RELEASE</spring-kafka.version>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment