package org.testcontainers.containers.startupcheck;
import com.github.dockerjava.api.DockerClient;
import com.google.common.util.concurrent.Uninterruptibles;
import java.util.concurrent.TimeUnit;
/**
* Variant of {@link OneShotStartupCheckStrategy} that does not impose a timeout.
* Intended for situation such as when a long running task forms part of container startup.
* <p>
* It has to be assumed that the container will stop of its own accord, either with a success or failure exit code.
*/
public class IndefiniteWaitOneShotStartupCheckStrategy extends OneShotStartupCheckStrategy {
@Override
public boolean waitUntilStartupSuccessful(DockerClient dockerClient, String containerId) {
while (checkStartupState(dockerClient, containerId) == StartupStatus.NOT_YET_KNOWN) {
Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
}
return checkStartupState(dockerClient, containerId) == StartupStatus.SUCCESSFUL;
}
}