package org.infinispan.persistence.jpa; import static org.testng.Assert.assertTrue; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import org.infinispan.container.entries.InternalCacheEntry; import org.infinispan.persistence.spi.PersistenceException; import org.infinispan.test.TestingUtil; import org.infinispan.test.fwk.TestInternalCacheEntryFactory; import org.testng.annotations.Test; /** * Test with metadata disabled */ @Test(groups = "unit", testName = "persistence.JpaStoreNoMetadataTest") public class JpaStoreNoMetadataTest extends JpaStoreTest { @Override protected boolean storeMetadata() { return false; } @Override protected String getPersistenceUnitName() { return "org.infinispan.persistence.jpa.no_metadata"; } @Test(enabled = false) @Override public void testLoadAndStoreWithLifespan() throws Exception { // no metadata => cannot test lifespan } @Test(enabled = false) @Override public void testLoadAndStoreWithIdle() throws Exception { // no metadata => cannot test idle } @Test(enabled = false) @Override public void testLoadAndStoreWithLifespanAndIdle() throws Exception { // no metadata => cannot test lifespan or idle } @Test(enabled = false) @Override public void testLoadAndStoreWithLifespanAndIdle2() throws Exception { // no metadata => cannot test lifespan or idle } @Test(enabled = false) @Override public void testReplaceExpiredEntry() throws Exception { // no metadata => cannot test lifespan } // Without metadata we cannot purge anything - we should test this expected behaviour @Override public void testPurgeExpired() throws Exception { long lifespan = 6000; long idle = 4000; InternalCacheEntry ice1 = TestInternalCacheEntryFactory.create("k1", wrap("k1", "v1"), lifespan); cl.write(TestingUtil.marshalledEntry(ice1, getMarshaller())); InternalCacheEntry ice2 = TestInternalCacheEntryFactory.create("k2", wrap("k2", "v2"), -1, idle); cl.write(TestingUtil.marshalledEntry(ice2, getMarshaller())); InternalCacheEntry ice3 = TestInternalCacheEntryFactory.create("k3", wrap("k3", "v3"), lifespan, idle); cl.write(TestingUtil.marshalledEntry(ice3, getMarshaller())); InternalCacheEntry ice4 = TestInternalCacheEntryFactory.create("k4", wrap("k4", "v4"), -1, -1); cl.write(TestingUtil.marshalledEntry(ice4, getMarshaller())); // immortal entry InternalCacheEntry ice5 = TestInternalCacheEntryFactory.create("k5", wrap("k5", "v5"), lifespan * 1000, idle * 1000); cl.write(TestingUtil.marshalledEntry(ice5, getMarshaller())); // long life mortal entry assertTrue(cl.contains("k1")); assertTrue(cl.contains("k2")); assertTrue(cl.contains("k3")); assertTrue(cl.contains("k4")); assertTrue(cl.contains("k5")); purgeExpired(); assertTrue(cl.contains("k1")); assertTrue(cl.contains("k2")); assertTrue(cl.contains("k3")); assertTrue(cl.contains("k4")); assertTrue(cl.contains("k5")); } @Override public void testStopStartDoesNotNukeValues() throws InterruptedException, PersistenceException { // Without metadata the entries do not expire - we should test this expected behaviour assertFalse(cl.contains("k1")); assertFalse(cl.contains("k2")); long lifespan = 1; long idle = 1; InternalCacheEntry se1 = TestInternalCacheEntryFactory.create("k1", wrap("k1", "v1"), lifespan); InternalCacheEntry se2 = TestInternalCacheEntryFactory.create("k2", wrap("k2", "v2")); InternalCacheEntry se3 = TestInternalCacheEntryFactory.create("k3", wrap("k3", "v3"), -1, idle); InternalCacheEntry se4 = TestInternalCacheEntryFactory.create("k4", wrap("k4", "v4"), lifespan, idle); cl.write(TestingUtil.marshalledEntry(se1, getMarshaller())); cl.write(TestingUtil.marshalledEntry(se2, getMarshaller())); cl.write(TestingUtil.marshalledEntry(se3, getMarshaller())); cl.write(TestingUtil.marshalledEntry(se4, getMarshaller())); timeService.advance(lifespan + 1); cl.stop(); cl.start(); assertTrue(se1.isExpired(System.currentTimeMillis())); assertTrue(cl.contains("k1")); assertEquals("v1", unwrap(cl.load("k1").getValue())); assertTrue(cl.contains("k2")); assertEquals("v2", unwrap(cl.load("k2").getValue())); assertTrue(se3.isExpired(System.currentTimeMillis())); assertTrue(cl.contains("k3")); assertEquals("v3", unwrap(cl.load("k3").getValue())); assertTrue(se3.isExpired(System.currentTimeMillis())); assertTrue(cl.contains("k4")); assertEquals("v4", unwrap(cl.load("k4").getValue())); } }