diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfigurationIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfigurationIntegrationTests.java index 52a03ac..3940c49 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfigurationIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfigurationIntegrationTests.java @@ -27,15 +27,21 @@ import org.junit.Test; import org.apache.geode.DataSerializer; import org.apache.geode.cache.GemFireCache; +import org.apache.geode.cache.Region; import org.apache.geode.cache.RegionShortcut; import org.apache.geode.cache.client.ClientRegionShortcut; +import org.apache.geode.cache.query.Index; import org.apache.geode.internal.InternalDataSerializer; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.data.gemfire.GemfireTemplate; import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; import org.springframework.data.gemfire.tests.integration.SpringApplicationContextIntegrationTestsSupport; import org.springframework.data.gemfire.tests.mock.annotation.EnableGemFireMockObjects; +import org.springframework.session.SessionRepository; +import org.springframework.session.data.gemfire.GemFireOperationsSessionRepository; import org.springframework.session.data.gemfire.expiration.SessionExpirationPolicy; import org.springframework.session.data.gemfire.serialization.SessionSerializer; import org.springframework.session.data.gemfire.serialization.data.AbstractDataSerializableSessionSerializer; @@ -43,10 +49,13 @@ import org.springframework.session.data.gemfire.serialization.data.provider.Data import org.springframework.session.data.gemfire.serialization.pdx.support.PdxSerializerSessionSerializerAdapter; /** - * The GemFireHttpSessionConfigurationIntegrationTests class... + * Integration Tests for {@link GemFireHttpSessionConfiguration}. * * @author John Blum - * @since 1.0.0 + * @see org.junit.Test + * @see org.mockito.Mockito + * @see org.springframework.session.data.gemfire.config.annotation.web.http.GemFireHttpSessionConfiguration + * @since 1.1.0 */ @SuppressWarnings("unused") public class GemFireHttpSessionConfigurationIntegrationTests extends SpringApplicationContextIntegrationTestsSupport { @@ -64,6 +73,62 @@ public class GemFireHttpSessionConfigurationIntegrationTests extends SpringAppli .orElse(null)).isNotNull(); } + @Test + public void basicSpringSessionGemFireConfigurationIsCorrect() { + + newApplicationContext(BasicSpringSessionGemFireConfiguration.class); + + Region sessionsRegion = + getApplicationContext().getBean(GemFireHttpSessionConfiguration.DEFAULT_SESSION_REGION_NAME, Region.class); + + Index principleNameIndex = getApplicationContext().getBean("principalNameIndex", Index.class); + + GemfireTemplate sessionsRegionTemplate = + getApplicationContext().getBean("sessionRegionTemplate", GemfireTemplate.class); + + assertThat(sessionsRegion).isNotNull(); + assertThat(sessionsRegion.getName()).isEqualTo(GemFireHttpSessionConfiguration.DEFAULT_SESSION_REGION_NAME); + assertThat(principleNameIndex).isNotNull(); + assertThat(principleNameIndex.getName()).isEqualTo("principalNameIndex"); + assertThat(principleNameIndex.getRegion()).isEqualTo(sessionsRegion); + assertThat(getApplicationContext().getBean(SessionRepository.class)).isInstanceOf(GemFireOperationsSessionRepository.class); + assertThat(sessionsRegionTemplate).isNotNull(); + assertThat(sessionsRegionTemplate.getRegion()).isEqualTo(sessionsRegion); + } + + @Test + public void basicSpringSessionGemFireConfigurationWithIndexesDisableIsCorrect() { + + try { + + System.setProperty("spring.profiles.active", "disable-spring-session-data-gemfire-indexes"); + + assertThat(System.getProperty("spring.profiles.active")).contains("disable-spring-session-data-gemfire-indexes"); + + ConfigurableApplicationContext applicationContext = + newApplicationContext(BasicSpringSessionGemFireConfiguration.class); + + assertThat(applicationContext).isNotNull(); + assertThat(applicationContext.getEnvironment().getActiveProfiles()).contains("disable-spring-session-data-gemfire-indexes"); + + Region sessionsRegion = + getApplicationContext().getBean(GemFireHttpSessionConfiguration.DEFAULT_SESSION_REGION_NAME, Region.class); + + GemfireTemplate sessionsRegionTemplate = + getApplicationContext().getBean("sessionRegionTemplate", GemfireTemplate.class); + + assertThat(sessionsRegion).isNotNull(); + assertThat(sessionsRegion.getName()).isEqualTo(GemFireHttpSessionConfiguration.DEFAULT_SESSION_REGION_NAME); + assertThat(getApplicationContext().containsBean("principalNameIndex")).isFalse(); + assertThat(getApplicationContext().getBean(SessionRepository.class)).isInstanceOf(GemFireOperationsSessionRepository.class); + assertThat(sessionsRegionTemplate).isNotNull(); + assertThat(sessionsRegionTemplate.getRegion()).isEqualTo(sessionsRegion); + } + finally { + System.clearProperty("spring.profiles.active"); + } + } + private void testUsesDataSerialization(Class expectedDataSerializerType) { GemFireHttpSessionConfiguration configuration = @@ -147,6 +212,11 @@ public class GemFireHttpSessionConfigurationIntegrationTests extends SpringAppli assertThat(properties.sessionSerializerBeanName()).isEqualTo("MockSessionSerializer"); } + @ClientCacheApplication + @EnableGemFireMockObjects + @EnableGemFireHttpSession(clientRegionShortcut = ClientRegionShortcut.LOCAL, poolName = "DEFAULT") + static class BasicSpringSessionGemFireConfiguration { } + @ClientCacheApplication @EnableGemFireMockObjects @EnableGemFireHttpSession( diff --git a/spring-session-data-geode/src/main/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfiguration.java b/spring-session-data-geode/src/main/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfiguration.java index 011b9b4..0f8fc8f 100644 --- a/spring-session-data-geode/src/main/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfiguration.java +++ b/spring-session-data-geode/src/main/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfiguration.java @@ -55,6 +55,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.ImportAware; +import org.springframework.context.annotation.Profile; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.Environment; @@ -1172,6 +1173,7 @@ public class GemFireHttpSessionConfiguration extends AbstractGemFireHttpSessionC */ @Bean @DependsOn(DEFAULT_SESSION_REGION_NAME) + @Profile("!disable-spring-session-data-gemfire-indexes") public IndexFactoryBean principalNameIndex(GemFireCache gemfireCache) { IndexFactoryBean principalNameIndex = new IndexFactoryBean(); @@ -1198,6 +1200,7 @@ public class GemFireHttpSessionConfiguration extends AbstractGemFireHttpSessionC */ @Bean @DependsOn(DEFAULT_SESSION_REGION_NAME) + @Profile("!disable-spring-session-data-gemfire-indexes") public SessionAttributesIndexFactoryBean sessionAttributesIndex(GemFireCache gemfireCache) { SessionAttributesIndexFactoryBean sessionAttributesIndex = new SessionAttributesIndexFactoryBean(); diff --git a/spring-session-data-geode/src/test/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfigurationTests.java b/spring-session-data-geode/src/test/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfigurationTests.java index 4be9425..52c7a12 100644 --- a/spring-session-data-geode/src/test/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfigurationTests.java +++ b/spring-session-data-geode/src/test/java/org/springframework/session/data/gemfire/config/annotation/web/http/GemFireHttpSessionConfigurationTests.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.session.data.gemfire.config.annotation.web.http; import static org.assertj.core.api.Assertions.assertThat; @@ -29,7 +28,7 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; import java.lang.reflect.Field; @@ -72,10 +71,9 @@ import org.springframework.session.data.gemfire.support.IsDirtyPredicate; import org.springframework.util.ReflectionUtils; /** - * Unit tests for {@link GemFireHttpSessionConfiguration} class. + * Unit Tests for {@link GemFireHttpSessionConfiguration} class. * * @author John Blum - * @since 1.1.0 * @see org.junit.Test * @see org.mockito.Mockito * @see org.apache.geode.cache.Cache @@ -95,6 +93,7 @@ import org.springframework.util.ReflectionUtils; * @see org.springframework.session.Session * @see org.springframework.session.data.gemfire.GemFireOperationsSessionRepository * @see org.springframework.session.data.gemfire.config.annotation.web.http.GemFireHttpSessionConfiguration + * @since 1.1.0 */ public class GemFireHttpSessionConfigurationTests { @@ -652,7 +651,7 @@ public class GemFireHttpSessionConfigurationTests { verify(this.gemfireConfiguration, never()).getServerRegionShortcut(); verify(this.gemfireConfiguration, never()).getSessionExpirationPolicyBeanName(); verify(this.gemfireConfiguration, never()).getSessionSerializerBeanName(); - verifyZeroInteractions(mockEnvironment); + verifyNoInteractions(mockEnvironment); } @Test @@ -674,7 +673,7 @@ public class GemFireHttpSessionConfigurationTests { verify(this.gemfireConfiguration, never()).getServerRegionShortcut(); verify(this.gemfireConfiguration, never()).getSessionExpirationPolicyBeanName(); verify(this.gemfireConfiguration, never()).getSessionSerializerBeanName(); - verifyZeroInteractions(mockEnvironment); + verifyNoInteractions(mockEnvironment); } @Test @@ -762,14 +761,13 @@ public class GemFireHttpSessionConfigurationTests { assertThat(sessionRegionFactoryBean).isNotNull(); assertThat(sessionRegionFactoryBean.getClientRegionShortcut()).isEqualTo(ClientRegionShortcut.CACHING_PROXY); assertThat(sessionRegionFactoryBean.getCache()).isEqualTo(mockGemFireCache); - assertThat(this.getField(sessionRegionFactoryBean, "poolName")).isEqualTo("TestPool"); - assertThat(this.>getField(sessionRegionFactoryBean, - "regionAttributes")).isEqualTo(mockRegionAttributes); - assertThat(this.getField(sessionRegionFactoryBean, "regionName")).isEqualTo("TestRegion"); + assertThat(GemFireHttpSessionConfigurationTests.getField(sessionRegionFactoryBean, "poolName")).isEqualTo("TestPool"); + assertThat(GemFireHttpSessionConfigurationTests.>getField(sessionRegionFactoryBean, "regionAttributes")).isEqualTo(mockRegionAttributes); + assertThat(GemFireHttpSessionConfigurationTests.getField(sessionRegionFactoryBean, "regionName")).isEqualTo("TestRegion"); assertThat(sessionRegionFactoryBean.getServerRegionShortcut()).isEqualTo(RegionShortcut.PARTITION_REDUNDANT); - verifyZeroInteractions(mockGemFireCache); - verifyZeroInteractions(mockRegionAttributes); + verifyNoInteractions(mockGemFireCache); + verifyNoInteractions(mockRegionAttributes); } @Test