diff --git a/pom.xml b/pom.xml index f38db0cb54..a472742c11 100644 --- a/pom.xml +++ b/pom.xml @@ -362,6 +362,13 @@ test + + org.awaitility + awaitility + 4.0.2 + test + + diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index aa52c2dc62..3a0df94ffb 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -353,6 +353,12 @@ test + + org.awaitility + awaitility + test + + sonia.scm.plugins scm-git-plugin diff --git a/scm-webapp/src/test/java/sonia/scm/lifecycle/InjectionContextRestartStrategyTest.java b/scm-webapp/src/test/java/sonia/scm/lifecycle/InjectionContextRestartStrategyTest.java index ddd691e5da..b0c04677c1 100644 --- a/scm-webapp/src/test/java/sonia/scm/lifecycle/InjectionContextRestartStrategyTest.java +++ b/scm-webapp/src/test/java/sonia/scm/lifecycle/InjectionContextRestartStrategyTest.java @@ -9,7 +9,10 @@ import org.mockito.junit.jupiter.MockitoExtension; import sonia.scm.event.RecreateEventBusEvent; import sonia.scm.event.ScmEventBus; +import java.util.concurrent.TimeUnit; + import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; import static org.mockito.Mockito.verify; @ExtendWith(MockitoExtension.class) @@ -28,12 +31,11 @@ class InjectionContextRestartStrategyTest { } @Test - void shouldCallDestroyAndInitialize() throws InterruptedException { - strategy.restart(context); - - verify(context).destroy(); - Thread.sleep(50L); - verify(context).initialize(); + void shouldCallDestroyAndInitialize() { + TestingInjectionContext ctx = new TestingInjectionContext(); + strategy.restart(ctx); + await().atMost(1, TimeUnit.SECONDS).untilAsserted(() -> assertThat(ctx.destroyed).isTrue()); + await().atMost(1, TimeUnit.SECONDS).untilAsserted(() -> assertThat(ctx.initialized).isTrue()); } @Test @@ -51,6 +53,7 @@ class InjectionContextRestartStrategyTest { TestingInjectionContext ctx = new TestingInjectionContext(); strategy.restart(ctx); + await().atMost(1, TimeUnit.SECONDS).until(() -> ctx.initialized); Thread.sleep(50L); ScmEventBus.getInstance().post("hello event"); @@ -70,6 +73,8 @@ class InjectionContextRestartStrategyTest { public static class TestingInjectionContext implements RestartStrategy.InjectionContext { private volatile String event; + private boolean initialized = false; + private boolean destroyed = false; @Subscribe(async = false) public void setEvent(String event) { @@ -78,12 +83,12 @@ class InjectionContextRestartStrategyTest { @Override public void initialize() { - + this.initialized = true; } @Override public void destroy() { - + this.destroyed = true; } }