package org.radargun.service; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Map; import com.hazelcast.core.IMap; import com.hazelcast.core.Instance; import org.radargun.traits.CacheInformation; /** * @author Radim Vansa <rvansa@redhat.com> */ public class HazelcastCacheInfo implements CacheInformation { protected final HazelcastService service; public HazelcastCacheInfo(HazelcastService service) { this.service = service; } @Override public String getDefaultCacheName() { return service.mapName; } @Override public Collection<String> getCacheNames() { ArrayList<String> names = new ArrayList<String>(); for (Instance instance : service.hazelcastInstance.getInstances()) { if (instance.getInstanceType().isMap()) { names.add(((IMap) instance).getName()); } } return names; } @Override public Cache getCache(String cacheName) { return new Cache(service.getMap(cacheName)); } protected class Cache implements CacheInformation.Cache { protected final IMap map; public Cache(IMap map) { this.map = map; } @Override public long getOwnedSize() { return map.getLocalMapStats().getOwnedEntryCount(); } @Override public long getLocallyStoredSize() { return getMemoryStoredSize(); } @Override public long getMemoryStoredSize() { return map.getLocalMapStats().getOwnedEntryCount() + map.getLocalMapStats().getBackupEntryCount(); } @Override public long getTotalSize() { return map.size(); } @Override public Map<?, Long> getStructuredSize() { return Collections.singletonMap(map.getName(), getOwnedSize()); } @Override public int getNumReplicas() { return service.hazelcastInstance.getConfig().getMapConfig(map.getName()).getBackupCount() + 1; } @Override public int getEntryOverhead() { return -1; } } }