use of com.spotify.docker.client.messages.ContainerInfo in project docker-client by spotify.
the class DefaultDockerClientTest method testNetworksConnectContainer.
@Test
public void testNetworksConnectContainer() throws Exception {
requireDockerApiVersionAtLeast("1.21", "createNetwork and listNetworks");
assumeFalse(CIRCLECI);
sut.pull(BUSYBOX_LATEST);
final String networkName = randomName();
final String containerName = randomName();
final NetworkCreation networkCreation = sut.createNetwork(NetworkConfig.builder().name(networkName).build());
assertThat(networkCreation.id(), is(notNullValue()));
final ContainerConfig containerConfig = ContainerConfig.builder().image(BUSYBOX_LATEST).cmd("sh", "-c", "while :; do sleep 1; done").build();
final ContainerCreation containerCreation = sut.createContainer(containerConfig, containerName);
assertThat(containerCreation.id(), is(notNullValue()));
sut.startContainer(containerCreation.id());
sut.connectToNetwork(containerCreation.id(), networkCreation.id());
Network network = sut.inspectNetwork(networkCreation.id());
assertThat(network.containers().size(), equalTo(1));
final Network.Container container = network.containers().get(containerCreation.id());
assertThat(container, notNullValue());
if (dockerApiVersionAtLeast("1.22")) {
assertThat(container.name(), notNullValue());
}
assertThat(container.macAddress(), notNullValue());
assertThat(container.ipv4Address(), notNullValue());
assertThat(container.ipv6Address(), notNullValue());
final ContainerInfo containerInfo = sut.inspectContainer(containerCreation.id());
assertThat(containerInfo.networkSettings().networks().size(), is(2));
final AttachedNetwork attachedNetwork = containerInfo.networkSettings().networks().get(networkName);
assertThat(attachedNetwork, is(notNullValue()));
if (dockerApiVersionAtLeast("1.22")) {
assertThat(attachedNetwork.networkId(), is(notNullValue()));
}
assertThat(attachedNetwork.endpointId(), is(notNullValue()));
assertThat(attachedNetwork.gateway(), is(notNullValue()));
assertThat(attachedNetwork.ipAddress(), is(notNullValue()));
assertThat(attachedNetwork.ipPrefixLen(), is(notNullValue()));
assertThat(attachedNetwork.macAddress(), is(notNullValue()));
assertThat(attachedNetwork.ipv6Gateway(), is(notNullValue()));
assertThat(attachedNetwork.globalIPv6Address(), is(notNullValue()));
assertThat(attachedNetwork.globalIPv6PrefixLen(), greaterThanOrEqualTo(0));
sut.disconnectFromNetwork(containerCreation.id(), networkCreation.id());
network = sut.inspectNetwork(networkCreation.id());
assertThat(network.containers().size(), equalTo(0));
sut.stopContainer(containerCreation.id(), 1);
sut.removeContainer(containerCreation.id());
sut.removeNetwork(networkCreation.id());
}
use of com.spotify.docker.client.messages.ContainerInfo in project docker-client by spotify.
the class DefaultDockerClientTest method testLogsNoStdOut.
@Test
public void testLogsNoStdOut() throws Exception {
sut.pull(BUSYBOX_LATEST);
final String container = randomName();
final ContainerConfig volumeConfig = ContainerConfig.builder().image(BUSYBOX_LATEST).cmd("sh", "-c", "echo This message goes to stdout && echo This message goes to stderr 1>&2").build();
sut.createContainer(volumeConfig, container);
sut.startContainer(container);
sut.waitContainer(container);
final ContainerInfo info = sut.inspectContainer(container);
assertThat(info.state().running(), is(false));
assertThat(info.state().exitCode(), is(0));
final String logs;
try (LogStream stream = sut.logs(info.id(), stdout(false), stderr())) {
logs = stream.readFully();
}
assertThat(logs, containsString("This message goes to stderr"));
assertThat(logs, not(containsString("This message goes to stdout")));
}
use of com.spotify.docker.client.messages.ContainerInfo in project docker-client by spotify.
the class DefaultDockerClientTest method testContainerVolumesOldStyle.
@Test
@SuppressWarnings("deprecation")
public void testContainerVolumesOldStyle() throws Exception {
requireDockerApiVersionLessThan("1.20", "Creating a container with volumes and inspecting volumes in old style");
sut.pull(BUSYBOX_LATEST);
final HostConfig hostConfig = HostConfig.builder().binds(Bind.from("/local/path").to("/remote/path").build()).build();
final ContainerConfig volumeConfig = ContainerConfig.builder().image(BUSYBOX_LATEST).addVolume("/foo").hostConfig(hostConfig).build();
final String id = sut.createContainer(volumeConfig, randomName()).id();
final ContainerInfo volumeContainer = sut.inspectContainer(id);
final List<String> expectedDestinations = newArrayList("/foo", "/remote/path");
final Set<String> actualDestinations = volumeContainer.volumes().keySet();
// To make sure two sets are equal, when they may be in different orders,
// we check that each one contains all the elements of the other.
// Equivalent to, in math, proving two sets are one-to-one by proving
// they are injective ("into") and surjective ("onto").
assertThat(actualDestinations, everyItem(isIn(expectedDestinations)));
assertThat(expectedDestinations, everyItem(isIn(actualDestinations)));
// The local paths returned from ContainerInfo.volumes() are paths in the docker
// file system. So they are not predictable (at least by me, the test writer,
// John Flavin.) However, the local path we asked for will always be included as part of
// the path that is returned. So we can just check that one in the list of items
// we got back contains our expected path.
final String expectedLocalPath = "/local/path";
assertThat(volumeContainer.volumes().values(), hasItem(containsString(expectedLocalPath)));
assertThat(volumeContainer.config().volumes(), hasItem("/foo"));
}
use of com.spotify.docker.client.messages.ContainerInfo in project docker-client by spotify.
the class DefaultDockerClientTest method testInspectContainerWithSecurityOpts.
@Test
public void testInspectContainerWithSecurityOpts() throws Exception {
final String userLabel = "label:user:dxia";
final String roleLabel = "label:role:foo";
final String typeLabel = "label:type:bar";
final String levelLabel = "label:level:9001";
sut.pull(MEMCACHED_LATEST);
final HostConfig hostConfig = HostConfig.builder().securityOpt(userLabel, roleLabel, typeLabel, levelLabel).build();
final ContainerConfig config = ContainerConfig.builder().image(MEMCACHED_LATEST).hostConfig(hostConfig).build();
final ContainerCreation container = sut.createContainer(config, randomName());
sut.startContainer(container.id());
final ContainerInfo containerInfo = sut.inspectContainer(container.id());
assertThat(containerInfo, notNullValue());
assertThat(containerInfo.hostConfig().securityOpt(), hasItems(userLabel, roleLabel, typeLabel, levelLabel));
}
use of com.spotify.docker.client.messages.ContainerInfo in project docker-client by spotify.
the class DefaultDockerClientTest method testRestartPolicy.
private void testRestartPolicy(HostConfig.RestartPolicy restartPolicy) throws Exception {
sut.pull(BUSYBOX_LATEST);
final HostConfig hostConfig = HostConfig.builder().restartPolicy(restartPolicy).build();
final ContainerConfig containerConfig = ContainerConfig.builder().image(BUSYBOX_LATEST).cmd("sh", "-c", "while :; do sleep 1; done").hostConfig(hostConfig).build();
final String containerName = randomName();
final ContainerCreation containerCreation = sut.createContainer(containerConfig, containerName);
final String containerId = containerCreation.id();
final ContainerInfo info = sut.inspectContainer(containerId);
assertThat(info.hostConfig().restartPolicy().name(), is(restartPolicy.name()));
final Integer retryCount = restartPolicy.maxRetryCount() == null ? 0 : restartPolicy.maxRetryCount();
assertThat(info.hostConfig().restartPolicy().maxRetryCount(), is(retryCount));
}
Aggregations