package org.springframework.cloud.config.java; import org.junit.Test; import org.springframework.cloud.config.RedisConnectionFactoryCloudConfigTestHelper; import org.springframework.cloud.service.PooledServiceConnectorConfig; import org.springframework.cloud.service.PooledServiceConnectorConfig.PoolConfig; import org.springframework.cloud.service.ServiceInfo; import org.springframework.cloud.service.keyval.RedisConnectionFactoryConfig; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisConnectionFactory; import java.util.HashMap; import java.util.Map; /** * @author Ramnivas Laddad * @author Scott Frederick */ public class RedisConnectionFactoryJavaConfigTest extends AbstractServiceJavaConfigTest<RedisConnectionFactory> { public RedisConnectionFactoryJavaConfigTest() { super(RedisConnectionFactoryConfigWithId.class, RedisConnectionFactoryConfigWithoutId.class); } protected ServiceInfo createService(String id) { return createRedisService(id); } protected Class<RedisConnectionFactory> getConnectorType() { return RedisConnectionFactory.class; } @Test public void cloudRedisConnectionFactoryWithMaxPool() { ApplicationContext testContext = getTestApplicationContext(RedisConnectionFactoryConfigWithServiceConfig.class, createService("my-service")); RedisConnectionFactory connector = testContext.getBean("pool20Wait200", getConnectorType()); RedisConnectionFactoryCloudConfigTestHelper.assertPoolProperties(connector, 20, 0, 200); } @Test public void cloudRedisConnectionFactoryWithMinMaxPool() { ApplicationContext testContext = getTestApplicationContext(RedisConnectionFactoryConfigWithServiceConfig.class, createService("my-service")); RedisConnectionFactory connector = testContext.getBean("pool5_30Wait3000", getConnectorType()); RedisConnectionFactoryCloudConfigTestHelper.assertPoolProperties(connector, 30, 5, 3000); } @Test public void cloudRedisConnectionFactoryWithTimeout() { ApplicationContext testContext = getTestApplicationContext(RedisConnectionFactoryConfigWithServiceConfig.class, createService("my-service")); RedisConnectionFactory connector = testContext.getBean("timeout10", getConnectorType()); RedisConnectionFactoryCloudConfigTestHelper.assertConnectionProperties(connector, 10); } @Test public void cloudRedisConnectionFactoryWithWithMaxPoolAndTimeout() { ApplicationContext testContext = getTestApplicationContext(RedisConnectionFactoryConfigWithServiceConfig.class, createService("my-service")); RedisConnectionFactory connector = testContext.getBean("pool30Wait300_timeout20", getConnectorType()); RedisConnectionFactoryCloudConfigTestHelper.assertPoolProperties(connector, 30, 0, 300); RedisConnectionFactoryCloudConfigTestHelper.assertConnectionProperties(connector, 20); } } class RedisConnectionFactoryConfigWithId extends AbstractCloudConfig { @Bean(name = "my-service") public RedisConnectionFactory testRedisConnectionFactory() { return connectionFactory().redisConnectionFactory("my-service"); } } class RedisConnectionFactoryConfigWithoutId extends AbstractCloudConfig { @Bean(name = "my-service") public RedisConnectionFactory testRedisConnectionFactory() { return connectionFactory().redisConnectionFactory(); } } class RedisConnectionFactoryConfigWithServiceConfig extends AbstractCloudConfig { @Bean public RedisConnectionFactory pool20Wait200() { PoolConfig poolConfig = new PoolConfig(20, 200); PooledServiceConnectorConfig serviceConfig = new PooledServiceConnectorConfig(poolConfig); return connectionFactory().redisConnectionFactory("my-service", serviceConfig); } @Bean public RedisConnectionFactory pool5_30Wait3000() { PoolConfig poolConfig = new PoolConfig(5, 30, 3000); PooledServiceConnectorConfig serviceConfig = new RedisConnectionFactoryConfig(poolConfig); return connectionFactory().redisConnectionFactory("my-service", serviceConfig); } @Bean public RedisConnectionFactory timeout10() { Map<String, Object> properties = new HashMap<String, Object>(); properties.put("timeout", 10); RedisConnectionFactoryConfig serviceConfig = new RedisConnectionFactoryConfig(properties); return connectionFactory().redisConnectionFactory("my-service", serviceConfig); } @Bean public RedisConnectionFactory pool30Wait300_timeout20() { Map<String, Object> properties = new HashMap<String, Object>(); properties.put("timeout", 20); PoolConfig poolConfig = new PoolConfig(30, 300); RedisConnectionFactoryConfig serviceConfig = new RedisConnectionFactoryConfig(poolConfig, properties); return connectionFactory().redisConnectionFactory("my-service", serviceConfig); } }