Repository: incubator-ignite Updated Branches: refs/heads/ignite-41 [created] 7f1b3f0d1
# ignite-41 Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/7f1b3f0d Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/7f1b3f0d Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/7f1b3f0d Branch: refs/heads/ignite-41 Commit: 7f1b3f0d12cd8d64a74b9bf0700a0aae135a2c53 Parents: d7309f4 Author: sboikov <sboi...@gridgain.com> Authored: Fri Dec 12 17:54:04 2014 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Fri Dec 12 17:54:04 2014 +0300 ---------------------------------------------------------------------- .../grid/cache/GridCacheConfiguration.java | 1 + .../processors/cache/IgniteCacheTest.java | 7 ++ .../expiry/IgniteCacheExpiryPolicyTest.java | 120 +++++++++++++++++++ 3 files changed, 128 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7f1b3f0d/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheConfiguration.java b/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheConfiguration.java index cb082fb..5e94bf5 100644 --- a/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheConfiguration.java +++ b/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheConfiguration.java @@ -380,6 +380,7 @@ public class GridCacheConfiguration extends MutableConfiguration { evictSync = cc.isEvictSynchronized(); evictSyncConcurrencyLvl = cc.getEvictSynchronizedConcurrencyLevel(); evictSyncTimeout = cc.getEvictSynchronizedTimeout(); + expiryPolicyFactory = cc.getExpiryPolicyFactory(); indexingSpiName = cc.getIndexingSpiName(); interceptor = cc.getInterceptor(); invalidate = cc.isInvalidate(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7f1b3f0d/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheTest.java index a390fad..88abfc4 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheTest.java @@ -34,6 +34,13 @@ public class IgniteCacheTest extends GridCommonAbstractTest { /** {@inheritDoc} */ @Override protected void beforeTestsStarted() throws Exception { + startGrids(); + } + + /** + * @throws Exception If failed. + */ + protected void startGrids() throws Exception { int cnt = gridCount(); assert cnt >= 1 : "At least one grid must be started"; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7f1b3f0d/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyTest.java new file mode 100644 index 0000000..f72619b --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/expiry/IgniteCacheExpiryPolicyTest.java @@ -0,0 +1,120 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.internal.processors.cache.expiry; + +import org.apache.ignite.*; +import org.apache.ignite.internal.processors.cache.*; +import org.gridgain.grid.cache.*; +import org.gridgain.grid.util.lang.*; +import org.gridgain.testframework.*; + +import javax.cache.configuration.*; +import javax.cache.expiry.*; +import java.util.concurrent.*; + +/** + * + */ +public class IgniteCacheExpiryPolicyTest extends IgniteCacheTest { + /** */ + private Factory<? extends ExpiryPolicy> factory; + + /** {@inheritDoc} */ + @Override protected void beforeTestsStarted() throws Exception { + // No-op. + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + stopAllGrids(); + } + + @Override + protected int gridCount() { + return 2; + } + + /** + * + */ + private class TestCreatedPolicy implements ExpiryPolicy { + /** */ + private final Duration duration; + + /** + * @param ttl TTL for creation. + */ + TestCreatedPolicy(long ttl) { + this.duration = new Duration(TimeUnit.MILLISECONDS, ttl); + } + + /** {@inheritDoc} */ + @Override public Duration getExpiryForCreation() { + return duration; + } + + /** {@inheritDoc} */ + @Override public Duration getExpiryForAccess() { + return null; + } + + /** {@inheritDoc} */ + @Override public Duration getExpiryForUpdate() { + return null; + } + } + + /** + * @throws Exception If failed. + */ + public void testCreated() throws Exception { + factory = new FactoryBuilder.SingletonFactory<>(new TestCreatedPolicy(1000)); + + startGrids(); + + final Integer key = 1; + + IgniteCache<Integer, Integer> cache = jcache(0); + + cache.put(1, 1); + + GridTestUtils.waitForCondition(new GridAbsPredicate() { + @Override public boolean apply() { + for (int i = 0; i < gridCount(); i++) { + Object val = cache(i).peek(key); + + log.info("Value [grid=" + i + ", val=" + val + ']'); + + if (val != null) + return false; + } + + return false; + } + }, 2000); + + for (int i = 0; i < gridCount(); i++) + assertNull("Unexpected non-null value for grid " + i, cache.get(key)); + } + + /** {@inheritDoc} */ + @Override protected GridCacheConfiguration cacheConfiguration(String gridName) throws Exception { + assert factory != null; + + GridCacheConfiguration cfg = super.cacheConfiguration(gridName); + + cfg.setCacheMode(GridCacheMode.PARTITIONED); + cfg.setAtomicityMode(GridCacheAtomicityMode.ATOMIC); + + cfg.setExpiryPolicyFactory(factory); + + return cfg; + } +}