@Override public void record(long key) { Object value = cache.get(key); if (value == null) { if (cache.size() == cache.getMaxSize()) { policyStats.recordEviction(); } cache.put(key, key); policyStats.recordMiss(); } else { policyStats.recordHit(); } }
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public int getExpectedConnectionsCount() { return this.expectedPlayers.size(); }
@Test @Disabled void shouldEventuallyCleanUpExpiredKeys() throws Exception { ImmutableSet<RequestLimitRule> rules = ImmutableSet.of(RequestLimitRule.of(Duration.ofSeconds(1), 5)); RequestRateLimiter requestRateLimiter = getRateLimiter(rules, timeBandit); String key = "ip:127.0.0.5"; IntStream.rangeClosed(1, 5).forEach(value -> { timeBandit.addUnixTimeMilliSeconds(100L); assertThat(requestRateLimiter.overLimitWhenIncremented(key)).isFalse(); }); while (expiryingKeyMap.size() != 0) { Thread.sleep(50); } assertThat(expiryingKeyMap.size()).isZero(); }
@Override public void record(long key) { Object value = cache.get(key); if (value == null) { if (cache.size() == cache.getMaxSize()) { policyStats.recordEviction(); } cache.put(key, key); policyStats.recordMiss(); } else { policyStats.recordHit(); } }