return resolvedMaxCacheSize; final String maximumSizeSystemPropertyArg = getMaximumSizeSystemProperty(); final String maximumSizeEnvVariableArg = getMaximumSizeEnvVariable(); maximumSizeSystemProperty = parseCacheSizeArgument(maximumSizeSystemPropertyArg); if (maximumSizeSystemProperty > -1L) { LOG.info(String.format( long maximumSizeEnvVariable; try { maximumSizeEnvVariable = parseCacheSizeArgument(maximumSizeEnvVariableArg); if (maximumSizeEnvVariable > -1L) { LOG.info(String.format( long absoluteMaxCacheSize = getAbsoluteMaximumSize(); if (absoluteMaxCacheSize < maxCacheSize) { LOG.warn("cache size is too big: {}, maximum allowed: {}", maxCacheSize, maxCacheSize = getCacheSizePercent(percent);
@Override public double getMaximumSizePercent() { final long maxMemory = getMaximumHeapSize(); double percent = (double) getMaximumSize() / maxMemory; return percent; }
@Override public double getSizeMB() { return getSizeBytes() / (1024D * 1024D); }
final SharedCache sharedCache() { if (_SHARED_CACHE == null) { synchronized (this) { if (_SHARED_CACHE == null) { resolvedMaxCacheSize = resolveDefaultMaxSize(); setMaximumSize(resolvedMaxCacheSize); } } } return _SHARED_CACHE; }
@Override public void setMaximumSizePercent(double percent) { long maxSize = getCacheSizePercent(percent); setMaximumSize(maxSize); }
public @Test void testStats() { SharedCache sharedCache = mock(SharedCache.class); CacheStats stats = new CacheStats(1, 1, 1, 1, 1, 1); when(sharedCache.getStats()).thenReturn(stats); when(sharedCache.sizeBytes()).thenReturn(1000L); when(sharedCache.objectCount()).thenReturn(100L); cacheManager._SHARED_CACHE = sharedCache; assertEquals(1, cacheManager.getEvictionCount()); assertEquals(1, cacheManager.getMissCount()); assertEquals(0.5d, cacheManager.getMissRate(), 1e-9); assertEquals(1, cacheManager.getHitCount()); assertEquals(0.5d, cacheManager.getHitRate(), 1e-9); assertEquals(1000, cacheManager.getSizeBytes()); assertEquals(100, cacheManager.getSize()); assertEquals(1000 / (1024D * 1024D), cacheManager.getSizeMB(), 1e-9); } }
public @Test void resolveDefaultMaxSizeInvalidTooBigArgumentFallsBackToDefaultPercent() { final long maxHeapSize = 1024; doReturn(maxHeapSize).when(cacheManager).getMaximumHeapSize(); doReturn("1025").when(cacheManager).getMaximumSizeSystemProperty(); doReturn("1.5K").when(cacheManager).getMaximumSizeEnvVariable(); double expected = maxHeapSize * CacheManagerBean.DEFAULT_CACHE_SIZE_PERCENT; assertEquals(expected, cacheManager.resolveDefaultMaxSize(), 1e-9); }
public @Test void getDefaultSizeMB() { final long maxHeapSize = 10 * 1024 * 1024; doReturn(maxHeapSize).when(cacheManager).getMaximumHeapSize(); doReturn("").when(cacheManager).getMaximumSizeSystemProperty(); doReturn("").when(cacheManager).getMaximumSizeEnvVariable(); double expected = 10 * CacheManagerBean.DEFAULT_CACHE_SIZE_PERCENT; assertEquals(expected, cacheManager.getDefaultSizeMB(), 1e-9); }
public @Test void resolveDefaultMaxSize() { doReturn(null).when(cacheManager).getMaximumSizeSystemProperty(); doReturn(null).when(cacheManager).getMaximumSizeEnvVariable(); assertDefaultMaxSizeDefaultValue(); }
public @Test void resolveDefaultMaxSizeInvalidSysPropFallsBackToEnvVariable() { doReturn("-1G").when(cacheManager).getMaximumSizeSystemProperty(); doReturn("1024").when(cacheManager).getMaximumSizeEnvVariable(); assertEquals(1024, cacheManager.resolveDefaultMaxSize(), 1e-9); }
public @Test void parseCacheSizeArgumentInvalidArg() { assertIAE(() -> cacheManager.parseCacheSizeArgument("1GB")); assertIAE(() -> cacheManager.parseCacheSizeArgument("G1")); assertIAE(() -> cacheManager.parseCacheSizeArgument("anotherInvalidValue")); assertIAE(() -> cacheManager.parseCacheSizeArgument("K")); assertIAE(() -> cacheManager.parseCacheSizeArgument("NaN")); assertIAE(() -> cacheManager.parseCacheSizeArgument("-1")); assertIAE(() -> cacheManager.parseCacheSizeArgument("-0.000001K")); }
public @Test void setMaximumSizePercent() { final long maxHeapSize = 10 * 1024 * 1024; doReturn(maxHeapSize).when(cacheManager).getMaximumHeapSize(); cacheManager.setMaximumSizePercent(0.0); assertEquals(0, cacheManager.getMaximumSize(), 1e-9); cacheManager.setMaximumSizePercent(0.1); assertEquals(maxHeapSize * 0.1, cacheManager.getMaximumSize(), 1e-9); cacheManager.setMaximumSizePercent(0.9); assertEquals(maxHeapSize * 0.9, cacheManager.getMaximumSize(), 1e-9); ex.expect(IllegalArgumentException.class); cacheManager.setMaximumSizePercent(0.91); }
public @Test void getCacheSizePercent() { final long maxHeapSize = 1024 * 1024; doReturn(maxHeapSize).when(cacheManager).getMaximumHeapSize(); assertEquals(0L, cacheManager.getCacheSizePercent(0)); assertEquals(maxHeapSize / 2, cacheManager.getCacheSizePercent(0.5)); }
public @Test void parseCacheSizeValidPercent() { final long maxHeapSize = 1000; doReturn(maxHeapSize).when(cacheManager).getMaximumHeapSize(); assertEquals(0L, cacheManager.parseCacheSizeArgument("0")); assertEquals(100L, cacheManager.parseCacheSizeArgument("0.1")); assertEquals(500L, cacheManager.parseCacheSizeArgument(".5")); assertEquals(900L, cacheManager.parseCacheSizeArgument("0.9")); }
public @Test void release() { ObjectCache cache1 = cacheManager.acquire("id1"); ObjectCache cache2 = cacheManager.acquire("id1"); ObjectCache cache3 = cacheManager.acquire("id2"); assertNotNull(cache1); assertSame(cache1, cache2); assertNotNull(cache3); assertNotSame(cache1, cache3); cacheManager.release(cache1); cacheManager.release(cache2); ObjectCache cache4 = cacheManager.acquire("id1"); assertNotNull(cache4); assertNotSame(cache1, cache4); ObjectCache cache5 = cacheManager.acquire("id2"); assertSame(cache3, cache5); }
resources.trySetThreadPoolSize(threadPoolSize); this.sharedCache = CacheManager.INSTANCE.acquire(getCacheIdentifier(connectionConfig));
long sizeBytes; if (isNullOrEmpty(unit) && parsedNumber <= 1) { sizeBytes = getCacheSizePercent(parsedNumber); } else { final int pow = powers.get(unit);
public @Test void getAbsoluteMaximumSizeMB() { final long maxHeapSize = 10 * 1024 * 1024; doReturn(maxHeapSize).when(cacheManager).getMaximumHeapSize(); assertEquals("AbsoluteMaximumSizeMB should be 90% of max heap size", 9, cacheManager.getAbsoluteMaximumSizeMB(), 1e-9); }
public @Test void setMaximumSizeMB() { final long maxSize = 10 * 1024 * 1024; cacheManager.setMaximumSizeMB(10); assertEquals(maxSize, cacheManager.getMaximumSize(), 1e-9); }
long getAbsoluteMaximumSize() { double maxMemory = getMaximumHeapSize(); return (long) (maxMemory * 0.9); }