echauchot commented on code in PR #22985: URL: https://github.com/apache/flink/pull/22985#discussion_r1358346133
########## flink-runtime/src/test/java/org/apache/flink/runtime/scheduler/adaptive/ExecutingTest.java: ########## @@ -252,28 +257,96 @@ public void testTransitionToFinishedOnSuspend() throws Exception { } @Test - public void testNotifyNewResourcesAvailableWithCanScaleUpTransitionsToRestarting() + public void testNotifyNewResourcesAvailableBeforeCooldownIsOverScheduledStateChange() + throws Exception { + try (MockExecutingContext ctx = new MockExecutingContext()) { + final Duration scalingIntervalMin = + Duration.ofSeconds(1L); // do not wait too long in the test + final ExecutingStateBuilder executingStateBuilder = + new ExecutingStateBuilder().setScalingIntervalMin(scalingIntervalMin); + Executing exec = executingStateBuilder.build(ctx); + exec.setLastRescale(Instant.now()); + ctx.setCanScaleUp(true, null); // min met => rescale + ctx.setExpectRestarting( // scheduled rescale should restart the job after cooldown + restartingArguments -> { + assertThat(restartingArguments.getBackoffTime(), is(Duration.ZERO)); + assertThat(ctx.actionWasScheduled, is(true)); + }); + exec.onNewResourcesAvailable(); + } + } + + @Test + public void testNotifyNewResourcesAvailableAfterCooldownIsOverStateChange() throws Exception { + try (MockExecutingContext ctx = new MockExecutingContext()) { + final ExecutingStateBuilder executingStateBuilder = + new ExecutingStateBuilder().setScalingIntervalMin(Duration.ofSeconds(20L)); + Executing exec = executingStateBuilder.build(ctx); + exec.setLastRescale(Instant.now().minus(Duration.ofSeconds(30L))); + ctx.setCanScaleUp(true, null); // min met => rescale + ctx.setExpectRestarting( + restartingArguments -> { // immediate rescale + assertThat(restartingArguments.getBackoffTime(), is(Duration.ZERO)); + assertThat(ctx.actionWasScheduled, is(false)); + }); + exec.onNewResourcesAvailable(); + } + } + + @Test + public void testNotifyNewResourcesAvailableWithMinMetTransitionsToRestarting() Review Comment: done. I agree that keeping high level semantics rather than implementation semantics is good but I feel like with this renaming we loose the real use case semantics that these tests are assessing: resources too small, resources lost etc... -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org