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
This commit is contained in:
Andy Wilkinson 2018-02-02 09:51:49 +00:00
parent 9a87424809
commit 00489c74ea
2 changed files with 43 additions and 6 deletions

View File

@ -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;
}
}
}

View File

@ -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>