From 9343266c4f8ca09bdf4897d8fd52547416ea9278 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Fri, 7 Aug 2020 17:29:20 +0200 Subject: [PATCH] End StartupSteps only once in SpringApplicationRunListeners Fixes gh-22776 --- .../springframework/boot/SpringApplicationRunListeners.java | 1 - .../org/springframework/boot/SpringApplicationTests.java | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationRunListeners.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationRunListeners.java index 9850b4b585f..bb6081899c1 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationRunListeners.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationRunListeners.java @@ -111,7 +111,6 @@ class SpringApplicationRunListeners { StartupStep step = this.applicationStartup.start(stepName); this.listeners.forEach(listenerAction); stepAction.accept(step); - step.end(); } } diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java index 0aab9fecfbc..844365685c2 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java @@ -122,6 +122,7 @@ import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.willThrow; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockingDetails; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -1171,6 +1172,11 @@ class SpringApplicationTests { verify(applicationStartup).start("spring.boot.application.context-loaded"); verify(applicationStartup).start("spring.boot.application.started"); verify(applicationStartup).start("spring.boot.application.running"); + long startCount = mockingDetails(applicationStartup).getInvocations().stream() + .filter((invocation) -> invocation.getMethod().toString().contains("start(")).count(); + long endCount = mockingDetails(startupStep).getInvocations().stream() + .filter((invocation) -> invocation.getMethod().toString().contains("end(")).count(); + assertThat(startCount).isEqualTo(endCount); } private ArgumentMatcher isAvailabilityChangeEventWithState(