@Test
public void testStateChanges_withHealthCheck() throws IOException, InterruptedException {
assumeThat("docker version", Docker.version(), new GreaterOrEqual<>(Version.forIntegers(1, 12, 0)));
assumeThat("docker-compose version", DockerCompose.version(), new GreaterOrEqual<>(Version.forIntegers(1, 10, 0)));
DockerCompose dockerCompose = new DefaultDockerCompose(
DockerComposeFiles.from("src/test/resources/native-healthcheck.yaml"),
dockerMachine,
ProjectName.random());
Container container = new Container("withHealthcheck", docker, dockerCompose);
assertEquals(State.DOWN, container.state());
container.up();
assertEquals(State.UNHEALTHY, container.state());
dockerCompose.exec(noOptions(), "withHealthcheck", arguments("touch", "healthy"));
wait.until(container::state, equalTo(State.HEALTHY));
dockerCompose.exec(noOptions(), "withHealthcheck", arguments("rm", "healthy"));
wait.until(container::state, equalTo(State.UNHEALTHY));
container.kill();
assertEquals(State.DOWN, container.state());
}
}