package org.infinispan.expiration.impl;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
import org.infinispan.expiration.ExpirationManager;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.notifications.cachelistener.event.Event;
import org.infinispan.test.TestingUtil;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
@Test(groups = "functional", testName = "expiration.impl.ExpirationListenerFunctionalTest")
public class ExpirationListenerFunctionalTest extends ExpirationFunctionalTest {
protected ExpiredCacheListener listener = new ExpiredCacheListener();
protected ExpirationManager manager;
@Override
protected void afterCacheCreated(EmbeddedCacheManager cm) {
cache.addListener(listener);
manager = TestingUtil.extractComponent(cache, ExpirationManager.class);
}
@AfterMethod
public void resetListener() {
listener.reset();
}
@Override
public void testSimpleExpirationLifespan() throws Exception {
super.testSimpleExpirationLifespan();
manager.processExpiration();
assertExpiredEvents(SIZE);
}
@Override
public void testSimpleExpirationMaxIdle() throws Exception {
super.testSimpleExpirationMaxIdle();
manager.processExpiration();
assertExpiredEvents(SIZE);
}
private void assertExpiredEvents(int count) {
assertEquals(count, listener.getInvocationCount());
listener.getEvents().forEach(event -> {
assertEquals(Event.Type.CACHE_ENTRY_EXPIRED, event.getType());
assertEquals(cache, event.getCache());
assertFalse(event.isPre());
assertNotNull(event.getKey());
assertNotNull(event.getValue());
assertNotNull(event.getMetadata());
});
}
}