Skip to content

Commit 0ae2e23

Browse files
authored
Fix testDelayVariabilityAppliesToFutureTasks (#50667)
This test seems to be bogus as it was confusing a nominal execution time with a delay (i.e. an elapsed time). This commit reworks the test to address this. Fixes #50650
1 parent f400f2f commit 0ae2e23

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

test/framework/src/test/java/org/elasticsearch/cluster/coordination/DeterministicTaskQueueTests.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -376,20 +376,19 @@ public void testDelayVariabilityAppliesToImmediateTasks() {
376376
public void testDelayVariabilityAppliesToFutureTasks() {
377377
final DeterministicTaskQueue deterministicTaskQueue = newTaskQueue();
378378
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();
381382
deterministicTaskQueue.setExecutionDelayVariabilityMillis(variabilityMillis);
382383
for (int i = 0; i < 100; i++) {
383-
deterministicTaskQueue.scheduleAt(delayMillis, () -> {});
384+
deterministicTaskQueue.scheduleAt(nominalExecutionTime, () -> {});
384385
}
385386
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)));
386389

387-
final long startTime = deterministicTaskQueue.getCurrentTimeMillis();
388390
deterministicTaskQueue.runAllTasks();
389-
final long elapsedTime = deterministicTaskQueue.getCurrentTimeMillis() - startTime;
390391
assertThat(deterministicTaskQueue.getCurrentTimeMillis(), is(expectedEndTime));
391-
assertThat(elapsedTime, greaterThan(delayMillis)); // fails with negligible probability
392-
assertThat(elapsedTime, lessThanOrEqualTo(delayMillis + variabilityMillis));
393392
}
394393

395394
public void testThreadPoolSchedulesPeriodicFutureTasks() {

0 commit comments

Comments
 (0)