Skip to content
Merged

Fix24 #663

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion get-docker-com.sh → .travis/get-docker-com.sh
Original file line number Diff line number Diff line change
Expand Up @@ -310,4 +310,4 @@ do_install() {

# wrapped up in a function so that we have some protection against only getting
# half the file during "curl | sh"
do_install
do_install
53 changes: 48 additions & 5 deletions .travis/travis-before-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

sudo apt-get install -y -q ca-certificates

export HOST_PORT=2375
echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt


Expand All @@ -21,7 +22,10 @@ sudo -E apt-get install -q -y wget
sudo -E apt-get -q -y --purge remove docker-engine
sudo -E apt-cache policy docker-engine

./get-docker-com.sh
./.travis/get-docker-com.sh

sudo -E stop docker

#mkdir "${HOME}/.cache" || :
#pushd "${HOME}/.cache"
# wget -N "https://apt.dockerproject.org/repo/pool/main/d/docker-engine/docker-engine_${DOCKER_VERSION}_amd64.deb"
Expand All @@ -31,10 +35,49 @@ sudo -E apt-cache policy docker-engine
#rm -f "src/test/resources/logback.xml"
mv "src/test/resources/travis-logback.xml" "src/test/resources/logback.xml"

echo 'DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=tcp://127.0.0.1:2375"' | sudo tee -a /etc/default/docker
sudo -E restart docker
sleep 10
docker version
# https://github.com/docker/docker/issues/18113
sudo rm /var/lib/docker/network/files/local-kv.db

sudo cat /etc/default/docker

cat << EOF | sudo tee /etc/default/docker
DOCKER_OPTS="\
--dns 8.8.8.8 \
--dns 8.8.4.4 \
-D \
-H=unix:///var/run/docker.sock \
-H=tcp://0.0.0.0:${HOST_PORT} \
"
EOF

sudo cat /etc/default/docker
sudo bash -c ':> /var/log/upstart/docker.log'

date
sudo -E start docker

tries=20
sleep=5
for i in $(seq 1 $tries); do
if sudo grep "API listen on" /var/log/upstart/docker.log ; then
echo "Docker started. Delay $(($i * $sleep))"
break
elif [[ $i -ge $tries ]]; then
echo "Docker didn't start. Exiting!"
sudo cat /var/log/upstart/docker.log
exit 1
else
echo "Docker didn't start, sleeping for 5 secs..."
sleep $sleep
fi
done


sudo ss -antpl

curl -V

docker version || sudo cat /var/log/upstart/docker.log
docker info

set +u
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/github/dockerjava/api/DockerClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ public interface DockerClient extends Closeable {
* @return created command
* @see #copyArchiveFromContainerCmd(String, String)
* @deprecated since docker API version 1.20, replaced by {@link #copyArchiveFromContainerCmd(String, String)}
* since 1.24 fails.
*/
@Deprecated
CopyFileFromContainerCmd copyFileFromContainerCmd(@Nonnull String containerId, @Nonnull String resource);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.github.dockerjava.jaxrs;

import static javax.ws.rs.client.Entity.entity;

import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;

Expand All @@ -22,11 +20,13 @@ public StartContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerCl

@Override
protected Void execute(StartContainerCmd command) {
WebTarget webResource = getBaseResource().path("/containers/{id}/start").resolveTemplate("id",
command.getContainerId());
WebTarget webResource = getBaseResource().path("/containers/{id}/start")
.resolveTemplate("id", command.getContainerId());

LOGGER.trace("POST: {}", webResource);
webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(command, MediaType.APPLICATION_JSON))
webResource.request()
.accept(MediaType.APPLICATION_JSON)
.post(null)
.close();

return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ protected Void execute(StartContainerCmd command) {
command.getContainerId());

LOGGER.trace("POST: {}", webResource);
webResource.request().accept(MediaType.APPLICATION_JSON).post(command);
webResource.request()
.accept(MediaType.APPLICATION_JSON)
.post(command);

return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.command.CreateNetworkResponse;
import com.github.dockerjava.api.command.InspectContainerResponse;
import com.github.dockerjava.api.exception.DockerException;
import com.github.dockerjava.api.model.ContainerNetwork;
import com.github.dockerjava.api.model.Network;
import com.github.dockerjava.client.AbstractDockerClientTest;
Expand All @@ -16,6 +17,10 @@
import java.lang.reflect.Method;
import java.util.Collections;

import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;

@Test(groups = "integration")
public class ConnectToNetworkCmdImplTest extends AbstractDockerClientTest {

Expand Down Expand Up @@ -60,38 +65,49 @@ public void connectToNetwork() throws InterruptedException {

@Test
public void connectToNetworkWithContainerNetwork() throws InterruptedException {
final String NETWORK_SUBNET = "10.100.102.0/24";
final String NETWORK_NAME = "jerseyTestNetwork";
final String CONTAINER_IP = "10.100.102.100";

CreateContainerResponse container = dockerClient.createContainerCmd("busybox")
.withCmd("sleep", "9999")
.exec();

CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("sleep", "9999").exec();
dockerClient.startContainerCmd(container.getId()).exec();

try {
dockerClient.removeNetworkCmd(NETWORK_NAME).exec();
} catch (DockerException ignore) {
}

CreateNetworkResponse network = dockerClient.createNetworkCmd()
.withName("testNetwork")
.withName(NETWORK_NAME)
.withIpam(new Network.Ipam()
.withConfig(new Network.Ipam.Config()
.withSubnet("10.100.100.0/24")))
.withConfig(new Network.Ipam.Config()
.withSubnet(NETWORK_SUBNET)))
.exec();

dockerClient.connectToNetworkCmd()
.withNetworkId(network.getId())
.withContainerId(container.getId())
.withContainerNetwork(new ContainerNetwork()
.withAliases("testing")
.withIpamConfig(new ContainerNetwork.Ipam()
.withIpv4Address("10.100.100.100")))
.withAliases("aliasName")
.withIpamConfig(new ContainerNetwork.Ipam()
.withIpv4Address(CONTAINER_IP)))
.exec();

Network updatedNetwork = dockerClient.inspectNetworkCmd().withNetworkId(network.getId()).exec();

Network.ContainerNetworkConfig containerNetworkConfig = updatedNetwork.getContainers().get(container.getId());
assertNotNull(containerNetworkConfig);
assertEquals(containerNetworkConfig.getIpv4Address(), "10.100.100.100/24");
assertThat(containerNetworkConfig.getIpv4Address(), is(CONTAINER_IP + "/24"));

InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();

ContainerNetwork testNetwork = inspectContainerResponse.getNetworkSettings().getNetworks().get("testNetwork");
ContainerNetwork testNetwork = inspectContainerResponse.getNetworkSettings().getNetworks().get(NETWORK_NAME);
assertNotNull(testNetwork);
assertEquals(testNetwork.getAliases(), Collections.singletonList("testing"));
assertEquals(testNetwork.getGateway(), "10.100.100.1");
assertEquals(testNetwork.getIpAddress(), "10.100.100.100");
assertThat(testNetwork.getAliases(), hasItem("aliasName"));
assertEquals(testNetwork.getGateway(), "10.100.102.1");
assertEquals(testNetwork.getIpAddress(), CONTAINER_IP);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package com.github.dockerjava.core.command;

import static com.github.dockerjava.utils.TestUtils.getVersion;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.Matchers.not;

import java.io.InputStream;
import java.lang.reflect.Method;

import com.github.dockerjava.core.RemoteApiVersion;
import com.github.dockerjava.utils.TestUtils;
import org.testng.ITestResult;
import org.testng.SkipException;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeMethod;
Expand Down Expand Up @@ -43,6 +47,10 @@ public void afterMethod(ITestResult result) {

@Test
public void copyFromContainer() throws Exception {
if (getVersion(dockerClient).isGreaterOrEqual(RemoteApiVersion.VERSION_1_24)) {
throw new SkipException("Doesn't work since 1.24");
}

// TODO extract this into a shared method
CreateContainerResponse container = dockerClient.createContainerCmd("busybox")
.withName("docker-java-itest-copyFromContainer").withCmd("touch", "/copyFromContainer").exec();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ public void createContainerWithAlias() throws DockerException {
.exec();

ContainerNetwork aliasNet = inspectContainerResponse.getNetworkSettings().getNetworks().get("aliasNet");
assertEquals(aliasNet.getAliases(), Collections.singletonList("server"));
assertThat(aliasNet.getAliases(), hasItem("server"));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public void unpausePausedContainer() {

ContainerUtils.pauseContainer(dockerClient, container);

ContainerUtils.unpaseContainer(dockerClient, container);
ContainerUtils.unpauseContainer(dockerClient, container);
}

@Test(expectedExceptions = InternalServerErrorException.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public void attachContainerWithStdin() throws Exception {

dockerClient.startContainerCmd(container.getId()).exec();

Thread.sleep(SECONDS.toMillis(3)); //wait bash initialisation
Thread.sleep(SECONDS.toMillis(10)); //wait bash initialisation

InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.command.CreateNetworkResponse;
import com.github.dockerjava.api.command.InspectContainerResponse;
import com.github.dockerjava.api.exception.DockerException;
import com.github.dockerjava.api.exception.NotFoundException;
import com.github.dockerjava.api.model.ContainerNetwork;
import com.github.dockerjava.api.model.Network;
import com.github.dockerjava.netty.AbstractNettyDockerClientTest;
Expand All @@ -17,6 +19,10 @@
import java.lang.reflect.Method;
import java.util.Collections;

import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;

@Test(groups = "integration")
public class ConnectToNetworkCmdExecTest extends AbstractNettyDockerClientTest {

Expand Down Expand Up @@ -61,38 +67,49 @@ public void connectToNetwork() throws InterruptedException {

@Test
public void connectToNetworkWithContainerNetwork() throws InterruptedException {
final String NETWORK_SUBNET = "10.100.101.0/24";
final String NETWORK_NAME = "nettyTestNetwork";
final String CONTAINER_IP = "10.100.101.100";

CreateContainerResponse container = dockerClient.createContainerCmd("busybox")
.withCmd("sleep", "9999")
.exec();

CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("sleep", "9999").exec();
dockerClient.startContainerCmd(container.getId()).exec();

try {
dockerClient.removeNetworkCmd(NETWORK_NAME).exec();
} catch (DockerException ignore) {
}

CreateNetworkResponse network = dockerClient.createNetworkCmd()
.withName("testNetwork")
.withName(NETWORK_NAME)
.withIpam(new Network.Ipam()
.withConfig(new Network.Ipam.Config()
.withSubnet("10.100.100.0/24")))
.withConfig(new Network.Ipam.Config()
.withSubnet(NETWORK_SUBNET)))
.exec();

dockerClient.connectToNetworkCmd()
.withNetworkId(network.getId())
.withContainerId(container.getId())
.withContainerNetwork(new ContainerNetwork()
.withAliases("testing")
.withIpamConfig(new ContainerNetwork.Ipam()
.withIpv4Address("10.100.100.100")))
.withAliases("aliasName")
.withIpamConfig(new ContainerNetwork.Ipam()
.withIpv4Address(CONTAINER_IP)))
.exec();

Network updatedNetwork = dockerClient.inspectNetworkCmd().withNetworkId(network.getId()).exec();

Network.ContainerNetworkConfig containerNetworkConfig = updatedNetwork.getContainers().get(container.getId());
assertNotNull(containerNetworkConfig);
assertEquals(containerNetworkConfig.getIpv4Address(), "10.100.100.100/24");
assertThat(containerNetworkConfig.getIpv4Address(), is(CONTAINER_IP + "/24"));

InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();

ContainerNetwork testNetwork = inspectContainerResponse.getNetworkSettings().getNetworks().get("testNetwork");
ContainerNetwork testNetwork = inspectContainerResponse.getNetworkSettings().getNetworks().get(NETWORK_NAME);
assertNotNull(testNetwork);
assertEquals(testNetwork.getAliases(), Collections.singletonList("testing"));
assertEquals(testNetwork.getGateway(), "10.100.100.1");
assertEquals(testNetwork.getIpAddress(), "10.100.100.100");
assertThat(testNetwork.getAliases(), hasItem("aliasName"));
assertEquals(testNetwork.getGateway(), "10.100.101.1");
assertEquals(testNetwork.getIpAddress(), CONTAINER_IP);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.github.dockerjava.netty.exec;

import static com.github.dockerjava.utils.TestUtils.getVersion;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.Matchers.not;

import java.io.InputStream;
import java.lang.reflect.Method;

import com.github.dockerjava.core.RemoteApiVersion;
import org.testng.ITestResult;
import org.testng.SkipException;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeMethod;
Expand Down Expand Up @@ -43,6 +46,10 @@ public void afterMethod(ITestResult result) {

@Test
public void copyFromContainer() throws Exception {
if (getVersion(dockerClient).isGreaterOrEqual(RemoteApiVersion.VERSION_1_24)) {
throw new SkipException("Doesn't work since 1.24");
}

// TODO extract this into a shared method
CreateContainerResponse container = dockerClient.createContainerCmd("busybox")
.withName("docker-java-itest-copyFromContainer").withCmd("touch", "/copyFromContainer").exec();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ public void createContainerWithAlias() throws DockerException {
.exec();

ContainerNetwork aliasNet = inspectContainerResponse.getNetworkSettings().getNetworks().get("aliasNet");
assertEquals(aliasNet.getAliases(), Collections.singletonList("server"));
assertThat(aliasNet.getAliases(), hasItem("server"));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public void unpausePausedContainer() {

ContainerUtils.pauseContainer(dockerClient, container);

ContainerUtils.unpaseContainer(dockerClient, container);
ContainerUtils.unpauseContainer(dockerClient, container);
}

@Test(expectedExceptions = InternalServerErrorException.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public static void stopContainer(DockerClient dockerClient, CreateContainerRespo
* @param dockerClient docker client
* @param container container
*/
public static void unpaseContainer(DockerClient dockerClient, CreateContainerResponse container) {
public static void unpauseContainer(DockerClient dockerClient, CreateContainerResponse container) {
dockerClient.unpauseContainerCmd(container.getId()).exec();

InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();
Expand Down