/** * Subscribes to all remote caches. * <p> * @param listener The feature to be added to the CacheListener attribute * @throws IOException */ @Override public <KK, VV> void addCacheListener( ICacheListener<KK, VV> listener ) throws IOException { for (String cacheName : cacheListenersMap.keySet()) { addCacheListener( cacheName, listener ); if ( log.isDebugEnabled() ) { log.debug( "Adding listener for cache [" + cacheName + "]" ); } } }
/** * Returns a cache value from the specified remote cache; or null if the cache or key does not * exist. * <p> * @param cacheName * @param key * @return ICacheElement * @throws IOException */ @Override public ICacheElement<K, V> get( String cacheName, K key ) throws IOException { return this.get( cacheName, key, 0 ); }
logApplicationEvent( "RemoteCacheServer", "removeCacheListener", message ); if ( log.isInfoEnabled() ) boolean isClusterListener = isRequestFromCluster( listenerId ); cacheDesc = getClusterListeners( cacheName ); cacheDesc = getCacheListeners( cacheName ); cleanupEventQMap( eventQMap ); ICacheEventQueue<K, V> q = eventQMap.remove( Long.valueOf( listenerId ) ); cleanupEventQMap( eventQMap );
/** * Gets multiple items from the cache based on the given set of keys. * <p> * @param cacheName * @param keys * @param requesterId * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no * data in cache for any of these keys */ private Map<K, ICacheElement<K, V>> processGetMultiple( String cacheName, Set<K> keys, long requesterId ) { boolean fromCluster = isRequestFromCluster( requesterId ); if ( log.isDebugEnabled() ) { log.debug( "getMultiple [" + keys + "] from cache [" + cacheName + "] requesterId = [" + requesterId + "] fromCluster = " + fromCluster ); } CacheListeners<K, V> cacheDesc = getCacheListeners( cacheName ); Map<K, ICacheElement<K, V>> elements = getMultipleFromCacheListeners( keys, null, fromCluster, cacheDesc ); return elements; }
boolean fromCluster = isRequestFromCluster( requesterId ); try cacheDesc = getCacheListeners( cacheName ); return getMatchingFromCacheListeners( pattern, fromCluster, cacheDesc );
boolean fromCluster = isRequestFromCluster( requesterId ); try cacheDesc = getCacheListeners( cacheName ); element = getFromCacheListeners( key, fromCluster, cacheDesc, element ); return element;
RemoteCacheServer<String, Long> server = new RemoteCacheServer<String, Long>( rcsa ); server.addCacheListener( cacheName, mockListener ); server.update( element, 9999 ); server.shutdown();
/** * Add a listener. Pass the id of 0, verify that the server sets a new listener id. Do another * and verify that the second gets an id of 2. Call remove Listener and verify that it is * removed. * <p> * @throws Exception */ public void testAddListener_ToAllThenRemove_clusterType() throws Exception { MockRemoteCacheListener<String, String> mockListener1 = new MockRemoteCacheListener<String, String>(); mockListener1.remoteType = RemoteType.CLUSTER; MockRemoteCacheListener<String, String> mockListener2 = new MockRemoteCacheListener<String, String>(); mockListener2.remoteType = RemoteType.CLUSTER; String cacheName = "testAddListenerToAllThenRemove"; // DO WORK server.addCacheListener( cacheName, mockListener1 ); server.addCacheListener( cacheName, mockListener2 ); // VERIFY assertEquals( "Wrong number of listeners.", 0, server.getCacheListeners( cacheName ).eventQMap.size() ); assertEquals( "Wrong number of listeners.", 2, server.getClusterListeners( cacheName ).eventQMap.size() ); assertEquals( "Wrong listener id.", 1, mockListener1.getListenerId() ); assertEquals( "Wrong listener id.", 2, mockListener2.getListenerId() ); // DO WORK server.removeCacheListener( cacheName, mockListener1.getListenerId() ); assertEquals( "Wrong number of listeners.", 1, server.getClusterListeners( cacheName ).eventQMap.size() ); assertNull( "Should be no entry in the ip map.", server.getExtraInfoForRequesterId( 1 ) ); }
cacheListeners = (CacheListeners<KK, VV>)getClusterListeners( cacheName ); cacheListeners = (CacheListeners<KK, VV>)getCacheListeners( cacheName ); cleanupEventQMap( eventQMap ); long listenerIdB = nextListenerId(); if ( log.isDebugEnabled() ) logApplicationEvent( "RemoteCacheServer", "addCacheListener", message ); if ( log.isInfoEnabled() ) logApplicationEvent( "RemoteCacheServer", "addCacheListener", message ); if ( log.isInfoEnabled() )
/** * Add a listener. Pass the id of 0, verify that the server sets a new listener id. Do another * and verify that the second gets an id of 2. Call remove Listener and verify that it is * removed. * <p> * @throws Exception */ public void testAddListener_ToAllThenRemove() throws Exception { MockRemoteCacheListener<String, String> mockListener1 = new MockRemoteCacheListener<String, String>(); MockRemoteCacheListener<String, String> mockListener2 = new MockRemoteCacheListener<String, String>(); String cacheName = "testAddListenerToAllThenRemove"; // DO WORK server.addCacheListener( cacheName, mockListener1 ); server.addCacheListener( cacheName, mockListener2 ); // VERIFY assertEquals( "Wrong number of listeners.", 2, server.getCacheListeners( cacheName ).eventQMap.size() ); assertEquals( "Wrong listener id.", 1, mockListener1.getListenerId() ); assertEquals( "Wrong listener id.", 2, mockListener2.getListenerId() ); // DO WORK server.removeCacheListener( cacheName, mockListener1.getListenerId() ); assertEquals( "Wrong number of listeners.", 1, server.getCacheListeners( cacheName ).eventQMap.size() ); }
server.addCacheListener(regionName, listener); int numPutsPrior = server.getPutCount(); ICacheElement<String, String> element = new CacheElement<String, String>(regionName, "key", "value"); cache.update(element); assertEquals("Wrong number of puts", 1, server.getPutCount() - numPutsPrior); assertEquals("Wrong number of puts to listener.", 1, listener.putCount); System.out.println(server.getStats()); throw e; server.removeCacheListener(listener);
/** * Add a listener. Pass the id of 0, verify that the server sets a new listener id. Do another * and verify that the second gets an id of 2. * <p> * @throws Exception */ public void testAddListenerToCache_LOCALtype() throws Exception { MockRemoteCacheListener<String, String> mockListener1 = new MockRemoteCacheListener<String, String>(); mockListener1.remoteType = RemoteType.LOCAL; mockListener1.localAddress = expectedIp1; MockRemoteCacheListener<String, String> mockListener2 = new MockRemoteCacheListener<String, String>(); mockListener1.remoteType = RemoteType.LOCAL; mockListener2.localAddress = expectedIp2; String cacheName = "testAddListener"; // DO WORK server.addCacheListener( cacheName, mockListener1 ); server.addCacheListener( cacheName, mockListener2 ); // VERIFY assertEquals( "Wrong listener id.", 1, mockListener1.getListenerId() ); assertEquals( "Wrong listener id.", 2, mockListener2.getListenerId() ); assertEquals( "Wrong ip.", expectedIp1, server.getExtraInfoForRequesterId( 1 ) ); assertEquals( "Wrong ip.", expectedIp2, server.getExtraInfoForRequesterId( 2 ) ); }
logUpdateInfo( item ); CacheListeners<K, V> cacheDesc = getCacheListeners( item.getCacheName() ); boolean fromCluster = isRequestFromCluster( requesterId ); ICacheEventQueue<K, V>[] qlist = getEventQList( cacheDesc, requesterId ); if ( log.isDebugEnabled() )
/** * Verify event log calls. * <p> * @throws Exception */ public void testRemove_simple() throws Exception { MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger(); server.setCacheEventLogger( cacheEventLogger ); // DO WORK server.remove( "region", "key" ); // VERIFY assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls ); assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls ); }
/** * Verify event log calls. * <p> * @throws Exception */ public void testGet_simple() throws Exception { MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger(); server.setCacheEventLogger( cacheEventLogger ); // DO WORK server.get( "region", "key" ); // VERIFY assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls ); assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls ); }
/** * Verify event log calls. * <p> * @throws Exception */ public void testGetMatching_simple() throws Exception { MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger(); server.setCacheEventLogger( cacheEventLogger ); // DO WORK server.getMatching( "region", "pattern", 0 ); // VERIFY assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls ); assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls ); }
/** * Verify event log calls. * <p> * @throws Exception */ public void testRemoveAll_simple() throws Exception { MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger(); server.setCacheEventLogger( cacheEventLogger ); // DO WORK server.removeAll( "region" ); // VERIFY assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls ); assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls ); } }
/** * Verify event log calls. * <p> * @throws Exception */ public void testGetMultiple_simple() throws Exception { MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger(); server.setCacheEventLogger( cacheEventLogger ); // DO WORK server.getMultiple( "region", new HashSet<String>() ); // VERIFY assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls ); assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls ); }
/** * Register a listener and then verify that it is called when we put using a different listener * id. * @throws Exception */ public void testSimpleRegisterListenerAndRemove() throws Exception { MockRemoteCacheListener<String, String> mockListener = new MockRemoteCacheListener<String, String>(); String cacheName = "testSimpleRegisterListenerAndPut"; server.addCacheListener( cacheName, mockListener ); // DO WORK int numToPut = 10; for ( int i = 0; i < numToPut; i++ ) { // use a junk listener id server.remove( cacheName, String.valueOf( i ), 9999 ); } Thread.sleep( 100 ); Thread.yield(); Thread.sleep( 100 ); // VERIFY assertEquals( "Wrong number of items removed from listener.", numToPut, mockListener.removedKeys.size() ); for ( int i = 0; i < numToPut; i++ ) { assertEquals( "Wrong key.", String.valueOf( i ), mockListener.removedKeys.get( i ) ); } }
server.addCacheListener(regionName, listener); int numPutsPrior = server.getPutCount(); int numToPut = 100; for (int i = 0; i < numToPut; i++) assertEquals("Wrong number of puts", numToPut, server.getPutCount() - numPutsPrior); assertEquals("Wrong number of puts to listener.", numToPut, listener.putCount); System.out.println(server.getStats()); throw e;