package org.infinispan.client.hotrod.event; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertTrue; import java.util.Set; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.client.hotrod.test.HotRodClientTestingUtil; import org.infinispan.client.hotrod.test.SingleHotRodServerTest; import org.infinispan.server.hotrod.configuration.HotRodServerConfigurationBuilder; import org.testng.annotations.Test; @Test(groups = "functional", testName = "client.hotrod.event.ClientListenerRemoveOnStopTest") public class ClientListenerRemoveOnStopTest extends SingleHotRodServerTest { public void testAllListenersRemovedOnStop() { final RemoteCache<Integer, String> rcache = remoteCacheManager.getCache(); final EventLogListener<Integer> eventListener1 = new EventLogListener<>(rcache); rcache.addClientListener(eventListener1); Set<Object> listeners = rcache.getListeners(); assertEquals(1, listeners.size()); assertEquals(eventListener1, listeners.iterator().next()); final EventLogListener<Integer> eventListener2 = new EventLogListener<>(rcache); rcache.addClientListener(eventListener2); listeners = rcache.getListeners(); assertEquals(2, listeners.size()); assertTrue(listeners.contains(eventListener1)); assertTrue(listeners.contains(eventListener2)); remoteCacheManager.stop(); listeners = rcache.getListeners(); assertEquals(0, listeners.size()); } public void testRemoveListenerAfterStopAndRestart() { remoteCacheManager.start(); final RemoteCache<Integer, String> rcache = remoteCacheManager.getCache(); final EventLogListener<Integer> eventListener1 = new EventLogListener<>(rcache); rcache.addClientListener(eventListener1); Set<Object> listeners = rcache.getListeners(); assertEquals(1, listeners.size()); assertTrue(listeners.contains(eventListener1)); int port = this.hotrodServer.getPort(); HotRodClientTestingUtil.killServers(this.hotrodServer); listeners = rcache.getListeners(); assertEquals(1, listeners.size()); hotrodServer = HotRodClientTestingUtil.startHotRodServer(this.cacheManager, port, new HotRodServerConfigurationBuilder()); rcache.removeClientListener(eventListener1); listeners = rcache.getListeners(); assertEquals(0, listeners.size()); } }