diff --git a/sentinel-core/src/test/java/com/alibaba/csp/sentinel/slots/statistic/metric/OccupiableBucketLeapArrayTest.java b/sentinel-core/src/test/java/com/alibaba/csp/sentinel/slots/statistic/metric/OccupiableBucketLeapArrayTest.java index 5c6cdbd8..08094f14 100644 --- a/sentinel-core/src/test/java/com/alibaba/csp/sentinel/slots/statistic/metric/OccupiableBucketLeapArrayTest.java +++ b/sentinel-core/src/test/java/com/alibaba/csp/sentinel/slots/statistic/metric/OccupiableBucketLeapArrayTest.java @@ -6,6 +6,7 @@ import java.util.concurrent.CountDownLatch; import com.alibaba.csp.sentinel.slots.statistic.base.WindowWrap; import com.alibaba.csp.sentinel.slots.statistic.data.MetricBucket; import com.alibaba.csp.sentinel.slots.statistic.metric.occupy.OccupiableBucketLeapArray; +import com.alibaba.csp.sentinel.test.AbstractTimeBasedTest; import com.alibaba.csp.sentinel.util.TimeUtil; import org.junit.Test; @@ -17,7 +18,7 @@ import static org.junit.Assert.assertEquals; * * @author jialiang.linjl */ -public class OccupiableBucketLeapArrayTest { +public class OccupiableBucketLeapArrayTest extends AbstractTimeBasedTest { private final int windowLengthInMs = 200; private final int intervalInSec = 2; @@ -26,7 +27,8 @@ public class OccupiableBucketLeapArrayTest { @Test public void testNewWindow() { - long currentTime = TimeUtil.currentTimeMillis(); + long currentTime = System.currentTimeMillis(); + setCurrentMillis(currentTime); OccupiableBucketLeapArray leapArray = new OccupiableBucketLeapArray(sampleCount, intervalInMs); WindowWrap currentWindow = leapArray.currentWindow(currentTime); @@ -42,7 +44,8 @@ public class OccupiableBucketLeapArrayTest { @Test public void testWindowInOneInterval() { OccupiableBucketLeapArray leapArray = new OccupiableBucketLeapArray(sampleCount, intervalInMs); - long currentTime = TimeUtil.currentTimeMillis(); + long currentTime = System.currentTimeMillis(); + setCurrentMillis(currentTime); WindowWrap currentWindow = leapArray.currentWindow(currentTime); currentWindow.value().addPass(1); @@ -65,7 +68,8 @@ public class OccupiableBucketLeapArrayTest { @Test public void testMultiThreadUpdateEmptyWindow() throws Exception { - final long time = TimeUtil.currentTimeMillis(); + final long time = System.currentTimeMillis(); + setCurrentMillis(time); final int nThreads = 16; final OccupiableBucketLeapArray leapArray = new OccupiableBucketLeapArray(sampleCount, intervalInMs); final CountDownLatch latch = new CountDownLatch(nThreads); @@ -100,7 +104,8 @@ public class OccupiableBucketLeapArrayTest { @Test public void testWindowAfterOneInterval() { OccupiableBucketLeapArray leapArray = new OccupiableBucketLeapArray(sampleCount, intervalInMs); - long currentTime = TimeUtil.currentTimeMillis(); + long currentTime = System.currentTimeMillis(); + setCurrentMillis(currentTime); System.out.println(currentTime); for (int i = 0; i < intervalInSec * 1000 / windowLengthInMs; i++) { @@ -122,6 +127,13 @@ public class OccupiableBucketLeapArrayTest { sum += bucket.pass(); } assertEquals(sum, 2 * intervalInSec * 1000 / windowLengthInMs - 1); + + /** + * https://github.com/alibaba/Sentinel/issues/685 + * + * Here we could not use exactly current time, because the following result is related with the above elapse. + * So we use the beginning current time to ensure. + */ assertEquals(leapArray.currentWaiting(), 10); } }