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;
}
}