package org.infinispan.notifications.cachelistener.cluster; import static org.testng.Assert.assertEquals; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.infinispan.Cache; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.notifications.Listener; import org.infinispan.notifications.cachelistener.annotation.CacheEntryCreated; import org.infinispan.notifications.cachelistener.annotation.CacheEntryModified; import org.infinispan.notifications.cachelistener.annotation.CacheEntryRemoved; import org.infinispan.notifications.cachelistener.event.CacheEntryEvent; import org.infinispan.notifications.cachelistener.event.Event; import org.infinispan.test.SingleCacheManagerTest; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.testng.annotations.Test; /** * @author Galder ZamarreƱo */ @Test(groups = "functional", testName = "notifications.cachelistener.cluster.ClusterListenerLocalTest") public class ClusterListenerLocalTest extends SingleCacheManagerTest { @Override protected EmbeddedCacheManager createCacheManager() throws Exception { return TestCacheManagerFactory.createCacheManager(); } public void testInsertEvent() { Cache<Object, String> cache0 = cache(); ClusterListener clusterListener = new ClusterListener(); cache0.addListener(clusterListener); cache.put(1, "v1"); verifySimpleInsertionEvents(clusterListener, 1, "v1"); } protected void verifySimpleInsertionEvents(ClusterListener listener, Object key, Object expectedValue) { assertEquals(listener.events.size(), 1); CacheEntryEvent event = listener.events.get(0); assertEquals(Event.Type.CACHE_ENTRY_CREATED, event.getType()); assertEquals(key, event.getKey()); assertEquals(expectedValue, event.getValue()); } @Listener(clustered = true) protected class ClusterListener { List<CacheEntryEvent> events = Collections.synchronizedList(new ArrayList<CacheEntryEvent>()); @CacheEntryCreated @CacheEntryModified @CacheEntryRemoved public void onCacheEvent(CacheEntryEvent event) { log.debugf("Adding new cluster event %s", event); events.add(event); } } }