public String execCommand(String... arguments) { return execCommandAsArray(arguments).get(0); }
public String execCommand(String... arguments) { return execCommandAsArray(arguments).get(0); }
public void createMachine(String machinePath, String machineDriver, String machineName) { List<String> create = commandLineExecutor.execCommandAsArray(machinePath, "create", "--driver", machineDriver, machineName); printOutput(create); }
public void grantPermissionToDockerMachine(String machinePath) { List<String> chmod = commandLineExecutor.execCommandAsArray("chmod", "+x", machinePath); printOutput(chmod); }
public void createMachine(String machinePath, String machineDriver, String machineName) { List<String> create = commandLineExecutor.execCommandAsArray(machinePath, "create", "--driver", machineDriver, machineName); printOutput(create); }
public void grantPermissionToDockerMachine(String machinePath) { List<String> chmod = commandLineExecutor.execCommandAsArray("chmod", "+x", machinePath); printOutput(chmod); }
/** * Executes docker-machine ls command * * @param cliPathExec * location of docker-machine or null if it is on PATH. * * @return set of machines */ public Set<Machine> list(String cliPathExec) { Set<Machine> machines = new HashSet<>(); List<String> output = commandLineExecutor.execCommandAsArray(createDockerMachineCommand(cliPathExec), "ls"); Map<String, Index> headerIndex = calculateStartingFieldsIndex(output.get(0)); for (String fields : output.subList(1, output.size())) { machines.add(parse(headerIndex, fields)); } return machines; }
/** * Executes docker-machine ls command * * @param cliPathExec * location of docker-machine or null if it is on PATH. * * @return set of machines */ public Set<Machine> list(String cliPathExec) { Set<Machine> machines = new HashSet<>(); List<String> output = commandLineExecutor.execCommandAsArray(createDockerMachineCommand(cliPathExec), "ls"); Map<String, Index> headerIndex = calculateStartingFieldsIndex(output.get(0)); for (String fields : output.subList(1, output.size())) { machines.add(parse(headerIndex, fields)); } return machines; }
@Override public void check(RequiresDockerMachine context) throws UnsatisfiedRequirementException { String name = context.name(); try { if (name != null && !name.isEmpty()) { List<String> machines = commandLineExecutor.execCommandAsArray("docker-machine", "ls", "--filter", "name=" + name, "--format", "{{.Name}}"); if (!machines.contains(name)) { throw new UnsatisfiedRequirementException("Docker machine with name: [" + name + "] not found!"); } } else { List<String> machines = commandLineExecutor.execCommandAsArray("docker-machine", "ls", "--format", "{{.Name}}"); if (machines.size() > 0) { throw new UnsatisfiedRequirementException("No docker machine found!"); } } } catch (ExecutionException e) { throw new UnsatisfiedRequirementException("Cannot execute docker-machine command."); } } }
@Test public void shouldUseDockerMachineIfDockerHostIsSetOnServerURIAndMachineNameIsSet() { Map<String, String> config = new HashMap<>(); config.put(CubeDockerConfiguration.DOCKER_URI, "tcp://dockerHost:22222"); config.put(CubeDockerConfiguration.DOCKER_MACHINE_NAME, "dev"); when(extensionDef.getExtensionProperties()).thenReturn(config); when(arquillianDescriptor.extension("docker")).thenReturn(extensionDef); when(commandLineExecutor.execCommandAsArray("docker-machine", "ls")) .thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev * virtualbox Running tcp://192.168.0.2:222222 ")); when(commandLineExecutor.execCommand("docker-machine", "ip", "dev")).thenReturn("192.168.0.2"); fire(new CubeConfiguration()); assertThat(config, hasEntry(CubeDockerConfiguration.DOCKER_URI, "tcp://192.168.0.2:22222")); }
@Test public void shouldStartDockerMachineIfItIsStoppedAndMachineNameIsSet() { Map<String, String> config = new HashMap<>(); config.put(CubeDockerConfiguration.DOCKER_URI, "tcp://dockerHost:22222"); config.put(CubeDockerConfiguration.DOCKER_MACHINE_NAME, "dev"); when(extensionDef.getExtensionProperties()).thenReturn(config); when(arquillianDescriptor.extension("docker")).thenReturn(extensionDef); when(commandLineExecutor.execCommandAsArray("docker-machine", "ls")) .thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev * virtualbox Stopped tcp://192.168.0.2:222222 ")); when(commandLineExecutor.execCommand("docker-machine", "ip", "dev")).thenReturn("192.168.0.2"); fire(new CubeConfiguration()); assertThat(config, hasEntry(CubeDockerConfiguration.DOCKER_URI, "tcp://192.168.0.2:22222")); verify(commandLineExecutor, times(1)).execCommand("docker-machine", "start", "dev"); }
@Test public void testDockerMachineRequirementCheckNoMatchingNameMatched() throws Exception { when(commandLineExecutor.execCommandAsArray(anyVararg())).thenReturn(Arrays.asList(new String[] {"testing"})); DockerMachineRequirement dockerMachineRequirement = new DockerMachineRequirement(commandLineExecutor); dockerMachineRequirement.check(createContext("testing")); }
@Test(expected = UnsatisfiedRequirementException.class) public void testDockerMachineRequirementCheckNoMatchingNameNotMatched() throws Exception { when(commandLineExecutor.execCommandAsArray(anyVararg())).thenReturn(Arrays.asList(new String[] {"my-docker-machine"})); DockerMachineRequirement dockerMachineRequirement = new DockerMachineRequirement(commandLineExecutor); dockerMachineRequirement.check(createContext("testing")); }
@Test(expected = UnsatisfiedRequirementException.class) public void testDockerMachineRequirementCheckNoMatchingNameFound() throws Exception { when(commandLineExecutor.execCommandAsArray(anyVararg())).thenReturn(Collections.emptyList()); DockerMachineRequirement dockerMachineRequirement = new DockerMachineRequirement(commandLineExecutor); dockerMachineRequirement.check(createContext("testing")); }
@Test(expected = UnsatisfiedRequirementException.class) public void testDockerMachineRequirementCheckNoMachineFound() throws Exception { when(commandLineExecutor.execCommandAsArray(anyVararg())).thenReturn(Arrays.asList(new String[] {"foo", "bar"})); DockerMachineRequirement dockerMachineRequirement = new DockerMachineRequirement(commandLineExecutor); dockerMachineRequirement.check(createContext("")); }
@Test public void shouldParseStoppedMachines() { when(executor.execCommandAsArray("docker-machine", "ls")).thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev - virtualbox Stopped " )); DockerMachine dockerMachine = new DockerMachine(executor); final Set<Machine> list = dockerMachine.list(); assertThat(list, hasSize(1)); final Machine[] machines = list.toArray(new Machine[1]); assertThat(machines[0].getName(), is("dev")); assertThat(machines[0].getState(), is("Stopped")); assertThat(machines[0].getUrl(), is("")); }
@Test(expected = UnsatisfiedRequirementException.class) public void estDockerMachineRequirementCheckWhenExecutionExceptionThrown() throws UnsatisfiedRequirementException { when(commandLineExecutor.execCommandAsArray(anyVararg())).thenThrow(ExecutionException.class); DockerMachineRequirement dockerMachineRequirement = new DockerMachineRequirement(commandLineExecutor); dockerMachineRequirement.check(createContext("testing")); }
@Test public void tlsVerifyShouldBeTrueInCaseOfDockerMachine() { Map<String, String> config = new HashMap<>(); config.put(CubeDockerConfiguration.DOCKER_URI, "https://dockerHost:22222"); config.put(CubeDockerConfiguration.DOCKER_MACHINE_NAME, "dev"); when(extensionDef.getExtensionProperties()).thenReturn(config); when(arquillianDescriptor.extension("docker")).thenReturn(extensionDef); when(commandLineExecutor.execCommand("docker-machine", "ip", "dev")).thenReturn("192.168.0.2"); when(commandLineExecutor.execCommandAsArray("docker-machine", "ls")) .thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev * virtualbox Running tcp://192.168.0.2:222222 ")); fire(new CubeConfiguration()); assertThat(config, hasEntry(CubeDockerConfiguration.DOCKER_URI, "tcp://192.168.0.2:22222")); assertThat(config, hasEntry(CubeDockerConfiguration.TLS_VERIFY, "true")); assertThat(config, hasEntry(is(CubeDockerConfiguration.CERT_PATH), defaultDockerMachineCertPath())); }
@Test public void shouldListDockerMachines() { when(executor.execCommandAsArray("docker-machine", "ls")).thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev * virtualbox Running tcp://192.168.99.100:2376 ", "qa * virtualbox Running tcp://192.168.99.101:2376 swarm-master" )); DockerMachine dockerMachine = new DockerMachine(executor); final Set<Machine> list = dockerMachine.list(); assertThat(list, hasSize(2)); final Machine[] machines = list.toArray(new Machine[2]); assertThat(machines[0].getName(), is("qa")); assertThat(machines[0].getState(), is("Running")); assertThat(machines[0].getSwarm(), is("swarm-master")); assertThat(machines[1].getName(), is("dev")); assertThat(machines[1].getState(), is("Running")); assertThat(machines[1].getSwarm(), is("")); }
@Test public void shouldListWithFilterDockerMachines() { when(executor.execCommandAsArray("docker-machine", "ls", "--filter", "state=Running")).thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev * virtualbox Running tcp://192.168.99.100:2376 ", "qa * virtualbox Running tcp://192.168.99.101:2376 swarm-master" )); DockerMachine dockerMachine = new DockerMachine(executor); final Set<Machine> list = dockerMachine.list("state", "Running"); assertThat(list, hasSize(2)); final Machine[] machines = list.toArray(new Machine[2]); assertThat(machines[0].getName(), is("qa")); assertThat(machines[0].getState(), is("Running")); assertThat(machines[0].getSwarm(), is("swarm-master")); assertThat(machines[1].getName(), is("dev")); assertThat(machines[1].getState(), is("Running")); assertThat(machines[1].getSwarm(), is("")); } }