package org.infinispan.client.hotrod.event;
import static org.infinispan.client.hotrod.test.HotRodClientTestingUtil.withRemoteCacheManager;
import static org.infinispan.server.hotrod.test.HotRodTestingUtil.hotRodCacheConfiguration;
import static org.infinispan.test.TestingUtil.detectThreadLeaks;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.test.RemoteCacheManagerCallable;
import org.infinispan.client.hotrod.test.SingleHotRodServerTest;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.EmbeddedCacheManager;
import org.testng.annotations.Test;
@Test(groups = "functional", testName = "client.hotrod.event.ClientListenerLeakTest")
public class ClientListenerLeakTest extends SingleHotRodServerTest {
private String cacheName;
@Override
protected EmbeddedCacheManager createCacheManager() throws Exception {
EmbeddedCacheManager cm = super.createCacheManager();
ConfigurationBuilder cfg = hotRodCacheConfiguration();
cacheName = this.getClass().getSimpleName();
cm.defineConfiguration(cacheName, cfg.build());
cm.getCache(cacheName);
return cm;
}
public void testNoLeaksAfterShutdown() {
withRemoteCacheManager(new RemoteCacheManagerCallable(getRemoteCacheManager()) {
@Override
public void call() {
RemoteCache<Integer, String> remote = rcm.getCache(cacheName);
EventLogListener<Integer> eventListener = new EventLogListener<>(remote);
remote.addClientListener(eventListener);
eventListener.expectNoEvents();
remote.put(1, "one");
eventListener.expectOnlyCreatedEvent(1);
}
});
detectThreadLeaks(".*Client-Listener-ClientListenerLeakTest-.*");
}
}