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()); }
statsForGarbageCollected[EVICTION_COUNT.ordinal()] += stats.evictionCount(); statsForGarbageCollected[EVICTION_WEIGHT.ordinal()] += stats.evictionWeight(); statsForGarbageCollected[LOAD_SUCCESS_COUNT.ordinal()] += stats.loadSuccessCount(); statsForGarbageCollected[LOAD_FAILURE_COUNT.ordinal()] += stats.loadFailureCount(); statsForGarbageCollected[TOTAL_LOAD_TIME.ordinal()] += stats.totalLoadTime();
void add(Cache<?, ?> cache, Ticker ticker) { synchronized (cacheRefs) { for (CacheReference ref : cacheRefs) { if (ref.get() == cache) { // Do not aggregate more than once for the same instance. return; } } cacheRefs.add(new CacheReference(cache, ticker)); } if (cache instanceof LoadingCache && hasLoadingCache.compareAndSet(false, true)) { // Add the following meters only for LoadingCache and only once. final String loads = idPrefix.name("loads"); parent.more().counter(loads, idPrefix.tags("result", "success"), this, func(LOAD_SUCCESS_COUNT, ref -> ref.cacheStats.loadSuccessCount())); parent.more().counter(loads, idPrefix.tags("result", "failure"), this, func(LOAD_FAILURE_COUNT, ref -> ref.cacheStats.loadFailureCount())); parent.more().counter(idPrefix.name("loadDuration"), idPrefix.tags(), this, func(TOTAL_LOAD_TIME, ref -> ref.cacheStats.totalLoadTime())); } }
/** * 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()); }
@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"); } }
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)); }
/** * 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()); }
@Override public void serialize(CacheStats value, JsonGenerator gen, SerializerProvider provider) throws IOException { gen.writeStartObject(); gen.writeNumberField("requestCount", value.requestCount()); gen.writeNumberField("hitCount", value.hitCount()); gen.writeNumberField("hitRate", value.hitRate()); gen.writeNumberField("missCount", value.missCount()); gen.writeNumberField("missRate", value.missRate()); gen.writeNumberField("loadCount", value.loadCount()); gen.writeNumberField("loadSuccessCount", value.loadSuccessCount()); gen.writeNumberField("loadFailureCount", value.loadFailureCount()); gen.writeNumberField("loadFailureRate", value.loadFailureRate()); gen.writeNumberField("totalLoadTime", value.totalLoadTime()); gen.writeNumberField("averageLoadPenalty", value.averageLoadPenalty()); gen.writeNumberField("evictionCount", value.evictionCount()); gen.writeNumberField("evictionWeight", value.evictionWeight()); gen.writeEndObject(); } }
@Override public void serialize(CacheStats value, JsonGenerator gen, SerializerProvider provider) throws IOException { gen.writeStartObject(); gen.writeNumberField("requestCount", value.requestCount()); gen.writeNumberField("hitCount", value.hitCount()); gen.writeNumberField("hitRate", value.hitRate()); gen.writeNumberField("missCount", value.missCount()); gen.writeNumberField("missRate", value.missRate()); gen.writeNumberField("loadCount", value.loadCount()); gen.writeNumberField("loadSuccessCount", value.loadSuccessCount()); gen.writeNumberField("loadFailureCount", value.loadFailureCount()); gen.writeNumberField("loadFailureRate", value.loadFailureRate()); gen.writeNumberField("totalLoadTime", value.totalLoadTime()); gen.writeNumberField("averageLoadPenalty", value.averageLoadPenalty()); gen.writeNumberField("evictionCount", value.evictionCount()); gen.writeNumberField("evictionWeight", value.evictionWeight()); gen.writeEndObject(); } }
@Override public void serialize(CacheStats value, JsonGenerator gen, SerializerProvider provider) throws IOException { gen.writeStartObject(); gen.writeNumberField("requestCount", value.requestCount()); gen.writeNumberField("hitCount", value.hitCount()); gen.writeNumberField("hitRate", value.hitRate()); gen.writeNumberField("missCount", value.missCount()); gen.writeNumberField("missRate", value.missRate()); gen.writeNumberField("loadCount", value.loadCount()); gen.writeNumberField("loadSuccessCount", value.loadSuccessCount()); gen.writeNumberField("loadFailureCount", value.loadFailureCount()); gen.writeNumberField("loadFailureRate", value.loadFailureRate()); gen.writeNumberField("totalLoadTime", value.totalLoadTime()); gen.writeNumberField("averageLoadPenalty", value.averageLoadPenalty()); gen.writeNumberField("evictionCount", value.evictionCount()); gen.writeNumberField("evictionWeight", value.evictionWeight()); gen.writeEndObject(); } }
row.put(JMX_PN_VALUE, String.valueOf(cacheStats.loadSuccessCount())); tabularData.put(new CompositeDataSupport(cacheEntryType, row));
@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()); }
public void printCacheStat(String name, Cache<?,?> cache){ CacheStats s = cache.stats(); System.out.printf( "%35s: %6d (EV) %6d (HC) %5.1f (HR) %6d (LC) %6d (LFC) %5.1f (LFR) %6d (LSC) %6d (MC) %5.1f (MR) %6d (RC) %10.1f (ALP) \n", //"%35s: %12.0f (ALP) %f (HR) %d (RC)\n", name, s.evictionCount(), s.hitCount(), s.hitRate(), s.loadCount(), s.loadFailureCount(), s.loadFailureRate(), s.loadSuccessCount(), s.missCount(), s.missRate(), s.requestCount(), s.averageLoadPenalty()); }