@@ -376,20 +376,19 @@ public void testDelayVariabilityAppliesToImmediateTasks() {
376
376
public void testDelayVariabilityAppliesToFutureTasks () {
377
377
final DeterministicTaskQueue deterministicTaskQueue = newTaskQueue ();
378
378
advanceToRandomTime (deterministicTaskQueue );
379
- final long delayMillis = randomLongBetween (30000 , 60000 );
380
- final long variabilityMillis = randomLongBetween (100 , 500 );
379
+ final long nominalExecutionTime = randomLongBetween (0 , 60000 );
380
+ final long variabilityMillis = randomLongBetween (1 , 500 );
381
+ final long startTime = deterministicTaskQueue .getCurrentTimeMillis ();
381
382
deterministicTaskQueue .setExecutionDelayVariabilityMillis (variabilityMillis );
382
383
for (int i = 0 ; i < 100 ; i ++) {
383
- deterministicTaskQueue .scheduleAt (delayMillis , () -> {});
384
+ deterministicTaskQueue .scheduleAt (nominalExecutionTime , () -> {});
384
385
}
385
386
final long expectedEndTime = deterministicTaskQueue .getLatestDeferredExecutionTime ();
387
+ assertThat (expectedEndTime , greaterThan (nominalExecutionTime )); // fails if every task has zero variability -- vanishingly unlikely
388
+ assertThat (expectedEndTime , lessThanOrEqualTo (Math .max (startTime , nominalExecutionTime + variabilityMillis )));
386
389
387
- final long startTime = deterministicTaskQueue .getCurrentTimeMillis ();
388
390
deterministicTaskQueue .runAllTasks ();
389
- final long elapsedTime = deterministicTaskQueue .getCurrentTimeMillis () - startTime ;
390
391
assertThat (deterministicTaskQueue .getCurrentTimeMillis (), is (expectedEndTime ));
391
- assertThat (elapsedTime , greaterThan (delayMillis )); // fails with negligible probability
392
- assertThat (elapsedTime , lessThanOrEqualTo (delayMillis + variabilityMillis ));
393
392
}
394
393
395
394
public void testThreadPoolSchedulesPeriodicFutureTasks () {
0 commit comments