package io.airlift.stats; import io.airlift.testing.TestingTicker; import org.testng.annotations.Test; import java.util.concurrent.TimeUnit; import static org.testng.Assert.assertTrue; public class TestDecayCounter { @Test public void testCountDecays() { TestingTicker ticker = new TestingTicker(); DecayCounter counter = new DecayCounter(ExponentialDecay.oneMinute(), ticker); counter.add(1); ticker.increment(1, TimeUnit.MINUTES); assertTrue(Math.abs(counter.getCount() - 1 / Math.E) < 1e-9); } @Test public void testAddAfterRescale() { TestingTicker ticker = new TestingTicker(); DecayCounter counter = new DecayCounter(ExponentialDecay.oneMinute(), ticker); counter.add(1); ticker.increment(1, TimeUnit.MINUTES); counter.add(2); double expected = 2 + 1 / Math.E; assertTrue(Math.abs(counter.getCount() - expected) < 1e-9); } }