Skip to content

Commit 3d98783

Browse files
committed
only-call-after-once check in DockerComposeManager
1 parent e619465 commit 3d98783

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

docker-compose-junit-jupiter/src/main/java/com/palantir/docker/compose/DockerComposeExtension.java

+2-12
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,14 @@
3030
public abstract class DockerComposeExtension extends DockerComposeManager
3131
implements BeforeAllCallback, AfterAllCallback {
3232

33-
private boolean hasCalledAfterMethod;
34-
3533
@Override
3634
public void beforeAll(ExtensionContext unused) throws IOException, InterruptedException {
37-
try {
38-
before();
39-
} catch (RuntimeException e) {
40-
after();
41-
hasCalledAfterMethod = true;
42-
throw e;
43-
}
35+
before();
4436
}
4537

4638
@Override
4739
public void afterAll(ExtensionContext unused) {
48-
if (!hasCalledAfterMethod) {
49-
after();
50-
}
40+
after();
5141
}
5242

5343
public static Builder builder() {

docker-compose-junit-jupiter/src/test/java/com/palantir/docker/compose/DockerComposeExtensionTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.palantir.docker.compose.configuration.DockerComposeFiles;
2323
import com.palantir.docker.compose.connection.waiting.ClusterWait;
2424
import com.palantir.docker.compose.events.EventConsumer;
25-
import java.io.IOException;
2625
import java.util.List;
2726
import java.util.concurrent.atomic.AtomicInteger;
2827
import org.junit.jupiter.api.Test;
@@ -32,7 +31,7 @@
3231
public class DockerComposeExtensionTest {
3332

3433
@Test
35-
public void calls_after_only_once() throws IOException, InterruptedException {
34+
public void calls_after_only_once() {
3635
AtomicInteger count = new AtomicInteger();
3736
DockerComposeExtension dockerComposeExtension = new DockerComposeExtension() {
3837
@Override

docker-compose-rule-core/src/main/java/com/palantir/docker/compose/DockerComposeManager.java

+15-4
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public abstract class DockerComposeManager {
7676
public static final int DEFAULT_RETRY_ATTEMPTS = 2;
7777

7878
private final RunRecorder runRecorder = RunRecorder.defaults();
79+
private boolean hasCalledAfterMethod;
7980

8081
public DockerPort hostNetworkedPort(int port) {
8182
return new DockerPort(machine().getIp(), port, port);
@@ -177,13 +178,19 @@ protected void setDescription(TestDescription testDescription) {
177178
}
178179

179180
public void before() throws IOException, InterruptedException {
180-
log.debug("Starting docker-compose cluster");
181+
try {
182+
log.debug("Starting docker-compose cluster");
181183

182-
runRecorder.before(() -> dockerCompose().config());
184+
runRecorder.before(() -> dockerCompose().config());
183185

184-
pullBuildAndUp();
186+
pullBuildAndUp();
185187

186-
emitEventsFor().waitingForServices(this::waitForServices);
188+
emitEventsFor().waitingForServices(this::waitForServices);
189+
} catch (RuntimeException e) {
190+
after();
191+
hasCalledAfterMethod = true;
192+
throw e;
193+
}
187194
}
188195

189196
private void pullBuildAndUp() throws IOException, InterruptedException {
@@ -254,6 +261,10 @@ private void waitForAllClusterWaits(List<InterruptableClusterWait> allClusterWai
254261
}
255262

256263
public void after() {
264+
if (hasCalledAfterMethod) {
265+
return;
266+
}
267+
257268
try {
258269
emitEventsFor().shutdownStop(() ->
259270
shutdownStrategy().stop(this.dockerCompose()));

0 commit comments

Comments
 (0)