package org.arquillian.cube.docker.impl.util;
import java.util.Arrays;
import java.util.Set;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class DockerMachineTest {
@Mock
private CommandLineExecutor executor;
@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
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(""));
}
}