private Optional<String> id(String containerName) throws IOException, InterruptedException { String id = command.execute(Command.throwingOnError(), "ps", "-q", containerName); if (id.isEmpty()) { return Optional.empty(); } return Optional.of(id); }
@Override public List<String> services() throws IOException, InterruptedException { String servicesOutput = command.execute(Command.throwingOnError(), "config", "--services"); return Arrays.asList(servicesOutput.split("(\r|\n)+")); }
@Override public List<String> services() throws IOException, InterruptedException { String servicesOutput = command.execute(Command.throwingOnError(), "config", "--services"); return Arrays.asList(servicesOutput.split("\n")); }
@Override public void rm() throws IOException, InterruptedException { command.execute(Command.throwingOnError(), "rm", "--force", "-v"); }
public Version configuredVersion() throws IOException, InterruptedException { String versionString = command.execute(Command.throwingOnError(), "-v"); Matcher matcher = VERSION_PATTERN.matcher(versionString); checkState(matcher.matches(), "Unexpected output of docker -v: %s", versionString); return Version.forIntegers(Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)), Integer.parseInt(matcher.group(3))); }
private String psOutput(String service) throws IOException, InterruptedException { String psOutput = command.execute(Command.throwingOnError(), "ps", service); validState(!Strings.isNullOrEmpty(psOutput), "No container with name '" + service + "' found"); return psOutput; } }
private String psOutput(String service) throws IOException, InterruptedException { String psOutput = command.execute(Command.throwingOnError(), "ps", service); validState(!Strings.isNullOrEmpty(psOutput), "No container with name '" + service + "' found"); return psOutput; } }
@Override public List<ContainerName> ps() throws IOException, InterruptedException { String psOutput = command.execute(Command.throwingOnError(), "ps"); return ContainerNames.parseFromDockerComposePs(psOutput); }
public State state(String containerId) throws IOException, InterruptedException { String formatString = SystemUtils.IS_OS_WINDOWS ? HEALTH_STATUS_FORMAT_WINDOWS : HEALTH_STATUS_FORMAT; String stateString = command.execute(Command.throwingOnError(), "inspect", formatString, containerId); return State.valueOf(stateString); }
@Override public List<ContainerName> ps() throws IOException, InterruptedException { String psOutput = command.execute(Command.throwingOnError(), "ps"); return ContainerNames.parseFromDockerComposePs(psOutput); }
@Override public List<ContainerName> ps() throws IOException, InterruptedException { String psOutput = command.execute(Command.throwingOnError(), "ps"); return ContainerNames.parseFromDockerComposePs(psOutput); }
@Override public String run(DockerComposeRunOption dockerComposeRunOption, String containerName, DockerComposeRunArgument dockerComposeRunArgument) throws IOException, InterruptedException { String[] fullArgs = constructFullDockerComposeRunArguments(dockerComposeRunOption, containerName, dockerComposeRunArgument); return command.execute(Command.throwingOnError(), fullArgs); }
@Override public String run(DockerComposeRunOption dockerComposeRunOption, String containerName, DockerComposeRunArgument dockerComposeRunArgument) throws IOException, InterruptedException { String[] fullArgs = constructFullDockerComposeRunArguments(dockerComposeRunOption, containerName, dockerComposeRunArgument); return command.execute(Command.throwingOnError(), fullArgs); }
@Override public String exec(DockerComposeExecOption dockerComposeExecOption, String containerName, DockerComposeExecArgument dockerComposeExecArgument) throws IOException, InterruptedException { verifyDockerComposeVersionAtLeast(VERSION_1_7_0, "You need at least docker-compose 1.7 to run docker-compose exec"); String[] fullArgs = constructFullDockerComposeExecArguments(dockerComposeExecOption, containerName, dockerComposeExecArgument); return command.execute(Command.throwingOnError(), fullArgs); }
@Override public String exec(DockerComposeExecOption dockerComposeExecOption, String containerName, DockerComposeExecArgument dockerComposeExecArgument) throws IOException, InterruptedException { verifyDockerComposeVersionAtLeast(VERSION_1_7_0, "You need at least docker-compose 1.7 to run docker-compose exec"); String[] fullArgs = constructFullDockerComposeExecArguments(dockerComposeExecOption, containerName, dockerComposeExecArgument); return command.execute(Command.throwingOnError(), fullArgs); }
@Ignore @Test public void not_create_long_lived_threads_after_execution() throws IOException, InterruptedException { int preThreadCount = Thread.getAllStackTraces().entrySet().size(); dockerComposeCommand.execute(errorHandler, "rm", "-f"); int postThreadCount = Thread.getAllStackTraces().entrySet().size(); assertThat("command thread pool has exited", preThreadCount == postThreadCount); }
@Test public void return_output_when_exit_code_of_the_executed_process_is_0() throws IOException, InterruptedException { String expectedOutput = "test output"; givenTheUnderlyingProcessHasOutput(expectedOutput); String commandOutput = dockerComposeCommand.execute(errorHandler, "rm", "-f"); assertThat(commandOutput, is(expectedOutput)); }
@Test public void give_the_output_to_the_specified_consumer_as_it_is_available() throws IOException, InterruptedException { givenTheUnderlyingProcessHasOutput("line 1\nline 2"); dockerComposeCommand.execute(errorHandler, "rm", "-f"); assertThat(consumedLogLines, contains("line 1", "line 2")); }
@Test public void return_output_when_exit_code_of_the_executed_process_is_non_0() throws IOException, InterruptedException { String expectedOutput = "test output"; givenTheUnderlyingProcessTerminatesWithAnExitCodeOf(1); givenTheUnderlyingProcessHasOutput(expectedOutput); String commandOutput = dockerComposeCommand.execute(errorHandler, "rm", "-f"); assertThat(commandOutput, is(expectedOutput)); }
@Test public void invoke_error_handler_when_exit_code_of_the_executed_process_is_non_0() throws IOException, InterruptedException { int expectedExitCode = 1; givenTheUnderlyingProcessTerminatesWithAnExitCodeOf(expectedExitCode); dockerComposeCommand.execute(errorHandler, "rm", "-f"); verify(errorHandler).handle(expectedExitCode, "", "docker-compose", "rm", "-f"); }