@Test public void updateWithCustomExpiry() { RegionAttributesType.ExpirationAttributesType expiration = new RegionAttributesType.ExpirationAttributesType(); regionAttributes.setEntryIdleTime(expiration); DeclarableType mockExpiry = mock(DeclarableType.class); when(mockExpiry.getClassName()).thenReturn(MyCustomExpiry.class.getName()); expiration.setCustomExpiry(mockExpiry); function.alterRegion(cache, config); verify(mutator, times(0)).setEntryIdleTimeout(any()); verify(mutator).setCustomEntryIdleTimeout(notNull()); }
@Test public void updateWithEntryIdleTime_TimeoutOnly() { RegionAttributesType.ExpirationAttributesType expiration = new RegionAttributesType.ExpirationAttributesType(); regionAttributes.setEntryIdleTime(expiration); expiration.setTimeout("10"); ExpirationAttributes existing = new ExpirationAttributes(20, ExpirationAction.DESTROY); when(region.getEntryIdleTimeout()).thenReturn(existing); function.alterRegion(cache, config); ArgumentCaptor<ExpirationAttributes> updatedCaptor = ArgumentCaptor.forClass(ExpirationAttributes.class); verify(mutator).setEntryIdleTimeout(updatedCaptor.capture()); assertThat(updatedCaptor.getValue().getTimeout()).isEqualTo(10); assertThat(updatedCaptor.getValue().getAction()).isEqualTo(ExpirationAction.DESTROY); verify(mutator, times(0)).setCustomEntryIdleTimeout(any()); }
@Test public void deleteCustomExpiry() { RegionAttributesType.ExpirationAttributesType expiration = new RegionAttributesType.ExpirationAttributesType(); regionAttributes.setEntryIdleTime(expiration); expiration.setCustomExpiry(DeclarableType.EMPTY); function.alterRegion(cache, config); verify(mutator, times(0)).setEntryIdleTimeout(any()); verify(mutator).setCustomEntryIdleTimeout(null); }
@Test public void updateWithEntryIdleTime_timeoutAndAction() { RegionAttributesType.ExpirationAttributesType expiration = new RegionAttributesType.ExpirationAttributesType(); regionAttributes.setEntryIdleTime(expiration); expiration.setTimeout("10"); expiration.setAction("invalidate"); ExpirationAttributes existing = new ExpirationAttributes(); when(region.getEntryIdleTimeout()).thenReturn(existing); function.alterRegion(cache, config); ArgumentCaptor<ExpirationAttributes> updatedCaptor = ArgumentCaptor.forClass(ExpirationAttributes.class); verify(mutator).setEntryIdleTimeout(updatedCaptor.capture()); assertThat(updatedCaptor.getValue().getTimeout()).isEqualTo(10); assertThat(updatedCaptor.getValue().getAction()).isEqualTo(ExpirationAction.INVALIDATE); verify(mutator, times(0)).setCustomEntryIdleTimeout(any()); }
Region.Entry entry = null; try { region.getAttributesMutator().setEntryIdleTimeout(expire); entry = region.getEntry(key); assertEquals(value, entry.getValue()); region.getAttributesMutator().setEntryIdleTimeout(hugeExpire); region.put(key, value); tilt = System.currentTimeMillis() + timeout; Wait.pause(timeout * 2); assertEquals(value, entry.getValue()); region.getAttributesMutator().setEntryIdleTimeout(expire); waitForInvalidate(entry, tilt);
/** * Changes the idleTimeout expiration attributes for values in the region. * * @param idleTimeout the idleTimeout expiration attributes for entries * @return the previous value of entry idleTimeout * @throws IllegalArgumentException if idleTimeout is null or if the ExpirationAction is * LOCAL_DESTROY and the region is {@link DataPolicy#withReplication replicated} or if the * the ExpirationAction is LOCAL_INVALIDATE and the region is * {@link DataPolicy#withReplication replicated} * @see AttributesFactory#setStatisticsEnabled * @throws IllegalStateException if statistics are disabled for this region. */ @Override public ExpirationAttributes setEntryIdleTimeout(ExpirationAttributes idleTimeout) { ExpirationAttributes attr = super.setEntryIdleTimeout(idleTimeout); /* * All buckets must be created to make this change, otherwise it is possible for * updatePRConfig(...) to make changes that cause bucket creation to live lock */ PartitionRegionHelper.assignBucketsToPartitions(this); // Set to Bucket regions as well dataStore.lockBucketCreationAndVisit( (bucketId, r) -> r.getAttributesMutator().setEntryIdleTimeout(idleTimeout)); updatePRConfig(getPRConfigWithLatestExpirationAttributes(), false); return attr; }
region.getEntryIdleTimeout(), p -> mutator.setEntryIdleTimeout(p), p -> mutator.setCustomEntryIdleTimeout(p)); updateExpirationAttributes(cache, regionAttributes.getEntryTimeToLive(),
mutt.setEntryIdleTimeout(expire2); eet = region.getEntryExpiryTask(key1); final long secondExpiryTime = eet.getExpirationTime(); mutt.setEntryIdleTimeout(expire3); eet = region.getEntryExpiryTask(key1); final long thirdExpiryTime = eet.getExpirationTime(); mutt = region.getAttributesMutator(); ExpirationAttributes expire4 = new ExpirationAttributes(1, INVALIDATE); mutt.setEntryIdleTimeout(expire4); WaitCriterion wc = new WaitCriterion() { @Override
mutator.setEntryIdleTimeout(attrs.getEntryIdleTimeout());
.when(mockAttributesMutator).setEntryIdleTimeout(any(ExpirationAttributes.class));