Add test case testing the dynamic configuration of an overloaded SpringSessionGemFireConfigurer.

This commit is contained in:
John Blum
2018-08-10 19:59:48 -07:00
parent 9a2f149aec
commit 8a6217cf18

View File

@@ -27,9 +27,13 @@ import org.junit.Test;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.env.PropertySource;
import org.springframework.data.gemfire.config.annotation.ClientCacheApplication;
import org.springframework.data.gemfire.tests.mock.annotation.EnableGemFireMockObjects;
@@ -59,7 +63,7 @@ public class ConfigurerBasedGemFireHttpSessionConfigurationIntegrationTests {
private ConfigurableApplicationContext applicationContext;
@After
public void tearDow() {
public void tearDown() {
Optional.ofNullable(this.applicationContext).ifPresent(ConfigurableApplicationContext::close);
}
@@ -107,6 +111,37 @@ public class ConfigurerBasedGemFireHttpSessionConfigurationIntegrationTests {
assertThat(sessionConfiguration.getSessionSerializerBeanName()).isEqualTo("SessionPdxSerializer");
}
@Test
public void usesPrimarySpringSessionGemFireConfigurerWhenPresent() {
MockPropertySource testPropertySource = new MockPropertySource("TestProperties")
.withProperty("test.cache.client.region.shortcut", ClientRegionShortcut.CACHING_PROXY.name())
.withProperty("test.cache.client.pool.name", "Car")
.withProperty("test.session.expiration.max-inactive-interval-seconds", "300")
.withProperty("test.session.region.name", "TestSessionRegionName")
.withProperty("spring.session.data.gemfire.cache.client.region.shortcut", ClientRegionShortcut.LOCAL_PERSISTENT.name())
.withProperty("spring.session.data.gemfire.cache.server.region.shortcut", RegionShortcut.REPLICATE_PERSISTENT_OVERFLOW.name())
.withProperty("spring.session.data.gemfire.session.attributes.indexable", "firstName, lastName")
.withProperty("spring.session.data.gemfire.session.expiration.max-inactive-interval-seconds", "120")
.withProperty("spring.session.data.gemfire.session.region.name", "PropertyRegionName");
//.withProperty("spring.session.data.gemfire.session.serializer.bean-name", "MockSessionSerializer");
this.applicationContext = newApplicationContext(testPropertySource,
TestConfiguration.class, TestSpringSessionGemFireConfigurerConfiguration.class);
GemFireHttpSessionConfiguration sessionConfiguration =
this.applicationContext.getBean(GemFireHttpSessionConfiguration.class);
assertThat(sessionConfiguration).isNotNull();
assertThat(sessionConfiguration.getClientRegionShortcut()).isEqualTo(ClientRegionShortcut.CACHING_PROXY);
assertThat(sessionConfiguration.getIndexableSessionAttributes()).isEmpty();
assertThat(sessionConfiguration.getMaxInactiveIntervalInSeconds()).isEqualTo(300);
assertThat(sessionConfiguration.getPoolName()).isEqualTo("Car");
assertThat(sessionConfiguration.getServerRegionShortcut()).isEqualTo(RegionShortcut.PARTITION_PERSISTENT);
assertThat(sessionConfiguration.getSessionRegionName()).isEqualTo("TestSessionRegionName");
assertThat(sessionConfiguration.getSessionSerializerBeanName()).isEqualTo("SessionPdxSerializer");
}
@Test
public void usesSpringSessionGemFireConfigurerWhenPresent() {
@@ -175,4 +210,57 @@ public class ConfigurerBasedGemFireHttpSessionConfigurationIntegrationTests {
};
}
}
@Configuration
static class TestSpringSessionGemFireConfigurerConfiguration {
//@Value("${test.cache.client.region.shortcut:PROXY}")
//private ClientRegionShortcut clientRegionShortcut;
//@Value("${test.session.expiration.max-inactive-interval-seconds:600}")
//private int maxInactiveIntervalInSeconds;
@Bean
static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
@Primary
SpringSessionGemFireConfigurer primarySpringSessionGemFireConfigurer(
@Value("${test.cache.client.pool.name:geodePool}") String poolName,
@Value("${test.cache.client.region.shortcut:PROXY}") ClientRegionShortcut clientRegionShortcut,
@Value("${test.cache.server.region.shortcut:PARTITION_PERSISTENT}") RegionShortcut serverRegionShortcut,
@Value("${test.session.expiration.max-inactive-interval-seconds:600}") int maxInactiveIntervalInSeconds,
@Value("${test.session.region.name:MockSessionRegionName}") String regionName) {
return new SpringSessionGemFireConfigurer() {
@Override
public ClientRegionShortcut getClientRegionShortcut() {
return clientRegionShortcut;
}
@Override
public int getMaxInactiveIntervalInSeconds() {
return maxInactiveIntervalInSeconds;
}
@Override
public String getPoolName() {
return poolName;
}
@Override
public String getRegionName() {
return regionName;
}
@Override
public RegionShortcut getServerRegionShortcut() {
return serverRegionShortcut;
}
};
}
}
}