package org.infinispan.container.versioning; import static org.testng.AssertJUnit.assertEquals; import java.util.concurrent.TimeUnit; import org.infinispan.Cache; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.distribution.DistributionTestHelper; import org.infinispan.distribution.MagicKey; import org.testng.AssertJUnit; import org.testng.annotations.Test; @Test(testName = "container.versioning.DistL1WriteSkewTest", groups = "functional") public class DistL1WriteSkewTest extends DistWriteSkewTest { @Override protected void decorate(ConfigurationBuilder builder) { // Enable L1 builder.clustering().l1().enable(); builder.clustering().remoteTimeout(100, TimeUnit.MINUTES); } @Test public void testL1ValuePutCanExpire() { Cache<Object, Object> cache0 = cache(0); Cache<Object, Object> cache1 = cache(1); Cache<Object, Object> cache2 = cache(2); MagicKey hello = new MagicKey("hello", cache0, cache1); DistributionTestHelper.assertIsNotInL1(cache2, hello); // Auto-commit is true cache2.put(hello, "world 1"); DistributionTestHelper.assertIsInL1(cache2, hello); } @Test public void testL1ValueGetCanExpire() { Cache<Object, Object> cache0 = cache(0); Cache<Object, Object> cache1 = cache(1); Cache<Object, Object> cache2 = cache(2); MagicKey hello = new MagicKey("hello", cache0, cache1); DistributionTestHelper.assertIsNotInL1(cache2, hello); // Auto-commit is true cache0.put(hello, "world 1"); assertEquals("world 1", cache2.get(hello)); DistributionTestHelper.assertIsInL1(cache2, hello); } public void testL1Enabled() { for (Cache cache : caches()) { AssertJUnit.assertTrue("L1 not enabled for " + address(cache), cache.getCacheConfiguration().clustering().l1().enabled()); } } }