package org.testcontainers.containers.startupcheck; import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.command.InspectContainerResponse; import org.testcontainers.utility.DockerStatus; /** * Implementation of {@link StartupCheckStrategy} intended for use with containers that only run briefly and * exit of their own accord. As such, success is deemed to be when the container has stopped with exit code 0. */ public class OneShotStartupCheckStrategy extends StartupCheckStrategy { @Override public StartupStatus checkStartupState(DockerClient dockerClient, String containerId) { InspectContainerResponse.ContainerState state = getCurrentState(dockerClient, containerId); if (!DockerStatus.isContainerStopped(state)) { return StartupStatus.NOT_YET_KNOWN; } if (DockerStatus.isContainerStopped(state) && DockerStatus.isContainerExitCodeSuccess(state)) { return StartupStatus.SUCCESSFUL; } else { return StartupStatus.FAILED; } } }