@Test
public void testRescaleWithDecayKeepsCompactTree()
throws Exception
{
TestingTicker ticker = new TestingTicker();
int targetAgeInSeconds = (int) (QuantileDigest.RESCALE_THRESHOLD_SECONDS);
QuantileDigest digest = new QuantileDigest(0.01,
ExponentialDecay.computeAlpha(QuantileDigest.ZERO_WEIGHT_THRESHOLD / 2, targetAgeInSeconds),
ticker, true);
for (int i = 0; i < 10; ++i) {
digest.add(i);
digest.validate();
// bump the clock to make all previous values decay to ~0
ticker.increment(targetAgeInSeconds, TimeUnit.SECONDS);
}
assertEquals(digest.getTotalNodeCount(), 1);
}