Add support to disable OQL Indexes created by Spring Session by default.
Resolves gh-46.
This commit is contained in:
@@ -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<? extends DataSerializer> 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(
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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.<String>getField(sessionRegionFactoryBean, "poolName")).isEqualTo("TestPool");
|
||||
assertThat(this.<RegionAttributes<Object, Session>>getField(sessionRegionFactoryBean,
|
||||
"regionAttributes")).isEqualTo(mockRegionAttributes);
|
||||
assertThat(this.<String>getField(sessionRegionFactoryBean, "regionName")).isEqualTo("TestRegion");
|
||||
assertThat(GemFireHttpSessionConfigurationTests.<String>getField(sessionRegionFactoryBean, "poolName")).isEqualTo("TestPool");
|
||||
assertThat(GemFireHttpSessionConfigurationTests.<RegionAttributes<Object, Session>>getField(sessionRegionFactoryBean, "regionAttributes")).isEqualTo(mockRegionAttributes);
|
||||
assertThat(GemFireHttpSessionConfigurationTests.<String>getField(sessionRegionFactoryBean, "regionName")).isEqualTo("TestRegion");
|
||||
assertThat(sessionRegionFactoryBean.getServerRegionShortcut()).isEqualTo(RegionShortcut.PARTITION_REDUNDANT);
|
||||
|
||||
verifyZeroInteractions(mockGemFireCache);
|
||||
verifyZeroInteractions(mockRegionAttributes);
|
||||
verifyNoInteractions(mockGemFireCache);
|
||||
verifyNoInteractions(mockRegionAttributes);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user