public long misses() { return stats.missCount(); }
private static void checkStats(CacheStats stats, long requestCount, long hitCount, double hitRate, long missCount, double missRate, long loadSuccessCount, long loadFailureCount, double loadExceptionRate, long loadCount, long totalLoadTime, double averageLoadPenalty, long evictionCount, long evictionWeight) { assertThat(stats.requestCount(), is(requestCount)); assertThat(stats.hitCount(), is(hitCount)); assertThat(stats.hitRate(), is(hitRate)); assertThat(stats.missCount(), is(missCount)); assertThat(stats.missRate(), is(missRate)); assertThat(stats.loadSuccessCount(), is(loadSuccessCount)); assertThat(stats.loadFailureCount(), is(loadFailureCount)); assertThat(stats.loadFailureRate(), is(loadExceptionRate)); assertThat(stats.totalLoadTime(), is(totalLoadTime)); assertThat(stats.averageLoadPenalty(), is(averageLoadPenalty)); assertThat(stats.evictionCount(), is(evictionCount)); assertThat(stats.evictionWeight(), is(evictionWeight)); }
@Override public CacheStats stats() { com.github.benmanes.caffeine.cache.stats.CacheStats stats = cache.stats(); return new CacheStats(stats.hitCount(), stats.missCount(), stats.loadSuccessCount(), stats.loadFailureCount(), stats.totalLoadTime(), stats.evictionCount()); }
@Override public org.apache.druid.client.cache.CacheStats getStats() { final CacheStats stats = cache.stats(); final long size = cache .policy().eviction() .map(eviction -> eviction.isWeighted() ? eviction.weightedSize() : OptionalLong.empty()) .orElse(OptionalLong.empty()).orElse(-1); return new org.apache.druid.client.cache.CacheStats( stats.hitCount(), stats.missCount(), cache.estimatedSize(), size, stats.evictionCount(), 0, stats.loadFailureCount() ); }
statsForGarbageCollected[MISS_COUNT.ordinal()] += stats.missCount(); statsForGarbageCollected[EVICTION_COUNT.ordinal()] += stats.evictionCount(); statsForGarbageCollected[EVICTION_WEIGHT.ordinal()] += stats.evictionWeight();
/** * Increments all counters by the values in {@code other}. * * @param other the counter to increment from */ public void incrementBy(@NonNull StatsCounter other) { CacheStats otherStats = other.snapshot(); hitCount.add(otherStats.hitCount()); missCount.add(otherStats.missCount()); loadSuccessCount.add(otherStats.loadSuccessCount()); loadFailureCount.add(otherStats.loadFailureCount()); totalLoadTime.add(otherStats.totalLoadTime()); evictionCount.add(otherStats.evictionCount()); evictionWeight.add(otherStats.evictionWeight()); }
CaffeineMetrics(MeterRegistry parent, MeterIdPrefix idPrefix) { this.parent = requireNonNull(parent, "parent"); this.idPrefix = requireNonNull(idPrefix, "idPrefix"); final String requests = idPrefix.name("requests"); parent.more().counter(requests, idPrefix.tags("result", "hit"), this, func(HIT_COUNT, ref -> ref.cacheStats.hitCount())); parent.more().counter(requests, idPrefix.tags("result", "miss"), this, func(MISS_COUNT, ref -> ref.cacheStats.missCount())); parent.more().counter(idPrefix.name("evictions"), idPrefix.tags(), this, func(EVICTION_COUNT, ref -> ref.cacheStats.evictionCount())); parent.more().counter(idPrefix.name("evictionWeight"), idPrefix.tags(), this, func(EVICTION_WEIGHT, ref -> ref.cacheStats.evictionWeight())); parent.gauge(idPrefix.name("estimatedSize"), idPrefix.tags(), this, func(null, ref -> ref.estimatedSize)); }
@Override protected boolean matchesSafely(CacheContext context, Description description) { if (!context.isRecordingStats()) { return true; } CacheStats stats = context.stats(); desc = new DescriptionBuilder(description); ForkJoinPool.commonPool().awaitQuiescence(10, TimeUnit.SECONDS); switch (type) { case HIT: return desc.expectThat(type.name(), stats.hitCount(), is(count)).matches(); case MISS: return desc.expectThat(type.name(), stats.missCount(), is(count)).matches(); case EVICTION_COUNT: return desc.expectThat(type.name(), stats.evictionCount(), is(count)).matches(); case EVICTION_WEIGHT: return desc.expectThat(type.name(), stats.evictionWeight(), is(count)).matches(); case LOAD_SUCCESS: return desc.expectThat(type.name(), stats.loadSuccessCount(), is(count)).matches(); case LOAD_FAILURE: return desc.expectThat(type.name(), stats.loadFailureCount(), is(count)).matches(); default: throw new AssertionError("Unknown stats type"); } }
/** * Gets the total number of times the cache lookup method returned a newly compiled script. */ public long getClassCacheMissCount() { return classMap.stats().missCount(); }
/** * Gets the total number of times the cache lookup method returned a cached or uncached value. */ public long getClassCacheRequestCount() { return classMap.stats().missCount(); }
public void testEmpty() { CacheStats stats = new CacheStats(0, 0, 0, 0, 0, 0, 0); assertEquals(0, stats.requestCount()); assertEquals(0, stats.hitCount()); assertEquals(1.0, stats.hitRate()); assertEquals(0, stats.missCount()); assertEquals(0.0, stats.missRate()); assertEquals(0, stats.loadSuccessCount()); assertEquals(0, stats.loadFailureCount()); assertEquals(0.0, stats.loadFailureRate()); assertEquals(0, stats.loadCount()); assertEquals(0, stats.totalLoadTime()); assertEquals(0.0, stats.averageLoadPenalty()); assertEquals(0, stats.evictionCount()); }
public void testSingle() { CacheStats stats = new CacheStats(11, 13, 17, 19, 23, 27, 54); assertEquals(24, stats.requestCount()); assertEquals(11, stats.hitCount()); assertEquals(11.0/24, stats.hitRate()); assertEquals(13, stats.missCount()); assertEquals(13.0/24, stats.missRate()); assertEquals(17, stats.loadSuccessCount()); assertEquals(19, stats.loadFailureCount()); assertEquals(19.0/36, stats.loadFailureRate()); assertEquals(17 + 19, stats.loadCount()); assertEquals(23, stats.totalLoadTime()); assertEquals(23.0/(17 + 19), stats.averageLoadPenalty()); assertEquals(27, stats.evictionCount()); assertEquals(54, stats.evictionWeight()); }
public void testPlus() { CacheStats one = new CacheStats(11, 13, 15, 13, 11, 9, 18); CacheStats two = new CacheStats(53, 47, 41, 39, 37, 35, 70); CacheStats sum = two.plus(one); assertEquals(124, sum.requestCount()); assertEquals(64, sum.hitCount()); assertEquals(64.0/124, sum.hitRate()); assertEquals(60, sum.missCount()); assertEquals(60.0/124, sum.missRate()); assertEquals(56, sum.loadSuccessCount()); assertEquals(52, sum.loadFailureCount()); assertEquals(52.0/108, sum.loadFailureRate()); assertEquals(56 + 52, sum.loadCount()); assertEquals(48, sum.totalLoadTime()); assertEquals(48.0/(56 + 52), sum.averageLoadPenalty()); assertEquals(44, sum.evictionCount()); assertEquals(88, sum.evictionWeight()); assertEquals(sum, one.plus(two)); } }
public void testMinus() { CacheStats one = new CacheStats(11, 13, 17, 19, 23, 27, 54); CacheStats two = new CacheStats(53, 47, 43, 41, 37, 31, 62); CacheStats diff = two.minus(one); assertEquals(76, diff.requestCount()); assertEquals(42, diff.hitCount()); assertEquals(42.0/76, diff.hitRate()); assertEquals(34, diff.missCount()); assertEquals(34.0/76, diff.missRate()); assertEquals(26, diff.loadSuccessCount()); assertEquals(22, diff.loadFailureCount()); assertEquals(22.0/48, diff.loadFailureRate()); assertEquals(26 + 22, diff.loadCount()); assertEquals(14, diff.totalLoadTime()); assertEquals(14.0/(26 + 22), diff.averageLoadPenalty()); assertEquals(4, diff.evictionCount()); assertEquals(8, diff.evictionWeight()); assertEquals(new CacheStats(0, 0, 0, 0, 0, 0, 0), one.minus(two)); }
cacheMissTotal.addMetric(cacheName, stats.missCount()); cacheRequestsTotal.addMetric(cacheName, stats.requestCount()); cacheEvictionTotal.addMetric(cacheName, stats.evictionCount());
/** * Increments all counters by the values in {@code other}. * * @param other the counter to increment from */ public void incrementBy(@Nonnull StatsCounter other) { CacheStats otherStats = other.snapshot(); hitCount.add(otherStats.hitCount()); missCount.add(otherStats.missCount()); loadSuccessCount.add(otherStats.loadSuccessCount()); loadFailureCount.add(otherStats.loadFailureCount()); totalLoadTime.add(otherStats.totalLoadTime()); evictionCount.add(otherStats.evictionCount()); evictionWeight.add(otherStats.evictionWeight()); }
/** * Gets the total number of times the cache lookup method returned a cached or uncached value. */ public long getClassCacheRequestCount() { return classMap.stats().missCount(); }
/** * The cache should continue to hit, even if variables not used in the cached expression change. */ @Test public void testUnrelatedVariableChange() { // expect miss Object result = execute("TO_UPPER(name)", contextWithCache); assertEquals("BLAH", result); assertEquals(1, cache.stats().requestCount()); assertEquals(1, cache.stats().missCount()); assertEquals(0, cache.stats().hitCount()); // add an irrelevant variable that is not used in the expression fields.put("unrelated_var_1", "true"); fields.put("unrelated_var_2", 22); // still expect a hit result = execute("TO_UPPER(name)", contextWithCache); assertEquals("BLAH", result); assertEquals(2, cache.stats().requestCount()); assertEquals(1, cache.stats().missCount()); assertEquals(1, cache.stats().hitCount()); }
/** * Running the same expression multiple times should hit the cache. */ @Test public void testWithCache() { Object result = execute("TO_UPPER(name)", contextWithCache); assertEquals("BLAH", result); assertEquals(1, cache.stats().requestCount()); assertEquals(1, cache.stats().missCount()); assertEquals(0, cache.stats().hitCount()); result = execute("TO_UPPER(name)", contextWithCache); assertEquals("BLAH", result); assertEquals(2, cache.stats().requestCount()); assertEquals(1, cache.stats().missCount()); assertEquals(1, cache.stats().hitCount()); result = execute("TO_UPPER(name)", contextWithCache); assertEquals("BLAH", result); assertEquals(3, cache.stats().requestCount()); assertEquals(1, cache.stats().missCount()); assertEquals(2, cache.stats().hitCount()); }
@Override public CacheStats stats() { com.github.benmanes.caffeine.cache.stats.CacheStats stats = cache.stats(); return new CacheStats(stats.hitCount(), stats.missCount(), stats.loadSuccessCount(), stats.loadFailureCount(), stats.totalLoadTime(), stats.evictionCount()); }