DATAGEODE-107 - Properly enable statistics when Annotation-based Expiration Policies are enabled with EnableExpiration.

This commit is contained in:
John Blum
2018-05-16 19:45:21 -07:00
parent 5d7da850c8
commit 95169d59a8
26 changed files with 1147 additions and 535 deletions

View File

@@ -72,6 +72,7 @@ public class SubRegionIntegrationTest {
@Test
public void testGemFireAccountsSubRegionCreation() {
assertNotNull("The GemFire Cache was not properly initialized!", cache);
Region customers = cache.getRegion("Customers");
@@ -93,6 +94,7 @@ public class SubRegionIntegrationTest {
@Test
public void testSpringSubRegionConfiguration() {
assertNotNull("The /Customers/Accounts SubRegion was not properly initialized!", accounts);
assertEquals("Accounts", accounts.getName());
assertEquals("/Customers/Accounts", accounts.getFullPath());

View File

@@ -160,7 +160,7 @@ public class ClientRegionFactoryBeanTest {
verify(mockClientRegionFactory, times(1)).setPoolName(eq("TestPoolTwo"));
verify(mockClientRegionFactory, times(1)).setRegionIdleTimeout(any(ExpirationAttributes.class));
verify(mockClientRegionFactory, times(1)).setRegionTimeToLive(any(ExpirationAttributes.class));
verify(mockClientRegionFactory, times(1)).setStatisticsEnabled(eq(true));
verify(mockClientRegionFactory, times(2)).setStatisticsEnabled(eq(true));
verify(mockClientRegionFactory, times(1)).setValueConstraint(eq(Number.class));
verify(mockClientRegionFactory, times(1)).create(eq("TestRegion"));
verify(mockRegion, never()).loadSnapshot(any(InputStream.class));

View File

@@ -0,0 +1,105 @@
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.gemfire.config.annotation;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.junit.After;
import org.junit.Test;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.gemfire.eviction.EvictionActionType;
import org.springframework.data.gemfire.eviction.EvictionPolicyType;
import org.springframework.data.gemfire.test.model.Person;
/**
* The EnableEvictionConfigurationIntegrationTests class...
*
* @author John Blum
* @since 1.0.0
*/
public class EnableEvictionConfigurationIntegrationTests {
private static final String GEMFIRE_LOG_LEVEL = "error";
private ConfigurableApplicationContext applicationContext;
@After
public void tearDown() {
Optional.ofNullable(this.applicationContext).ifPresent(ConfigurableApplicationContext::close);
}
private ConfigurableApplicationContext newApplicationContext(Class<?>... annotatedClasses) {
this.applicationContext = new AnnotationConfigApplicationContext(annotatedClasses);
return this.applicationContext;
}
@SuppressWarnings("unchecked")
private <K, V> Region<K, V> getRegion(ConfigurableApplicationContext applicationContext, String beanName) {
return applicationContext.getBean(beanName, Region.class);
}
private void assertRegionEvictionConfiguration(ConfigurableApplicationContext applicationContext,
String regionBeanName, EvictionActionType expectedEvictionActionType, int expectedEvictionMaximum) {
Region<?, ?> region = getRegion(applicationContext, regionBeanName);
assertThat(region).isNotNull();
assertThat(region.getName()).isEqualTo(regionBeanName);
assertThat(region.getAttributes()).isNotNull();
assertThat(region.getAttributes().getDataPolicy()).isEqualTo(DataPolicy.NORMAL);
assertThat(region.getAttributes().getEvictionAttributes()).isNotNull();
assertThat(region.getAttributes().getEvictionAttributes().getAction())
.isEqualTo(expectedEvictionActionType.getEvictionAction());
assertThat(region.getAttributes().getEvictionAttributes().getAlgorithm())
.isEqualTo(EvictionPolicyType.ENTRY_COUNT.getEvictionAlgorithm());
assertThat(region.getAttributes().getEvictionAttributes().getMaximum()).isEqualTo(expectedEvictionMaximum);
}
@Test
public void assertClientCacheRegionEvictionPolicyIsCorrect() {
assertRegionEvictionConfiguration(newApplicationContext(ClientCacheRegionEvictionConfiguration.class),
"People", EvictionActionType.LOCAL_DESTROY, 100);
}
@Test
public void assertPeerCacheRegionEvictionPolicyIsCorrect() {
assertRegionEvictionConfiguration(newApplicationContext(PeerCacheRegionEvictionConfiguration.class),
"People", EvictionActionType.OVERFLOW_TO_DISK, 10000);
}
@ClientCacheApplication(name = "EnableEvictionConfigurationIntegrationTests", logLevel = GEMFIRE_LOG_LEVEL)
@EnableEntityDefinedRegions(basePackageClasses = Person.class, clientRegionShortcut = ClientRegionShortcut.LOCAL)
@EnableEviction(policies = @EnableEviction.EvictionPolicy(regionNames = "People", maximum = 100))
static class ClientCacheRegionEvictionConfiguration { }
@PeerCacheApplication(name = "EnableEvictionConfigurationIntegrationTests", logLevel = GEMFIRE_LOG_LEVEL)
@EnableEntityDefinedRegions(basePackageClasses = Person.class, serverRegionShortcut = RegionShortcut.LOCAL)
@EnableEviction(policies = @EnableEviction.EvictionPolicy(regionNames = "People",
action = EvictionActionType.OVERFLOW_TO_DISK, maximum = 10000))
static class PeerCacheRegionEvictionConfiguration { }
}

View File

@@ -0,0 +1,99 @@
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.gemfire.config.annotation;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.junit.After;
import org.junit.Test;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.gemfire.expiration.AnnotationBasedExpiration;
import org.springframework.data.gemfire.test.model.Person;
/**
* The EnableExpirationConfigurationIntegrationTests class...
*
* @author John Blum
* @since 1.0.0
*/
public class EnableExpirationConfigurationIntegrationTests {
private static final String GEMFIRE_LOG_LEVEL = "error";
private ConfigurableApplicationContext applicationContext;
@After
public void tearDown() {
Optional.ofNullable(this.applicationContext).ifPresent(ConfigurableApplicationContext::close);
}
private ConfigurableApplicationContext newApplicationContext(Class<?>... annotatedClasses) {
this.applicationContext = new AnnotationConfigApplicationContext(annotatedClasses);
return this.applicationContext;
}
@SuppressWarnings("unchecked")
private <K, V> Region<K, V> getRegion(ConfigurableApplicationContext applicationContext, String beanName) {
return applicationContext.getBean(beanName, Region.class);
}
private void assertRegionExpirationConfiguration(ConfigurableApplicationContext applicationContext,
String regionBeanName) {
Region<?, ?> region = getRegion(applicationContext, regionBeanName);
assertThat(region).isNotNull();
assertThat(region.getName()).isEqualTo(regionBeanName);
assertThat(region.getAttributes()).isNotNull();
assertThat(region.getAttributes().getDataPolicy()).isEqualTo(DataPolicy.NORMAL);
assertThat(region.getAttributes().getStatisticsEnabled()).isTrue();
assertThat(region.getAttributes().getCustomEntryIdleTimeout())
.isInstanceOf(AnnotationBasedExpiration.class);
assertThat(region.getAttributes().getCustomEntryTimeToLive())
.isInstanceOf(AnnotationBasedExpiration.class);
}
@Test
public void assertClientCacheRegionExpirationPoliciesAreCorrect() {
assertRegionExpirationConfiguration(newApplicationContext(ClientCacheRegionExpirationConfiguration.class),
"People");
}
@Test
public void assertPeerCacheRegionExpirationPoliciesAreCorrect() {
assertRegionExpirationConfiguration(newApplicationContext(PeerCacheRegionExpirationConfiguration.class),
"People");
}
@ClientCacheApplication(name = "EnableExpirationConfigurationIntegrationTests", logLevel = GEMFIRE_LOG_LEVEL)
@EnableEntityDefinedRegions(basePackageClasses = Person.class, clientRegionShortcut = ClientRegionShortcut.LOCAL)
@EnableExpiration
static class ClientCacheRegionExpirationConfiguration { }
@PeerCacheApplication(name = "EnableExpirationConfigurationIntegrationTests", logLevel = GEMFIRE_LOG_LEVEL)
@EnableEntityDefinedRegions(basePackageClasses = Person.class, serverRegionShortcut = RegionShortcut.LOCAL)
@EnableExpiration
static class PeerCacheRegionExpirationConfiguration { }
}

View File

@@ -18,30 +18,26 @@
package org.springframework.data.gemfire.config.annotation;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.springframework.data.gemfire.config.annotation.EnableExpiration.ExpirationPolicy;
import static org.springframework.data.gemfire.config.annotation.EnableExpiration.ExpirationType;
import java.util.concurrent.atomic.AtomicReference;
import java.util.Optional;
import org.apache.geode.cache.AttributesMutator;
import org.apache.geode.cache.CustomExpiry;
import org.apache.geode.cache.ExpirationAction;
import org.apache.geode.cache.ExpirationAttributes;
import org.apache.geode.cache.GemFireCache;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
import org.junit.After;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
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.data.gemfire.LocalRegionFactoryBean;
import org.springframework.data.gemfire.expiration.ExpirationActionType;
import org.springframework.data.gemfire.test.mock.annotation.EnableGemFireMockObjects;
import org.springframework.data.gemfire.util.ArrayUtils;
/**
@@ -64,42 +60,43 @@ public class EnableExpirationConfigurationUnitTests {
@After
public void tearDown() {
if (applicationContext != null) {
applicationContext.close();
}
Optional.ofNullable(this.applicationContext).ifPresent(ConfigurableApplicationContext::close);
}
protected <K, V> void assertRegionExpiration(ExpirationAttributes expectedExpirationAttributes,
@SuppressWarnings({ "unchecked", "unused" })
private <K, V> void assertRegionExpiration(ExpirationAttributes expectedExpirationAttributes,
Region<K, V> region, V... applicationDomainObjects) {
assertIdleTimeoutExpiration(expectedExpirationAttributes, region, applicationDomainObjects);
assertTimeToLiveExpiration(expectedExpirationAttributes, region, applicationDomainObjects);
}
protected <K, V> void assertIdleTimeoutExpiration(ExpirationAttributes expectedExpirationAttributes,
@SuppressWarnings("unchecked")
private <K, V> void assertIdleTimeoutExpiration(ExpirationAttributes expectedExpirationAttributes,
Region<K, V> region, V... applicationDomainObjects) {
assertExpiration(expectedExpirationAttributes, region.getAttributes().getCustomEntryIdleTimeout(),
applicationDomainObjects);
}
protected <K, V> void assertNoIdleTimeoutExpiration(Region<K, V> region) {
private <K, V> void assertNoIdleTimeoutExpiration(Region<K, V> region) {
assertThat(region.getAttributes().getCustomEntryIdleTimeout()).isNull();
}
protected <K, V> void assertTimeToLiveExpiration(ExpirationAttributes expectedExpirationAttributes,
@SuppressWarnings("unchecked")
private <K, V> void assertTimeToLiveExpiration(ExpirationAttributes expectedExpirationAttributes,
Region<K, V> region, V... applicationDomainObjects) {
assertExpiration(expectedExpirationAttributes, region.getAttributes().getCustomEntryTimeToLive(),
applicationDomainObjects);
}
protected <K, V> void assertNoTimeToLiveExpiration(Region<K, V> region) {
private <K, V> void assertNoTimeToLiveExpiration(Region<K, V> region) {
assertThat(region.getAttributes().getCustomEntryTimeToLive()).isNull();
}
@SuppressWarnings("unchecked")
protected <K, V> void assertExpiration(ExpirationAttributes expectedExpirationAttributes,
private <K, V> void assertExpiration(ExpirationAttributes expectedExpirationAttributes,
CustomExpiry<K, V> customExpiry, V... applicationDomainObjects) {
Region.Entry<K, V> regionEntry = mockRegionEntry(ArrayUtils.getFirst(applicationDomainObjects));
@@ -108,32 +105,34 @@ public class EnableExpirationConfigurationUnitTests {
}
@SuppressWarnings({ "unchecked", "unused" })
protected <K, V> void assertExpiration(ExpirationAttributes actualExpirationAttributes,
private <K, V> void assertExpiration(ExpirationAttributes actualExpirationAttributes,
ExpirationAttributes expectedExpirationAttributes) {
assertThat(actualExpirationAttributes).isEqualTo(expectedExpirationAttributes);
}
@SuppressWarnings("unchecked")
protected <K, V> Region<K, V> getRegion(String beanName) {
return applicationContext.getBean(beanName, Region.class);
private <K, V> Region<K, V> getRegion(String beanName) {
return this.applicationContext.getBean(beanName, Region.class);
}
protected AnnotationConfigApplicationContext newApplicationContext(Class<?>... annotatedClasses) {
private AnnotationConfigApplicationContext newApplicationContext(Class<?>... annotatedClasses) {
return new AnnotationConfigApplicationContext(annotatedClasses);
}
protected ExpirationAttributes newExpirationAttributes(int timeout, ExpirationActionType action) {
private ExpirationAttributes newExpirationAttributes(int timeout, ExpirationActionType action) {
return newExpirationAttributes(timeout, action.getExpirationAction());
}
protected ExpirationAttributes newExpirationAttributes(int timeout, ExpirationAction action) {
private ExpirationAttributes newExpirationAttributes(int timeout, ExpirationAction action) {
return new ExpirationAttributes(timeout, action);
}
@Test
@SuppressWarnings("unchecked")
public void usesDefaultExpirationPolicyConfiguration() {
applicationContext = newApplicationContext(DefaultExpirationPolicyConfiguration.class);
this.applicationContext = newApplicationContext(DefaultExpirationPolicyConfiguration.class);
ExpirationAttributes expectedExpiration = newExpirationAttributes(0, ExpirationActionType.INVALIDATE);
@@ -142,14 +141,15 @@ public class EnableExpirationConfigurationUnitTests {
assertIdleTimeoutExpiration(expectedExpiration, one);
assertIdleTimeoutExpiration(expectedExpiration, two);
assertNoTimeToLiveExpiration(one);
assertNoTimeToLiveExpiration(two);
assertTimeToLiveExpiration(expectedExpiration, one);
assertTimeToLiveExpiration(expectedExpiration, two);
}
@Test
public void usesCustomExpirationPolicyConfiguration() {
applicationContext = newApplicationContext(CustomExpirationPolicyConfiguration.class);
@SuppressWarnings("unchecked")
public void usesCustomIdleTimeoutExpirationPolicyConfiguration() {
this.applicationContext = newApplicationContext(CustomIdleTimeoutExpirationPolicyConfiguration.class);
ExpirationAttributes expectedExpiration = newExpirationAttributes(300, ExpirationActionType.LOCAL_DESTROY);
@@ -164,8 +164,28 @@ public class EnableExpirationConfigurationUnitTests {
}
@Test
@SuppressWarnings("unchecked")
public void usesCustomTimeToLiveExpirationPolicyConfiguration() {
this.applicationContext = newApplicationContext(CustomTimeToLiveTimeoutExpirationPolicyConfiguration.class);
ExpirationAttributes expectedExpiration = newExpirationAttributes(900, ExpirationActionType.LOCAL_INVALIDATE);
Region one = getRegion("One");
Region two = getRegion("Two");
assertTimeToLiveExpiration(expectedExpiration, one);
assertTimeToLiveExpiration(expectedExpiration, two);
assertNoIdleTimeoutExpiration(one);
assertNoIdleTimeoutExpiration(two);
}
@Test
@SuppressWarnings("unchecked")
public void usesRegionSpecificExpirationPolicyConfiguration() {
applicationContext = newApplicationContext(RegionSpecificExpirationPolicyConfiguration.class);
this.applicationContext = newApplicationContext(RegionSpecificExpirationPolicyConfiguration.class);
ExpirationAttributes expectedIdleTimeout = newExpirationAttributes(180, ExpirationActionType.INVALIDATE);
ExpirationAttributes expectedTimeToLive = newExpirationAttributes(360, ExpirationActionType.DESTROY);
@@ -181,10 +201,12 @@ public class EnableExpirationConfigurationUnitTests {
}
@Test
@SuppressWarnings("unchecked")
public void usesMixedExpirationPolicyConfiguration() {
applicationContext = newApplicationContext(MixedExpirationPolicyConfiguration.class);
ExpirationAttributes expectedIdleTimeout = newExpirationAttributes(120, ExpirationActionType.LOCAL_INVALIDATE);
this.applicationContext = newApplicationContext(MixedExpirationPolicyConfiguration.class);
ExpirationAttributes expectedIdleTimeout = newExpirationAttributes(60, ExpirationActionType.LOCAL_INVALIDATE);
ExpirationAttributes expectedTimeToLive = newExpirationAttributes(600, ExpirationActionType.DESTROY);
Region one = getRegion("One");
@@ -197,98 +219,66 @@ public class EnableExpirationConfigurationUnitTests {
assertTimeToLiveExpiration(expectedTimeToLive, two);
}
@SuppressWarnings("unchecked")
static <K, V> Region<K, V> mockRegion(String name) {
Region<K, V> mockRegion = mock(Region.class);
when(mockRegion.getName()).thenReturn(name);
when(mockRegion.getFullPath()).thenReturn(String.format("%1$s%2$s", Region.SEPARATOR, name));
final AtomicReference<CustomExpiry<K, V>> entryIdleTimeout = new AtomicReference<CustomExpiry<K, V>>(null);
final AtomicReference<CustomExpiry<K, V>> entryTimeToLive = new AtomicReference<CustomExpiry<K, V>>(null);
AttributesMutator<K, V> mockAttributesMutator = mock(AttributesMutator.class);
when(mockRegion.getAttributesMutator()).thenReturn(mockAttributesMutator);
doAnswer(new Answer<CustomExpiry<K, V>>() {
@Override
public CustomExpiry<K, V> answer(InvocationOnMock invocation) throws Throwable {
CustomExpiry<K, V> customExpiry = invocation.getArgument(0);
entryIdleTimeout.set(customExpiry);
return customExpiry;
}
}).when(mockAttributesMutator).setCustomEntryIdleTimeout(any(CustomExpiry.class));
doAnswer(new Answer<CustomExpiry<K, V>>() {
@Override
public CustomExpiry<K, V> answer(InvocationOnMock invocation) throws Throwable {
CustomExpiry<K, V> customExpiry = invocation.getArgument(0);
entryTimeToLive.set(customExpiry);
return customExpiry;
}
}).when(mockAttributesMutator).setCustomEntryTimeToLive(any(CustomExpiry.class));
RegionAttributes<K, V> mockRegionAttributes = mock(RegionAttributes.class);
when(mockRegion.getAttributes()).thenReturn(mockRegionAttributes);
when(mockRegionAttributes.getCustomEntryIdleTimeout()).thenAnswer(new Answer<CustomExpiry<K, V>>() {
@Override public CustomExpiry<K, V> answer(InvocationOnMock invocation) throws Throwable {
return entryIdleTimeout.get();
}
});
when(mockRegionAttributes.getCustomEntryTimeToLive()).thenAnswer(new Answer<CustomExpiry<K, V>>() {
@Override public CustomExpiry<K, V> answer(InvocationOnMock invocation) throws Throwable {
return entryTimeToLive.get();
}
});
return mockRegion;
}
@SuppressWarnings("unchecked")
static <K, V> Region.Entry<K, V> mockRegionEntry(V applicationDomainObject) {
Region.Entry<K, V> mockRegionEntry = mock(Region.Entry.class);
when(mockRegionEntry.getValue()).thenReturn(applicationDomainObject);
return mockRegionEntry;
}
@Configuration
@PeerCacheApplication
@EnableGemFireMockObjects
@SuppressWarnings("unused")
static class RegionConfiguration {
@Bean("One")
Region<Object, Object> regionOne() {
return mockRegion("One");
public LocalRegionFactoryBean<Object, Object> regionOne(GemFireCache gemfireCache) {
LocalRegionFactoryBean<Object, Object> regionOne = new LocalRegionFactoryBean<>();
regionOne.setCache(gemfireCache);
regionOne.setClose(false);
regionOne.setPersistent(false);
return regionOne;
}
@Bean("Two")
Region<Object, Object> regionTwo() {
return mockRegion("Two");
public LocalRegionFactoryBean<Object, Object> regionTwo(GemFireCache gemfireCache) {
LocalRegionFactoryBean<Object, Object> regionTwo = new LocalRegionFactoryBean<>();
regionTwo.setCache(gemfireCache);
regionTwo.setClose(false);
regionTwo.setPersistent(false);
return regionTwo;
}
}
@EnableExpiration
static class DefaultExpirationPolicyConfiguration extends RegionConfiguration {
}
static class DefaultExpirationPolicyConfiguration extends RegionConfiguration { }
@EnableExpiration(policies = { @ExpirationPolicy(timeout = 300, action = ExpirationActionType.LOCAL_DESTROY) })
static class CustomExpirationPolicyConfiguration extends RegionConfiguration {
}
static class CustomIdleTimeoutExpirationPolicyConfiguration extends RegionConfiguration { }
@EnableExpiration(policies = { @ExpirationPolicy(timeout = 900, action = ExpirationActionType.LOCAL_INVALIDATE, types = ExpirationType.TIME_TO_LIVE) })
static class CustomTimeToLiveTimeoutExpirationPolicyConfiguration extends RegionConfiguration { }
@EnableExpiration(policies = {
@ExpirationPolicy(timeout = 180, action = ExpirationActionType.INVALIDATE, regionNames = "One"),
@ExpirationPolicy(timeout = 360, action = ExpirationActionType.DESTROY, regionNames = "Two", types = ExpirationType.TIME_TO_LIVE)
})
static class RegionSpecificExpirationPolicyConfiguration extends RegionConfiguration {
}
static class RegionSpecificExpirationPolicyConfiguration extends RegionConfiguration { }
@EnableExpiration(policies = {
@ExpirationPolicy(timeout = 120, action = ExpirationActionType.LOCAL_INVALIDATE, regionNames = "One", types = ExpirationType.IDLE_TIMEOUT),
@ExpirationPolicy(timeout = 60, action = ExpirationActionType.LOCAL_INVALIDATE, regionNames = "One", types = ExpirationType.IDLE_TIMEOUT),
@ExpirationPolicy(timeout = 600, action = ExpirationActionType.DESTROY, types = ExpirationType.TIME_TO_LIVE)
})
static class MixedExpirationPolicyConfiguration extends RegionConfiguration {
}
static class MixedExpirationPolicyConfiguration extends RegionConfiguration { }
}

View File

@@ -22,9 +22,9 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.springframework.data.gemfire.util.ArrayUtils.nullSafeArray;
import java.io.File;
import java.io.FilenameFilter;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CustomExpiry;
@@ -55,7 +55,7 @@ import org.springframework.data.gemfire.SimpleObjectSizer;
import org.springframework.data.gemfire.TestUtils;
import org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.FileSystemUtils;
/**
@@ -63,7 +63,7 @@ import org.springframework.util.FileSystemUtils;
* @author David Turanski
* @author John Blum
*/
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(SpringRunner.class)
@ContextConfiguration(locations="diskstore-ns.xml", initializers=GemfireTestApplicationContextInitializer.class)
@SuppressWarnings("unused")
// TODO move test cases into a DiskStoreIntegrationTests class
@@ -86,20 +86,19 @@ public class DiskStoreAndEvictionRegionParsingTest {
@AfterClass
public static void tearDown() {
FileSystemUtils.deleteRecursively(diskStoreDirectory);
for (String name : new File(".").list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.startsWith("BACKUPds");
}
})) {
for (String name : nullSafeArray(new File(".")
.list((dir, name) -> name.startsWith("BACKUP")), String.class)) {
new File(name).delete();
}
}
@Test
public void testDiskStore() {
assertNotNull(applicationContext.getBean("ds2"));
applicationContext.getBean("diskStore1");
assertNotNull(diskStore);
@@ -117,6 +116,7 @@ public class DiskStoreAndEvictionRegionParsingTest {
@Test
@SuppressWarnings("rawtypes")
public void testReplicatedDataRegionAttributes() throws Exception {
assertTrue(applicationContext.containsBean("replicated-data"));
RegionFactoryBean replicatedDataRegionFactoryBean = applicationContext.getBean("&replicated-data", RegionFactoryBean.class);
@@ -146,6 +146,7 @@ public class DiskStoreAndEvictionRegionParsingTest {
@Test
@SuppressWarnings("rawtypes")
public void testPartitionDataOptions() throws Exception {
assertTrue(applicationContext.containsBean("partition-data"));
RegionFactoryBean fb = applicationContext.getBean("&partition-data", RegionFactoryBean.class);
assertTrue(fb instanceof PartitionedRegionFactoryBean);
@@ -165,7 +166,9 @@ public class DiskStoreAndEvictionRegionParsingTest {
@Test
@SuppressWarnings("rawtypes")
public void testEntryTtl() throws Exception {
assertTrue(applicationContext.containsBean("replicated-data"));
RegionFactoryBean fb = applicationContext.getBean("&replicated-data", RegionFactoryBean.class);
RegionAttributes attrs = TestUtils.readField("attributes", fb);
@@ -190,7 +193,9 @@ public class DiskStoreAndEvictionRegionParsingTest {
@Test
@SuppressWarnings("rawtypes")
public void testCustomExpiry() throws Exception {
assertTrue(applicationContext.containsBean("replicated-data-custom-expiry"));
RegionFactoryBean fb = applicationContext.getBean("&replicated-data-custom-expiry", RegionFactoryBean.class);
RegionAttributes attrs = TestUtils.readField("attributes", fb);
@@ -202,14 +207,14 @@ public class DiskStoreAndEvictionRegionParsingTest {
}
public static class TestCustomExpiry<K,V> implements CustomExpiry<K,V> {
@Override
public ExpirationAttributes getExpiry(Entry<K, V> entry) {
return null;
}
@Override
public void close() {
public void close() { }
}
}
}

View File

@@ -29,7 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
/**
* The DiskStoreNamespaceTest class is a test suite of test cases testing the contract and functionality of using
@@ -42,7 +42,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
* @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner
* @since 2.0.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(SpringRunner.class)
@ContextConfiguration(locations = "diskstore-ns.xml", initializers = GemfireTestApplicationContextInitializer.class)
@SuppressWarnings("unused")
public class DiskStoreNamespaceTest {
@@ -57,6 +57,7 @@ public class DiskStoreNamespaceTest {
@Test
public void testDiskStoreConfiguration() {
assertNotNull("The 'fullyConfiguredDiskStore' was not properly configured and initialized", diskStore);
assertEquals("fullyConfiguredDiskStore", diskStore.getName());
assertEquals(Boolean.valueOf(props.getProperty("allowForceCompaction")), diskStore.getAllowForceCompaction());
@@ -76,5 +77,4 @@ public class DiskStoreNamespaceTest {
assertEquals(new File(props.getProperty("location")), diskStore.getDiskDirs()[0]);
assertEquals(Long.valueOf(props.getProperty("maxSize")), Long.valueOf(diskStore.getDiskDirSizes()[0]));
}
}

View File

@@ -32,7 +32,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.Assert;
/**
@@ -50,7 +50,7 @@ import org.springframework.util.Assert;
* @see org.apache.geode.cache.EvictionAttributes
* @since 1.5.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(SpringRunner.class)
@ContextConfiguration(initializers = GemfireTestApplicationContextInitializer.class)
@SuppressWarnings("unused")
public class RegionExpirationAttributesNamespaceTest {
@@ -67,12 +67,13 @@ public class RegionExpirationAttributesNamespaceTest {
@Resource(name = "LocalExample")
private Region<?, ?> localExample;
protected void assertRegionMetaData(final Region<?, ?> region, final String regionName, final DataPolicy dataPolicy) {
private void assertRegionMetaData(final Region<?, ?> region, final String regionName, final DataPolicy dataPolicy) {
assertRegionMetaData(region, regionName, Region.SEPARATOR + regionName, dataPolicy);
}
protected void assertRegionMetaData(final Region<?, ?> region, final String regionName, final String regionFullPath,
final DataPolicy dataPolicy) {
private void assertRegionMetaData(Region<?, ?> region, String regionName, String regionFullPath,
DataPolicy dataPolicy) {
assertNotNull(String.format("The '%1$s' Region was not properly configured and initialized!", regionName), region);
assertEquals(regionName, region.getName());
assertEquals(regionFullPath, region.getFullPath());
@@ -80,14 +81,15 @@ public class RegionExpirationAttributesNamespaceTest {
assertEquals(dataPolicy, region.getAttributes().getDataPolicy());
}
protected void assertNoExpiration(final ExpirationAttributes expirationAttributes) {
private void assertNoExpiration(final ExpirationAttributes expirationAttributes) {
if (expirationAttributes != null) {
//assertEquals(ExpirationAction.INVALIDATE, expirationAttributes.getAction());
assertEquals(0, expirationAttributes.getTimeout());
}
}
protected void assertExpirationAttributes(final ExpirationAttributes expirationAttributes,
private void assertExpirationAttributes(ExpirationAttributes expirationAttributes,
final int timeout, final ExpirationAction action) {
assertNotNull(expirationAttributes);
assertEquals(timeout, expirationAttributes.getTimeout());
@@ -95,8 +97,9 @@ public class RegionExpirationAttributesNamespaceTest {
}
@SuppressWarnings("unchecked")
protected void assertCustomExpiry(final CustomExpiry<?, ?> customExpiry, final String name,
final int timeout, final ExpirationAction action) {
private void assertCustomExpiry(CustomExpiry<?, ?> customExpiry, String name, int timeout,
ExpirationAction action) {
assertNotNull(customExpiry);
assertEquals(name, customExpiry.toString());
assertExpirationAttributes(customExpiry.getExpiry(mock(Region.Entry.class)), timeout, action);
@@ -104,6 +107,7 @@ public class RegionExpirationAttributesNamespaceTest {
@Test
public void testReplicateExampleExpirationAttributes() {
assertRegionMetaData(replicateExample, "ReplicateExample", DataPolicy.REPLICATE);
assertExpirationAttributes(replicateExample.getAttributes().getEntryTimeToLive(),
600, ExpirationAction.DESTROY);
@@ -115,6 +119,7 @@ public class RegionExpirationAttributesNamespaceTest {
@Test
public void testPreloadedExampleExpirationAttributes() {
assertRegionMetaData(preloadedExample, "PreloadedExample", DataPolicy.PRELOADED);
assertExpirationAttributes(preloadedExample.getAttributes().getEntryTimeToLive(),
120, ExpirationAction.LOCAL_DESTROY);
@@ -125,6 +130,7 @@ public class RegionExpirationAttributesNamespaceTest {
@Test
public void testPartitionExampleExpirationAttributes() {
assertRegionMetaData(partitionExample, "PartitionExample", DataPolicy.PARTITION);
assertExpirationAttributes(partitionExample.getAttributes().getEntryTimeToLive(),
300, ExpirationAction.DESTROY);
@@ -136,6 +142,7 @@ public class RegionExpirationAttributesNamespaceTest {
@Test
public void testLocalExampleExpirationAttributes() {
assertRegionMetaData(localExample, "LocalExample", DataPolicy.NORMAL);
assertNoExpiration(localExample.getAttributes().getEntryTimeToLive());
assertNoExpiration(localExample.getAttributes().getEntryIdleTimeout());
@@ -181,5 +188,4 @@ public class RegionExpirationAttributesNamespaceTest {
return this.name;
}
}
}

View File

@@ -44,7 +44,7 @@ import org.apache.geode.cache.util.ObjectSizer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.StringUtils;
/**
@@ -61,7 +61,7 @@ import org.springframework.util.StringUtils;
* @see org.apache.geode.cache.Region
* @since 1.5.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(SpringRunner.class)
@ContextConfiguration
@SuppressWarnings("unused")
public class TemplateClientRegionNamespaceTest {
@@ -69,7 +69,8 @@ public class TemplateClientRegionNamespaceTest {
@Resource(name = "TemplateBasedClientRegion")
private Region<Integer, Object> templateBasedClientRegion;
protected void assertCacheListeners(final Region<?, ?> region, final String... expectedNames) {
private void assertCacheListeners(Region<?, ?> region, String... expectedNames) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertNotNull(region.getAttributes().getCacheListeners());
@@ -81,31 +82,28 @@ public class TemplateClientRegionNamespaceTest {
}
}
protected void assertCacheLoader(final Region<?, ?> region, final String expectedName) {
private void assertCacheLoader(Region<?, ?> region, String expectedName) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertTrue(region.getAttributes().getCacheLoader() instanceof TestCacheLoader);
assertEquals(expectedName, region.getAttributes().getCacheLoader().toString());
}
protected void assertCacheWriter(final Region<?, ?> region, final String expectedName) {
private void assertCacheWriter(Region<?, ?> region, String expectedName) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertTrue(region.getAttributes().getCacheWriter() instanceof TestCacheWriter);
assertEquals(expectedName, region.getAttributes().getCacheWriter().toString());
}
protected void assertDefaultEvictionAttributes(final EvictionAttributes evictionAttributes) {
private void assertDefaultEvictionAttributes(EvictionAttributes evictionAttributes) {
assumeNotNull(evictionAttributes);
assertEvictionAttributes(evictionAttributes, EvictionAction.NONE, EvictionAlgorithm.NONE, 0, null);
}
protected void assertEvictionAttributes(final EvictionAttributes evictionAttributes,
final EvictionAction expectedAction,
final EvictionAlgorithm expectedAlgorithm,
final int expectedMaximum,
final ObjectSizer expectedObjectSizer)
{
private void assertEvictionAttributes(EvictionAttributes evictionAttributes, EvictionAction expectedAction,
EvictionAlgorithm expectedAlgorithm, int expectedMaximum, ObjectSizer expectedObjectSizer) {
assertNotNull("The 'EvictionAttributes' must not be null!", evictionAttributes);
assertEquals(expectedAction, evictionAttributes.getAction());
assertEquals(expectedAlgorithm, evictionAttributes.getAlgorithm());
@@ -113,22 +111,22 @@ public class TemplateClientRegionNamespaceTest {
assertEquals(expectedObjectSizer, evictionAttributes.getObjectSizer());
}
protected void assertDefaultExpirationAttributes(final ExpirationAttributes expirationAttributes) {
private void assertDefaultExpirationAttributes(ExpirationAttributes expirationAttributes) {
assumeNotNull(expirationAttributes);
assertEquals(ExpirationAction.INVALIDATE, expirationAttributes.getAction());
assertEquals(0, expirationAttributes.getTimeout());
}
protected void assertExpirationAttributes(final ExpirationAttributes expirationAttributes,
final ExpirationAction expectedAction,
final int expectedTimeout)
{
private void assertExpirationAttributes(ExpirationAttributes expirationAttributes, ExpirationAction expectedAction,
int expectedTimeout) {
assertNotNull("The 'ExpirationAttributes' must not be null!", expirationAttributes);
assertEquals(expectedAction, expirationAttributes.getAction());
assertEquals(expectedTimeout, expirationAttributes.getTimeout());
}
protected void assertDefaultRegionAttributes(final Region region) {
private void assertDefaultRegionAttributes(Region region) {
assertNotNull("The Region must not be null!", region);
assertNotNull(String.format("The Region (%1$s) must have 'RegionAttributes' defined!",
region.getFullPath()), region.getAttributes());
@@ -141,23 +139,24 @@ public class TemplateClientRegionNamespaceTest {
assertDefaultExpirationAttributes(region.getAttributes().getRegionIdleTimeout());
}
protected static void assertEmpty(final Object[] array) {
private static void assertEmpty(Object[] array) {
assertTrue((array == null || array.length == 0));
}
protected static void assertEmpty(final Iterable<?> collection) {
private static void assertEmpty(Iterable<?> collection) {
assertTrue(collection == null || !collection.iterator().hasNext());
}
protected static void assertNullEmpty(final String value) {
private static void assertNullEmpty(String value) {
assertFalse(StringUtils.hasText(value));
}
protected static void assertRegionMetaData(final Region<?, ?> region, final String expectedRegionName) {
private static void assertRegionMetaData(Region<?, ?> region, String expectedRegionName) {
assertRegionMetaData(region, expectedRegionName, Region.SEPARATOR + expectedRegionName);
}
protected static void assertRegionMetaData(final Region<?, ?> region, final String expectedRegionName, final String expectedRegionPath) {
private static void assertRegionMetaData(Region<?, ?> region, String expectedRegionName, String expectedRegionPath) {
assertNotNull(String.format("The '%1$s' Region was not properly configured and initialized!",
expectedRegionName), region);
assertEquals(expectedRegionName, region.getName());
@@ -168,6 +167,7 @@ public class TemplateClientRegionNamespaceTest {
@Test
public void testTemplateBasedClientRegion() {
assertRegionMetaData(templateBasedClientRegion, "TemplateBasedClientRegion");
assertDefaultRegionAttributes(templateBasedClientRegion);
assertCacheListeners(templateBasedClientRegion, "XYZ");
@@ -193,7 +193,7 @@ public class TemplateClientRegionNamespaceTest {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@@ -207,18 +207,17 @@ public class TemplateClientRegionNamespaceTest {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@Override
public Object load(final LoaderHelper loaderHelper) throws CacheLoaderException {
public Object load(LoaderHelper loaderHelper) throws CacheLoaderException {
return null;
}
@Override
public void close() {
}
public void close() { }
@Override
public String toString() {
@@ -230,7 +229,7 @@ public class TemplateClientRegionNamespaceTest {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@@ -239,5 +238,4 @@ public class TemplateClientRegionNamespaceTest {
return name;
}
}
}

View File

@@ -65,7 +65,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
@@ -84,7 +84,7 @@ import org.springframework.util.StringUtils;
* @see org.apache.geode.cache.Region
* @since 1.5.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(SpringRunner.class)
@ContextConfiguration(initializers = GemfireTestApplicationContextInitializer.class)
@SuppressWarnings("unused")
public class TemplateRegionsNamespaceTests {
@@ -110,7 +110,8 @@ public class TemplateRegionsNamespaceTests {
@Resource(name = "TemplateBasedLocalRegion")
private Region<Long, String> templateBasedLocalRegion;
protected void assertAsyncEventQueues(final Region<?, ?> region, final String... expectedNames) {
private void assertAsyncEventQueues(Region<?, ?> region, String... expectedNames) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertNotNull(region.getAttributes().getAsyncEventQueueIds());
@@ -121,7 +122,8 @@ public class TemplateRegionsNamespaceTests {
}
}
protected void assertCacheListeners(final Region<?, ?> region, final String... expectedNames) {
private void assertCacheListeners(Region<?, ?> region, String... expectedNames) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertNotNull(region.getAttributes().getCacheListeners());
@@ -133,31 +135,30 @@ public class TemplateRegionsNamespaceTests {
}
}
protected void assertCacheLoader(final Region<?, ?> region, final String expectedName) {
private void assertCacheLoader(Region<?, ?> region, String expectedName) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertTrue(region.getAttributes().getCacheLoader() instanceof TestCacheLoader);
assertEquals(expectedName, region.getAttributes().getCacheLoader().toString());
}
protected void assertCacheWriter(final Region<?, ?> region, final String expectedName) {
private void assertCacheWriter(Region<?, ?> region, String expectedName) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertTrue(region.getAttributes().getCacheWriter() instanceof TestCacheWriter);
assertEquals(expectedName, region.getAttributes().getCacheWriter().toString());
}
protected void assertDefaultEvictionAttributes(final EvictionAttributes evictionAttributes) {
private void assertDefaultEvictionAttributes(EvictionAttributes evictionAttributes) {
assumeNotNull(evictionAttributes);
assertEvictionAttributes(evictionAttributes, EvictionAction.NONE, EvictionAlgorithm.NONE, 0, null);
}
protected void assertEvictionAttributes(final EvictionAttributes evictionAttributes,
final EvictionAction expectedAction,
final EvictionAlgorithm expectedAlgorithm,
final int expectedMaximum,
final ObjectSizer expectedObjectSizer)
{
private void assertEvictionAttributes(EvictionAttributes evictionAttributes, EvictionAction expectedAction,
EvictionAlgorithm expectedAlgorithm, int expectedMaximum, ObjectSizer expectedObjectSizer) {
assertNotNull("The 'EvictionAttributes' must not be null!", evictionAttributes);
assertEquals(expectedAction, evictionAttributes.getAction());
assertEquals(expectedAlgorithm, evictionAttributes.getAlgorithm());
@@ -165,22 +166,23 @@ public class TemplateRegionsNamespaceTests {
assertEquals(expectedObjectSizer, evictionAttributes.getObjectSizer());
}
protected void assertDefaultExpirationAttributes(final ExpirationAttributes expirationAttributes) {
private void assertDefaultExpirationAttributes(ExpirationAttributes expirationAttributes) {
assumeNotNull(expirationAttributes);
assertEquals(ExpirationAction.INVALIDATE, expirationAttributes.getAction());
assertEquals(0, expirationAttributes.getTimeout());
}
protected void assertExpirationAttributes(final ExpirationAttributes expirationAttributes,
final ExpirationAction expectedAction,
final int expectedTimeout)
{
private void assertExpirationAttributes(ExpirationAttributes expirationAttributes, ExpirationAction expectedAction,
int expectedTimeout) {
assertNotNull("The 'ExpirationAttributes' must not be null!", expirationAttributes);
assertEquals(expectedAction, expirationAttributes.getAction());
assertEquals(expectedTimeout, expirationAttributes.getTimeout());
}
protected void assertGatewaySenders(final Region<?, ?> region, final String... gatewaySenderIds) {
private void assertGatewaySenders(Region<?, ?> region, String... gatewaySenderIds) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertNotNull(region.getAttributes().getGatewaySenderIds());
@@ -188,16 +190,15 @@ public class TemplateRegionsNamespaceTests {
assertTrue(Arrays.asList(gatewaySenderIds).containsAll(region.getAttributes().getGatewaySenderIds()));
}
protected void assertDefaultMembershipAttributes(final MembershipAttributes membershipAttributes) {
private void assertDefaultMembershipAttributes(MembershipAttributes membershipAttributes) {
assumeNotNull(membershipAttributes);
assertMembershipAttributes(membershipAttributes, LossAction.FULL_ACCESS, ResumptionAction.NONE);
}
protected void assertMembershipAttributes(final MembershipAttributes membershipAttributes,
final LossAction expectedLossAction,
final ResumptionAction expectedResumptionAction,
final String... expectedRequiredRoles)
{
private void assertMembershipAttributes(MembershipAttributes membershipAttributes, LossAction expectedLossAction,
ResumptionAction expectedResumptionAction, String... expectedRequiredRoles) {
assertNotNull("The 'MembershipAttributes' must not be null!", membershipAttributes);
assertEquals(expectedLossAction, membershipAttributes.getLossAction());
assertEquals(expectedResumptionAction, membershipAttributes.getResumptionAction());
@@ -210,7 +211,8 @@ public class TemplateRegionsNamespaceTests {
}
}
protected void assertPartitionListener(final Region<?, ?> region, final String... expectedNames) {
private void assertPartitionListener(Region<?, ?> region, String... expectedNames) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertNotNull(region.getAttributes().getPartitionAttributes());
@@ -223,16 +225,17 @@ public class TemplateRegionsNamespaceTests {
}
}
protected void assertPartitionResolver(final Region<?, ?> region, final String expectedName) {
private void assertPartitionResolver(Region<?, ?> region, String expectedName) {
assertNotNull(region);
assertNotNull(region.getAttributes());
assertNotNull(region.getAttributes().getPartitionAttributes());
assertTrue(
region.getAttributes().getPartitionAttributes().getPartitionResolver() instanceof TestPartitionResolver);
assertTrue(region.getAttributes().getPartitionAttributes().getPartitionResolver() instanceof TestPartitionResolver);
assertEquals(expectedName, region.getAttributes().getPartitionAttributes().getPartitionResolver().toString());
}
protected void assertDefaultRegionAttributes(final Region region) {
private void assertDefaultRegionAttributes(Region region) {
assertNotNull("The Region must not be null!", region);
assertNotNull(String.format("Region (%1$s) must have 'RegionAttributes' defined!",
region.getFullPath()), region.getAttributes());
@@ -246,35 +249,37 @@ public class TemplateRegionsNamespaceTests {
assertDefaultExpirationAttributes(region.getAttributes().getRegionIdleTimeout());
}
protected void assertDefaultSubscriptionAttributes(final SubscriptionAttributes subscriptionAttributes) {
private void assertDefaultSubscriptionAttributes(SubscriptionAttributes subscriptionAttributes) {
assumeNotNull(subscriptionAttributes);
assertSubscriptionAttributes(subscriptionAttributes, InterestPolicy.DEFAULT);
}
protected void assertSubscriptionAttributes(final SubscriptionAttributes subscriptionAttributes,
final InterestPolicy expectedInterestPolicy)
{
private void assertSubscriptionAttributes(SubscriptionAttributes subscriptionAttributes,
InterestPolicy expectedInterestPolicy) {
assertNotNull("The 'SubscriptionAttributes' must not be null!", subscriptionAttributes);
assertEquals(expectedInterestPolicy, subscriptionAttributes.getInterestPolicy());
}
protected static void assertEmpty(final Object[] array) {
private static void assertEmpty(Object[] array) {
assertTrue((array == null || array.length == 0));
}
protected static void assertEmpty(final Iterable<?> collection) {
private static void assertEmpty(Iterable<?> collection) {
assertTrue(collection == null || !collection.iterator().hasNext());
}
protected static void assertNullEmpty(final String value) {
private static void assertNullEmpty(String value) {
assertFalse(StringUtils.hasText(value));
}
protected static void assertRegionMetaData(final Region<?, ?> region, final String expectedRegionName) {
private static void assertRegionMetaData(Region<?, ?> region, String expectedRegionName) {
assertRegionMetaData(region, expectedRegionName, Region.SEPARATOR + expectedRegionName);
}
protected static void assertRegionMetaData(final Region<?, ?> region, final String expectedRegionName, final String expectedRegionPath) {
private static void assertRegionMetaData(Region<?, ?> region, String expectedRegionName, String expectedRegionPath) {
assertNotNull(String.format("The '%1$s' Region was not properly configured and initialized!",
expectedRegionName), region);
assertEquals(expectedRegionName, region.getName());
@@ -285,6 +290,7 @@ public class TemplateRegionsNamespaceTests {
@Test
public void testNoAbstractRegionTemplateBeans() {
String[] beanNames = {
"BaseRegionTemplate",
"ExtendedRegionTemplate",
@@ -311,6 +317,7 @@ public class TemplateRegionsNamespaceTests {
@Test
public void testNonTemplateBasedReplicateRegion() {
assertRegionMetaData(nonTemplateBasedReplicateRegion, "NonTemplateBasedReplicateRegion");
assertDefaultRegionAttributes(nonTemplateBasedReplicateRegion);
assertEmpty(nonTemplateBasedReplicateRegion.getAttributes().getAsyncEventQueueIds());
@@ -344,6 +351,7 @@ public class TemplateRegionsNamespaceTests {
@Test
public void testTemplateBasedReplicateRegion() {
assertRegionMetaData(templateBasedReplicateRegion, "TemplateBasedReplicateRegion");
assertDefaultRegionAttributes(templateBasedReplicateRegion);
assertEmpty(templateBasedReplicateRegion.getAttributes().getAsyncEventQueueIds());
@@ -381,6 +389,7 @@ public class TemplateRegionsNamespaceTests {
@Test
public void testTemplateBasedReplicateSubRegion() {
assertRegionMetaData(templateBasedReplicateSubRegion, "TemplateBasedReplicateSubRegion",
"/TemplateBasedReplicateRegion/TemplateBasedReplicateSubRegion");
assertDefaultRegionAttributes(templateBasedReplicateSubRegion);
@@ -418,6 +427,7 @@ public class TemplateRegionsNamespaceTests {
@Test
public void testTemplateBasedReplicateRegionNoOverrides() {
assertRegionMetaData(templateBasedReplicateRegionNoOverrides, "TemplateBasedReplicateRegionNoOverrides");
assertDefaultRegionAttributes(templateBasedReplicateRegionNoOverrides);
assertEmpty(templateBasedReplicateRegionNoOverrides.getAttributes().getAsyncEventQueueIds());
@@ -457,6 +467,7 @@ public class TemplateRegionsNamespaceTests {
@Test
public void testTemplateBasedPartitionRegion() {
assertRegionMetaData(templateBasedPartitionRegion, "TemplateBasedPartitionRegion");
assertDefaultRegionAttributes(templateBasedPartitionRegion);
assertAsyncEventQueues(templateBasedPartitionRegion, "TestAsyncEventQueue");
@@ -504,6 +515,7 @@ public class TemplateRegionsNamespaceTests {
@Test
public void testTemplateBasedLocalRegion() {
assertRegionMetaData(templateBasedLocalRegion, "TemplateBasedLocalRegion");
assertDefaultRegionAttributes(templateBasedLocalRegion);
assertEmpty(templateBasedLocalRegion.getAttributes().getAsyncEventQueueIds());
@@ -542,18 +554,17 @@ public class TemplateRegionsNamespaceTests {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@Override
public boolean processEvents(final List<AsyncEvent> asyncEvents) {
public boolean processEvents(List<AsyncEvent> asyncEvents) {
return false;
}
@Override
public void close() {
}
public void close() { }
@Override
public String toString() {
@@ -565,7 +576,7 @@ public class TemplateRegionsNamespaceTests {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@@ -579,18 +590,17 @@ public class TemplateRegionsNamespaceTests {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@Override
public Object load(final LoaderHelper loaderHelper) throws CacheLoaderException {
public Object load(LoaderHelper loaderHelper) throws CacheLoaderException {
return null;
}
@Override
public void close() {
}
public void close() { }
@Override
public String toString() {
@@ -602,7 +612,7 @@ public class TemplateRegionsNamespaceTests {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@@ -616,7 +626,7 @@ public class TemplateRegionsNamespaceTests {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@@ -630,12 +640,12 @@ public class TemplateRegionsNamespaceTests {
private String name;
public void setName(final String name) {
public void setName(String name) {
this.name = name;
}
@Override
public Object getRoutingObject(final EntryOperation entryOperation) {
public Object getRoutingObject(EntryOperation entryOperation) {
return null;
}
@@ -645,13 +655,11 @@ public class TemplateRegionsNamespaceTests {
}
@Override
public void close() {
}
public void close() { }
@Override
public String toString() {
return name;
}
}
}

View File

@@ -44,7 +44,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer;
import org.springframework.expression.EvaluationException;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
/**
* The AnnotationBasedExpirationConfigurationIntegrationTest class is a test suite of test cases testing
@@ -64,13 +64,13 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
* @see org.apache.geode.cache.ExpirationAttributes
* @since 1.7.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(SpringRunner.class)
@ContextConfiguration(initializers = GemfireTestApplicationContextInitializer.class)
@SuppressWarnings("unused")
public class AnnotationBasedExpirationConfigurationIntegrationTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
public ExpectedException exception = ExpectedException.none();
@Autowired
@Qualifier("genericExpiration")
@@ -107,11 +107,11 @@ public class AnnotationBasedExpirationConfigurationIntegrationTest {
assertThat(timeToLiveExpiration.getDefaultExpirationAttributes(), is(sameInstance(defaultExpirationAttributes)));
}
protected void assertExpiration(ExpirationAttributes expected, ExpirationAttributes actual) {
private void assertExpiration(ExpirationAttributes expected, ExpirationAttributes actual) {
assertExpiration(actual, expected.getTimeout(), expected.getAction());
}
protected void assertExpiration(ExpirationAttributes expirationAttributes, int expectedTimeout,
private void assertExpiration(ExpirationAttributes expirationAttributes, int expectedTimeout,
ExpirationAction expectedAction) {
assertThat(expirationAttributes, is(not(nullValue())));
@@ -120,7 +120,8 @@ public class AnnotationBasedExpirationConfigurationIntegrationTest {
}
@SuppressWarnings("unchecked")
protected Region.Entry<Object, Object> mockRegionEntry(Object value) {
private Region.Entry<Object, Object> mockRegionEntry(Object value) {
Region.Entry<Object, Object> mockRegionEntry = mock(Region.Entry.class, "MockRegionEntry");
when(mockRegionEntry.getValue()).thenReturn(value);
@@ -130,6 +131,7 @@ public class AnnotationBasedExpirationConfigurationIntegrationTest {
@Test
public void exampleRegionIdleTimeoutExpirationPolicy() {
CustomExpiry<Object, Object> expiration = example.getAttributes().getCustomEntryIdleTimeout();
assertExpiration(expiration.getExpiry(mockRegionEntry(new ApplicationDomainObjectWithTimeToLiveAndGenericExpirationPolicies())),
@@ -148,6 +150,7 @@ public class AnnotationBasedExpirationConfigurationIntegrationTest {
@Test
public void exampleRegionTimeToLiveExpirationPolicy() {
CustomExpiry<Object, Object> expiration = example.getAttributes().getCustomEntryTimeToLive();
assertExpiration(expiration.getExpiry(mockRegionEntry(new ApplicationDomainObjectWithTimeToLiveAndGenericExpirationPolicies())),
@@ -165,6 +168,7 @@ public class AnnotationBasedExpirationConfigurationIntegrationTest {
@Test
public void genericExpirationPolicy() {
assertExpiration(genericExpiration.getExpiry(mockRegionEntry(
new ApplicationDomainObjectWithTimeToLiveAndGenericExpirationPolicies())), 60, ExpirationAction.INVALIDATE);
assertThat(genericExpiration.getExpiry(mockRegionEntry(
@@ -183,58 +187,54 @@ public class AnnotationBasedExpirationConfigurationIntegrationTest {
@Test
public void invalidExpirationAction() {
expectedException.expect(EvaluationException.class);
expectedException.expectCause(isA(IllegalArgumentException.class));
expectedException.expectMessage(String.format("[%s] is not resolvable as an ExpirationAction(Type)",
exception.expect(EvaluationException.class);
exception.expectCause(isA(IllegalArgumentException.class));
exception.expectMessage(String.format("[%s] is not resolvable as an ExpirationAction(Type)",
"@expirationProperties['gemfire.region.entry.expiration.invalid.action.string']"));
genericExpiration.getExpiry(mockRegionEntry(new RegionEntryWithInvalidExpirationAction()));
}
@Test
public void invalidExpirationTimeout() {
expectedException.expect(IllegalArgumentException.class);
expectedException.expectCause(is(nullValue(Throwable.class)));
exception.expect(IllegalArgumentException.class);
exception.expectCause(is(nullValue(Throwable.class)));
genericExpiration.getExpiry(mockRegionEntry(new RegionEntryWithInvalidExpirationTimeout()));
}
@Expiration(timeout = "60", action = "INVALIDATE")
@TimeToLiveExpiration(timeout = "300", action = "DESTROY")
protected static class ApplicationDomainObjectWithTimeToLiveAndGenericExpirationPolicies {
}
protected static class ApplicationDomainObjectWithTimeToLiveAndGenericExpirationPolicies { }
@IdleTimeoutExpiration(timeout = "120", action = "INVALIDATE")
protected static class ApplicationDomainObjectWithIdleTimeoutExpirationPolicy {
}
protected static class ApplicationDomainObjectWithIdleTimeoutExpirationPolicy { }
@Expiration(timeout = "60", action = "DESTROY")
protected static class ApplicationDomainObjectWithGenericExpirationPolicy {
}
protected static class ApplicationDomainObjectWithGenericExpirationPolicy { }
protected static class ApplicationDomainObjectWithNoExpirationPolicy {
}
protected static class ApplicationDomainObjectWithNoExpirationPolicy { }
@TimeToLiveExpiration(timeout = "${gemfire.region.entry.expiration.timeout}",
action = "${gemfire.region.entry.expiration.action.string}")
protected static class RegionEntryTimeToLiveExpirationPolicy {
}
protected static class RegionEntryTimeToLiveExpirationPolicy { }
@IdleTimeoutExpiration(timeout = "@expirationProperties['gemfire.region.entry.expiration.timeout']",
action = "@expirationProperties['gemfire.region.entry.expiration.action.gemfire.type']")
protected static class RegionEntryIdleTimeoutExpirationPolicy {
}
protected static class RegionEntryIdleTimeoutExpirationPolicy { }
@Expiration(timeout = "${gemfire.region.entry.expiration.timeout}",
action = "@expirationProperties['gemfire.region.entry.expiration.action.spring.type']")
protected static class RegionEntryGenericExpirationPolicy {
}
protected static class RegionEntryGenericExpirationPolicy { }
@Expiration(timeout = "${gemfire.region.entry.expiration.timeout}",
action = "@expirationProperties['gemfire.region.entry.expiration.invalid.action.string']")
protected static class RegionEntryWithInvalidExpirationAction {
}
protected static class RegionEntryWithInvalidExpirationAction { }
@Expiration(timeout = "${gemfire.region.entry.expiration.invalid.timeout}",
action = "@expirationProperties['gemfire.region.entry.expiration.action.spring.type']")
protected static class RegionEntryWithInvalidExpirationTimeout {
}
protected static class RegionEntryWithInvalidExpirationTimeout { }
}