diff --git a/src/main/java/com/github/dockerjava/api/model/ExposedPort.java b/src/main/java/com/github/dockerjava/api/model/ExposedPort.java index 25829b8aa..ec95f6273 100644 --- a/src/main/java/com/github/dockerjava/api/model/ExposedPort.java +++ b/src/main/java/com/github/dockerjava/api/model/ExposedPort.java @@ -124,9 +124,9 @@ public static ExposedPort parse(String serialized) throws IllegalArgumentExcepti String[] parts = serialized.split("/"); switch (parts.length) { case 1: - return new ExposedPort(Integer.valueOf(parts[0])); + return new ExposedPort(Integer.parseInt(parts[0])); case 2: - return new ExposedPort(Integer.valueOf(parts[0]), InternetProtocol.parse(parts[1])); + return new ExposedPort(Integer.parseInt(parts[0]), InternetProtocol.parse(parts[1])); default: throw new IllegalArgumentException(); } diff --git a/src/main/java/com/github/dockerjava/api/model/Ports.java b/src/main/java/com/github/dockerjava/api/model/Ports.java index e0250bba1..904a31c4e 100644 --- a/src/main/java/com/github/dockerjava/api/model/Ports.java +++ b/src/main/java/com/github/dockerjava/api/model/Ports.java @@ -1,16 +1,5 @@ package com.github.dockerjava.api.model; -import static org.apache.commons.lang.StringUtils.isEmpty; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; - -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.builder.EqualsBuilder; - import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; @@ -23,6 +12,16 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.node.NullNode; +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.builder.EqualsBuilder; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +import static org.apache.commons.lang.StringUtils.isEmpty; /** * A container for port bindings, made available as a {@link Map} via its {@link #getBindings()} method. @@ -108,69 +107,85 @@ public Map getBindings() { // return bindings.toArray(new PortBinding[bindings.size()]); // } - /** - * Creates a {@link Binding} for the given IP address and port number. - */ - public static Binding binding(String hostIp, Integer hostPort) { - return new Binding(hostIp, hostPort); - } - - /** - * Creates a {@link Binding} for the given port number, leaving the IP address undefined. - */ - public static Binding binding(Integer hostPort) { - return new Binding(hostPort); - } - /** * A {@link Binding} represents a socket on the Docker host that is used in a {@link PortBinding}. It is characterized by an - * {@link #getHostIp() IP address} and a {@link #getHostPort() port number}. Both properties may be null in order to let - * Docker assign them dynamically/using defaults. + * {@link #getHostIp() IP address} and a {@link #getHostPortSpec() port spec}. Both properties may be null in order to + * let Docker assign them dynamically/using defaults. * * @see Ports#bind(ExposedPort, Binding) * @see ExposedPort */ public static class Binding { - private final String hostIp; - - private final Integer hostPort; - /** - * Creates a {@link Binding} for the given {@link #getHostIp() IP address} and {@link #getHostPort() port number}. + * Creates a {@link Binding} for the given {@link #getHostPortSpec() port spec}, leaving the {@link #getHostIp() IP address} + * undefined. * * @see Ports#bind(ExposedPort, Binding) * @see ExposedPort */ - public Binding(String hostIp, Integer hostPort) { - this.hostIp = isEmpty(hostIp) ? null : hostIp; - this.hostPort = hostPort; + public static Binding bindPortSpec(String portSpec) { + return new Binding(null, portSpec); } /** - * Creates a {@link Binding} for the given {@link #getHostPort() port number}, leaving the {@link #getHostIp() IP address} + * Creates a {@link Binding} for the given {@link #getHostIp() IP address}, leaving the {@link #getHostPortSpec() port spec} + * undefined. + */ + public static Binding bindIp(String hostIp) { + return new Binding(hostIp, null); + } + + /** + * Creates a {@link Binding} for the given {@link #getHostIp() IP address} and port number. + */ + public static Binding bindIpAndPort(String hostIp, int port) { + return new Binding(hostIp, "" + port); + } + + /** + * Creates a {@link Binding} for the given {@link #getHostIp() IP address} and port range. + */ + public static Binding bindIpAndPortRange(String hostIp, int lowPort, int highPort) { + return new Binding(hostIp, lowPort + "-" + highPort); + } + + /** + * Creates a {@link Binding} for the given port range, leaving the {@link #getHostIp() IP address} * undefined. - * - * @see Ports#bind(ExposedPort, Binding) - * @see ExposedPort */ - public Binding(Integer hostPort) { - this(null, hostPort); + public static Binding bindPortRange(int lowPort, int highPort) { + return bindIpAndPortRange(null, lowPort, highPort); } /** - * Creates a {@link Binding} for the given {@link #getHostIp() IP address}, leaving the {@link #getHostPort() port number} + * Creates a {@link Binding} for the given port leaving the {@link #getHostIp() IP address} * undefined. */ - public Binding(String hostIp) { - this(hostIp, null); + public static Binding bindPort(int port) { + return bindIpAndPort(null, port); } /** - * Creates a {@link Binding} with both {@link #getHostIp() IP address} and {@link #getHostPort() port number} undefined. + * Creates an empty {@link Binding}. */ - public Binding() { - this(null, null); + public static Binding empty() { + return new Binding(null, null); + } + + private final String hostIp; + + private final String hostPortSpec; + + /** + * Creates a {@link Binding} for the given {@link #getHostIp() host IP address} and {@link #getHostPortSpec() host port spec}. + * + * @see Ports#bind(ExposedPort, Binding) + * @see ExposedPort + */ + public Binding(String hostIp, String hostPortSpec) { + this.hostIp = isEmpty(hostIp) ? null : hostIp; + this.hostPortSpec = hostPortSpec; } /** @@ -182,16 +197,17 @@ public String getHostIp() { } /** - * @return the port number on the Docker host. May be null, in which case Docker will dynamically assign a port. + * @return the port spec for the binding on the Docker host. May reference a single port ("1234"), a port range ("1234-2345") or + * null, in which case Docker will dynamically assign a port. */ - public Integer getHostPort() { - return hostPort; + public String getHostPortSpec() { + return hostPortSpec; } /** * Parses a textual host and port specification (as used by the Docker CLI) to a {@link Binding}. *

- * Legal syntax: IP|IP:port|port + * Legal syntax: IP|IP:portSpec|portSpec where portSpec is either a single port or a port range * * @param serialized * serialized the specification, e.g. 127.0.0.1:80 @@ -202,16 +218,16 @@ public Integer getHostPort() { public static Binding parse(String serialized) throws IllegalArgumentException { try { if (serialized.isEmpty()) { - return new Binding(); + return Binding.empty(); } String[] parts = serialized.split(":"); switch (parts.length) { case 2: { - return new Binding(parts[0], Integer.valueOf(parts[1])); + return new Binding(parts[0], parts[1]); } case 1: { - return parts[0].contains(".") ? new Binding(parts[0]) : new Binding(Integer.valueOf(parts[0])); + return parts[0].contains(".") ? Binding.bindIp(parts[0]) : Binding.bindPortSpec(parts[0]); } default: { throw new IllegalArgumentException(); @@ -231,11 +247,11 @@ public static Binding parse(String serialized) throws IllegalArgumentException { @Override public String toString() { if (isEmpty(hostIp)) { - return Integer.toString(hostPort); - } else if (hostPort == null) { + return hostPortSpec; + } else if (hostPortSpec == null) { return hostIp; } else { - return hostIp + ":" + hostPort; + return hostIp + ":" + hostPortSpec; } } @@ -243,7 +259,7 @@ public String toString() { public boolean equals(Object obj) { if (obj instanceof Binding) { Binding other = (Binding) obj; - return new EqualsBuilder().append(hostIp, other.getHostIp()).append(hostPort, other.getHostPort()) + return new EqualsBuilder().append(hostIp, other.getHostIp()).append(hostPortSpec, other.getHostPortSpec()) .isEquals(); } else { return super.equals(obj); @@ -270,7 +286,7 @@ public Ports deserialize(JsonParser jsonParser, DeserializationContext deseriali JsonNode bindingNode = bindingsArray.get(i); if (!bindingNode.equals(NullNode.getInstance())) { String hostIp = bindingNode.get("HostIp").textValue(); - int hostPort = bindingNode.get("HostPort").asInt(); + String hostPort = bindingNode.get("HostPort").textValue(); out.bind(ExposedPort.parse(portNode.getKey()), new Binding(hostIp, hostPort)); } } @@ -294,8 +310,7 @@ public void serialize(Ports portBindings, JsonGenerator jsonGen, SerializerProvi for (Binding binding : entry.getValue()) { jsonGen.writeStartObject(); jsonGen.writeStringField("HostIp", binding.getHostIp() == null ? "" : binding.getHostIp()); - jsonGen.writeStringField("HostPort", binding.getHostPort() == null ? "" : binding.getHostPort() - .toString()); + jsonGen.writeStringField("HostPort", binding.getHostPortSpec() == null ? "" : binding.getHostPortSpec()); jsonGen.writeEndObject(); } jsonGen.writeEndArray(); diff --git a/src/test/java/com/github/dockerjava/api/command/InspectContainerResponseTest.java b/src/test/java/com/github/dockerjava/api/command/InspectContainerResponseTest.java index c9d40b65f..f64cf4ead 100644 --- a/src/test/java/com/github/dockerjava/api/command/InspectContainerResponseTest.java +++ b/src/test/java/com/github/dockerjava/api/command/InspectContainerResponseTest.java @@ -25,7 +25,9 @@ import static org.hamcrest.Matchers.isEmptyString; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.core.IsNot.not; -import static org.testng.Assert.*; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; /** * Tests for {@link InspectContainerResponse}. diff --git a/src/test/java/com/github/dockerjava/api/model/BindingTest.java b/src/test/java/com/github/dockerjava/api/model/BindingTest.java index 23e793cf8..3b5ea2f6a 100644 --- a/src/test/java/com/github/dockerjava/api/model/BindingTest.java +++ b/src/test/java/com/github/dockerjava/api/model/BindingTest.java @@ -10,25 +10,26 @@ public class BindingTest { @Test public void parseIpAndPort() { - assertEquals(Binding.parse("127.0.0.1:80"), Ports.binding("127.0.0.1", 80)); + assertEquals(Binding.parse("127.0.0.1:80"), Binding.bindIpAndPort("127.0.0.1", 80)); } @Test public void parsePortOnly() { - assertEquals(Binding.parse("80"), Ports.binding(null, 80)); + assertEquals(Binding.parse("80"), Binding.bindPort(80)); } @Test public void parseIPOnly() { - assertEquals(Binding.parse("127.0.0.1"), Ports.binding("127.0.0.1", null)); + assertEquals(Binding.parse("127.0.0.1"), Binding.bindIp("127.0.0.1")); } @Test public void parseEmptyString() { - assertEquals(Binding.parse(""), Ports.binding(null, null)); + assertEquals(Binding.parse(""), Binding.empty()); } - @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "Error parsing Binding 'nonsense'") + // Strings can be used since it can be a range. Let the docker daemon do the validation. + @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "Error parsing Binding 'nonsense'", enabled = false) public void parseInvalidInput() { Binding.parse("nonsense"); } diff --git a/src/test/java/com/github/dockerjava/api/model/PortBindingTest.java b/src/test/java/com/github/dockerjava/api/model/PortBindingTest.java index e5f5f4c1b..7603c3f1b 100644 --- a/src/test/java/com/github/dockerjava/api/model/PortBindingTest.java +++ b/src/test/java/com/github/dockerjava/api/model/PortBindingTest.java @@ -13,35 +13,35 @@ public class PortBindingTest { @Test public void fullDefinition() { assertEquals(PortBinding.parse("127.0.0.1:80:8080/tcp"), - new PortBinding(new Binding("127.0.0.1", 80), TCP_8080)); + new PortBinding(Binding.bindIpAndPort("127.0.0.1", 80), TCP_8080)); } @Test public void noProtocol() { - assertEquals(PortBinding.parse("127.0.0.1:80:8080"), new PortBinding(new Binding("127.0.0.1", 80), TCP_8080)); + assertEquals(PortBinding.parse("127.0.0.1:80:8080"), new PortBinding(Binding.bindIpAndPort("127.0.0.1", 80), TCP_8080)); } @Test public void noHostIp() { - assertEquals(PortBinding.parse("80:8080/tcp"), new PortBinding(new Binding(80), TCP_8080)); + assertEquals(PortBinding.parse("80:8080/tcp"), new PortBinding(Binding.bindPort(80), TCP_8080)); } @Test public void portsOnly() { - assertEquals(PortBinding.parse("80:8080"), new PortBinding(new Binding(80), TCP_8080)); + assertEquals(PortBinding.parse("80:8080"), new PortBinding(Binding.bindPort(80), TCP_8080)); } @Test public void exposedPortOnly() { - assertEquals(PortBinding.parse("8080"), new PortBinding(new Binding(), TCP_8080)); + assertEquals(PortBinding.parse("8080"), new PortBinding(Binding.empty(), TCP_8080)); } @Test public void dynamicHostPort() { - assertEquals(PortBinding.parse("127.0.0.1::8080"), new PortBinding(new Binding("127.0.0.1"), TCP_8080)); + assertEquals(PortBinding.parse("127.0.0.1::8080"), new PortBinding(Binding.bindIp("127.0.0.1"), TCP_8080)); } - @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "Error parsing PortBinding 'nonsense'") + @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "Error parsing PortBinding 'nonsense'", enabled = false) public void parseInvalidInput() { PortBinding.parse("nonsense"); } diff --git a/src/test/java/com/github/dockerjava/api/model/Ports_SerializingTest.java b/src/test/java/com/github/dockerjava/api/model/Ports_SerializingTest.java index 8c8d2014f..fb89561e5 100644 --- a/src/test/java/com/github/dockerjava/api/model/Ports_SerializingTest.java +++ b/src/test/java/com/github/dockerjava/api/model/Ports_SerializingTest.java @@ -1,13 +1,12 @@ package com.github.dockerjava.api.model; -import static org.testng.Assert.assertEquals; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.dockerjava.api.model.Ports.Binding; +import org.testng.annotations.Test; import java.util.Map; -import org.testng.annotations.Test; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.dockerjava.api.model.Ports.Binding; +import static org.testng.Assert.assertEquals; public class Ports_SerializingTest { private final ObjectMapper objectMapper = new ObjectMapper(); @@ -24,15 +23,15 @@ public void deserializingPortWithMultipleBindings() throws Exception { Binding[] bindings = map.get(ExposedPort.tcp(80)); assertEquals(bindings.length, 2); - assertEquals(bindings[0], new Binding("10.0.0.1", 80)); - assertEquals(bindings[1], new Binding("10.0.0.2", 80)); + assertEquals(bindings[0], new Binding("10.0.0.1", "80")); + assertEquals(bindings[1], new Binding("10.0.0.2", "80")); } @Test public void serializingPortWithMultipleBindings() throws Exception { Ports ports = new Ports(); - ports.bind(ExposedPort.tcp(80), new Binding("10.0.0.1", 80)); - ports.bind(ExposedPort.tcp(80), new Binding("10.0.0.2", 80)); + ports.bind(ExposedPort.tcp(80), new Binding("10.0.0.1", "80")); + ports.bind(ExposedPort.tcp(80), new Binding("10.0.0.2", "80")); assertEquals(objectMapper.writeValueAsString(ports), jsonWithDoubleBindingForOnePort); } diff --git a/src/test/java/com/github/dockerjava/api/model/Ports_addBindingsTest.java b/src/test/java/com/github/dockerjava/api/model/Ports_addBindingsTest.java index a5a8697f5..26e815f3b 100644 --- a/src/test/java/com/github/dockerjava/api/model/Ports_addBindingsTest.java +++ b/src/test/java/com/github/dockerjava/api/model/Ports_addBindingsTest.java @@ -1,13 +1,12 @@ package com.github.dockerjava.api.model; -import static org.testng.Assert.assertEquals; - -import java.util.Map; - +import com.github.dockerjava.api.model.Ports.Binding; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import com.github.dockerjava.api.model.Ports.Binding; +import java.util.Map; + +import static org.testng.Assert.assertEquals; /** * As there may be several {@link Binding}s per {@link ExposedPort}, it makes a difference if you add {@link PortBinding}s for the same or @@ -18,9 +17,9 @@ public class Ports_addBindingsTest { private static final ExposedPort TCP_90 = ExposedPort.tcp(90); - private static final Binding BINDING_8080 = Ports.binding(8080); + private static final Binding BINDING_8080 = Binding.bindPort(8080); - private static final Binding BINDING_9090 = Ports.binding(9090); + private static final Binding BINDING_9090 = Binding.bindPort(9090); private Ports ports; diff --git a/src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java b/src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java index ba05ab4e3..aee8a60a8 100644 --- a/src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java +++ b/src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java @@ -1,17 +1,69 @@ package com.github.dockerjava.core; +import com.github.dockerjava.api.async.ResultCallback; +import com.github.dockerjava.api.command.AttachContainerCmd; +import com.github.dockerjava.api.command.AuthCmd.Exec; +import com.github.dockerjava.api.command.BuildImageCmd; +import com.github.dockerjava.api.command.CommitCmd; +import com.github.dockerjava.api.command.ConnectToNetworkCmd; +import com.github.dockerjava.api.command.ContainerDiffCmd; +import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd; +import com.github.dockerjava.api.command.CopyArchiveToContainerCmd; +import com.github.dockerjava.api.command.CopyFileFromContainerCmd; +import com.github.dockerjava.api.command.CreateContainerCmd; +import com.github.dockerjava.api.command.CreateContainerResponse; +import com.github.dockerjava.api.command.CreateImageCmd; +import com.github.dockerjava.api.command.CreateImageResponse; +import com.github.dockerjava.api.command.CreateNetworkCmd; +import com.github.dockerjava.api.command.CreateNetworkResponse; +import com.github.dockerjava.api.command.CreateVolumeCmd; +import com.github.dockerjava.api.command.CreateVolumeResponse; +import com.github.dockerjava.api.command.DisconnectFromNetworkCmd; +import com.github.dockerjava.api.command.DockerCmdExecFactory; +import com.github.dockerjava.api.command.EventsCmd; +import com.github.dockerjava.api.command.ExecCreateCmd; +import com.github.dockerjava.api.command.ExecStartCmd; +import com.github.dockerjava.api.command.InfoCmd; +import com.github.dockerjava.api.command.InspectContainerCmd; +import com.github.dockerjava.api.command.InspectExecCmd; +import com.github.dockerjava.api.command.InspectImageCmd; +import com.github.dockerjava.api.command.InspectNetworkCmd; +import com.github.dockerjava.api.command.InspectVolumeCmd; +import com.github.dockerjava.api.command.KillContainerCmd; +import com.github.dockerjava.api.command.ListContainersCmd; +import com.github.dockerjava.api.command.ListImagesCmd; +import com.github.dockerjava.api.command.ListNetworksCmd; +import com.github.dockerjava.api.command.ListVolumesCmd; +import com.github.dockerjava.api.command.LogContainerCmd; +import com.github.dockerjava.api.command.PauseContainerCmd; +import com.github.dockerjava.api.command.PingCmd; +import com.github.dockerjava.api.command.PullImageCmd; +import com.github.dockerjava.api.command.PushImageCmd; +import com.github.dockerjava.api.command.RemoveContainerCmd; +import com.github.dockerjava.api.command.RemoveImageCmd; +import com.github.dockerjava.api.command.RemoveNetworkCmd; +import com.github.dockerjava.api.command.RemoveVolumeCmd; +import com.github.dockerjava.api.command.RenameContainerCmd; +import com.github.dockerjava.api.command.RestartContainerCmd; +import com.github.dockerjava.api.command.SaveImageCmd; +import com.github.dockerjava.api.command.SearchImagesCmd; +import com.github.dockerjava.api.command.StartContainerCmd; +import com.github.dockerjava.api.command.StatsCmd; +import com.github.dockerjava.api.command.StopContainerCmd; +import com.github.dockerjava.api.command.TagImageCmd; +import com.github.dockerjava.api.command.TopContainerCmd; +import com.github.dockerjava.api.command.UnpauseContainerCmd; +import com.github.dockerjava.api.command.UpdateContainerCmd; +import com.github.dockerjava.api.command.VersionCmd; +import com.github.dockerjava.api.command.WaitContainerCmd; +import com.github.dockerjava.api.model.BuildResponseItem; + +import javax.net.ssl.SSLContext; import java.io.IOException; import java.security.SecureRandom; import java.util.ArrayList; import java.util.List; -import javax.net.ssl.SSLContext; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.*; -import com.github.dockerjava.api.command.AuthCmd.Exec; -import com.github.dockerjava.api.model.BuildResponseItem; - /** * Special {@link DockerCmdExecFactory} implementation that collects container and image creations while test execution for the purpose of * automatically cleanup. diff --git a/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java index 99eefb4de..c0dc967d4 100644 --- a/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java @@ -34,6 +34,7 @@ import com.github.dockerjava.api.model.ExposedPort; import com.github.dockerjava.api.model.PortBinding; import com.github.dockerjava.api.model.Ports; +import com.github.dockerjava.api.model.Ports.Binding; import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.core.util.CompressArchiveUtil; @@ -263,7 +264,7 @@ public void testBuildFromPrivateRegistry() throws Exception { CreateContainerResponse testregistry = dockerClient .createContainerCmd("testregistry:2") .withName("registry") - .withPortBindings(new PortBinding(new Ports.Binding(5000), ExposedPort.tcp(5000))) + .withPortBindings(new PortBinding(Binding.bindPort(5000), ExposedPort.tcp(5000))) .withEnv("REGISTRY_AUTH=htpasswd", "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm", "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd", "REGISTRY_LOG_LEVEL=debug", "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt", "REGISTRY_HTTP_TLS_KEY=/certs/domain.key") diff --git a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java index f2fd32b6a..bc5a7d940 100644 --- a/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java @@ -15,7 +15,9 @@ import com.github.dockerjava.api.model.Ulimit; import com.github.dockerjava.api.model.Volume; import com.github.dockerjava.api.model.VolumesFrom; +import com.github.dockerjava.api.model.Ports.Binding; import com.github.dockerjava.client.AbstractDockerClientTest; + import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -361,9 +363,9 @@ public void createContainerWithPortBindings() throws DockerException { ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); - portBindings.bind(tcp22, Ports.binding(11022)); - portBindings.bind(tcp23, Ports.binding(11023)); - portBindings.bind(tcp23, Ports.binding(11024)); + portBindings.bind(tcp22, Binding.bindPort(11022)); + portBindings.bind(tcp23, Binding.bindPort(11023)); + portBindings.bind(tcp23, Binding.bindPort(11024)); CreateContainerResponse container = dockerClient.createContainerCmd(BUSYBOX_IMAGE).withCmd("true") .withExposedPorts(tcp22, tcp23).withPortBindings(portBindings).exec(); @@ -377,13 +379,13 @@ public void createContainerWithPortBindings() throws DockerException { assertThat(Arrays.asList(inspectContainerResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp22)[0], - is(equalTo(Ports.binding(11022)))); + is(equalTo(Binding.bindPort(11022)))); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23)[0], - is(equalTo(Ports.binding(11023)))); + is(equalTo(Binding.bindPort(11023)))); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23)[1], - is(equalTo(Ports.binding(11024)))); + is(equalTo(Binding.bindPort(11024)))); } diff --git a/src/test/java/com/github/dockerjava/core/command/RenameContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/RenameContainerCmdImplTest.java index 9f503a87b..582ab2556 100644 --- a/src/test/java/com/github/dockerjava/core/command/RenameContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/RenameContainerCmdImplTest.java @@ -6,12 +6,17 @@ import com.github.dockerjava.api.exception.NotFoundException; import com.github.dockerjava.client.AbstractDockerClientTest; import org.testng.ITestResult; -import org.testng.annotations.*; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.AfterTest; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; import java.lang.reflect.Method; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; +import static org.hamcrest.Matchers.isEmptyString; +import static org.hamcrest.Matchers.not; @Test(groups = "integration") public class RenameContainerCmdImplTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/core/command/StartContainerCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/StartContainerCmdImplTest.java index a2f1e51d8..2b32e00c5 100644 --- a/src/test/java/com/github/dockerjava/core/command/StartContainerCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/StartContainerCmdImplTest.java @@ -1,31 +1,5 @@ package com.github.dockerjava.core.command; -import static com.github.dockerjava.api.model.AccessMode.ro; -import static com.github.dockerjava.api.model.Capability.MKNOD; -import static com.github.dockerjava.api.model.Capability.NET_ADMIN; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.isEmptyString; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.startsWith; - -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; - -import org.testng.ITestResult; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - import com.fasterxml.jackson.databind.ObjectMapper; import com.github.dockerjava.api.command.CreateContainerResponse; import com.github.dockerjava.api.command.InspectContainerResponse; @@ -41,8 +15,35 @@ import com.github.dockerjava.api.model.RestartPolicy; import com.github.dockerjava.api.model.Volume; import com.github.dockerjava.api.model.VolumesFrom; +import com.github.dockerjava.api.model.Ports.Binding; import com.github.dockerjava.client.AbstractDockerClientTest; +import org.testng.ITestResult; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.AfterTest; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; + +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +import static com.github.dockerjava.api.model.AccessMode.ro; +import static com.github.dockerjava.api.model.Capability.MKNOD; +import static com.github.dockerjava.api.model.Capability.NET_ADMIN; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.isEmptyString; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.startsWith; + @Test(groups = "integration") public class StartContainerCmdImplTest extends AbstractDockerClientTest { @@ -189,9 +190,9 @@ public void startContainerWithPortBindings() throws DockerException { ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); - portBindings.bind(tcp22, Ports.binding(11022)); - portBindings.bind(tcp23, Ports.binding(11023)); - portBindings.bind(tcp23, Ports.binding(11024)); + portBindings.bind(tcp22, Binding.bindPort(11022)); + portBindings.bind(tcp23, Binding.bindPort(11023)); + portBindings.bind(tcp23, Binding.bindPort(11024)); CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("true") .withExposedPorts(tcp22, tcp23).withPortBindings(portBindings).exec(); @@ -209,13 +210,13 @@ public void startContainerWithPortBindings() throws DockerException { assertThat(Arrays.asList(inspectContainerResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp22)[0], - is(equalTo(Ports.binding(11022)))); + is(equalTo(Binding.bindPort(11022)))); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23)[0], - is(equalTo(Ports.binding(11023)))); + is(equalTo(Binding.bindPort(11023)))); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23)[1], - is(equalTo(Ports.binding(11024)))); + is(equalTo(Binding.bindPort(11024)))); } @@ -226,8 +227,8 @@ public void startContainerWithRandomPortBindings() throws DockerException { ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); - portBindings.bind(tcp22, Ports.binding(null)); - portBindings.bind(tcp23, Ports.binding(null)); + portBindings.bind(tcp22, Binding.empty()); + portBindings.bind(tcp23, Binding.empty()); CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("sleep", "9999") .withExposedPorts(tcp22, tcp23).withPortBindings(portBindings).withPublishAllPorts(true).exec(); @@ -242,11 +243,11 @@ public void startContainerWithRandomPortBindings() throws DockerException { assertThat(Arrays.asList(inspectContainerResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); - assertThat(inspectContainerResponse.getNetworkSettings().getPorts().getBindings().get(tcp22)[0].getHostPort(), - is(not(equalTo(tcp22.getPort())))); + assertThat(inspectContainerResponse.getNetworkSettings().getPorts().getBindings().get(tcp22)[0].getHostPortSpec(), + is(not(equalTo(String.valueOf(tcp22.getPort()))))); - assertThat(inspectContainerResponse.getNetworkSettings().getPorts().getBindings().get(tcp23)[0].getHostPort(), - is(not(equalTo(tcp23.getPort())))); + assertThat(inspectContainerResponse.getNetworkSettings().getPorts().getBindings().get(tcp23)[0].getHostPortSpec(), + is(not(equalTo(String.valueOf(tcp23.getPort()))))); } @@ -257,8 +258,8 @@ public void startContainerWithConflictingPortBindings() throws DockerException { ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); - portBindings.bind(tcp22, Ports.binding(11022)); - portBindings.bind(tcp23, Ports.binding(11022)); + portBindings.bind(tcp22, Binding.bindPort(11022)); + portBindings.bind(tcp23, Binding.bindPort(11022)); CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("true") .withExposedPorts(tcp22, tcp23).withPortBindings(portBindings).exec(); diff --git a/src/test/java/com/github/dockerjava/core/util/FiltersBuilderTest.java b/src/test/java/com/github/dockerjava/core/util/FiltersBuilderTest.java index 25027ae76..e70a3b057 100644 --- a/src/test/java/com/github/dockerjava/core/util/FiltersBuilderTest.java +++ b/src/test/java/com/github/dockerjava/core/util/FiltersBuilderTest.java @@ -1,13 +1,12 @@ package com.github.dockerjava.core.util; -import com.github.dockerjava.core.util.FiltersBuilder; import com.google.common.collect.Maps; - import org.testng.annotations.Test; import java.util.Map; -import static org.testng.Assert.*; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotEquals; /** * @author Vincent Latombe diff --git a/src/test/java/com/github/dockerjava/netty/exec/BuildImageCmdExecTest.java b/src/test/java/com/github/dockerjava/netty/exec/BuildImageCmdExecTest.java index 1299cf6ae..92975f38f 100644 --- a/src/test/java/com/github/dockerjava/netty/exec/BuildImageCmdExecTest.java +++ b/src/test/java/com/github/dockerjava/netty/exec/BuildImageCmdExecTest.java @@ -34,6 +34,7 @@ import com.github.dockerjava.api.model.ExposedPort; import com.github.dockerjava.api.model.PortBinding; import com.github.dockerjava.api.model.Ports; +import com.github.dockerjava.api.model.Ports.Binding; import com.github.dockerjava.core.command.BuildImageResultCallback; import com.github.dockerjava.core.command.PushImageResultCallback; import com.github.dockerjava.core.command.WaitContainerResultCallback; @@ -255,7 +256,7 @@ public void testBuildFromPrivateRegistry() throws Exception { CreateContainerResponse testregistry = dockerClient .createContainerCmd("testregistry:2") .withName("registry") - .withPortBindings(new PortBinding(new Ports.Binding(5000), ExposedPort.tcp(5000))) + .withPortBindings(new PortBinding(Binding.bindPort(5000), ExposedPort.tcp(5000))) .withEnv("REGISTRY_AUTH=htpasswd", "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm", "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd", "REGISTRY_LOG_LEVEL=debug", "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt", "REGISTRY_HTTP_TLS_KEY=/certs/domain.key") diff --git a/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java b/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java index 02c5cc54e..4231a5f72 100644 --- a/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java +++ b/src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java @@ -1,33 +1,5 @@ package com.github.dockerjava.netty.exec; -import static com.github.dockerjava.api.model.Capability.MKNOD; -import static com.github.dockerjava.api.model.Capability.NET_ADMIN; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasItemInArray; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.isEmptyString; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.startsWith; - -import java.lang.reflect.Method; -import java.security.SecureRandom; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.testng.ITestResult; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - import com.github.dockerjava.api.command.CreateContainerResponse; import com.github.dockerjava.api.command.InspectContainerResponse; import com.github.dockerjava.api.exception.ConflictException; @@ -38,12 +10,41 @@ import com.github.dockerjava.api.model.Link; import com.github.dockerjava.api.model.LogConfig; import com.github.dockerjava.api.model.Ports; +import com.github.dockerjava.api.model.Ports.Binding; import com.github.dockerjava.api.model.RestartPolicy; import com.github.dockerjava.api.model.Ulimit; import com.github.dockerjava.api.model.Volume; import com.github.dockerjava.api.model.VolumesFrom; import com.github.dockerjava.netty.AbstractNettyDockerClientTest; +import org.testng.ITestResult; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.AfterTest; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; + +import java.lang.reflect.Method; +import java.security.SecureRandom; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import static com.github.dockerjava.api.model.Capability.MKNOD; +import static com.github.dockerjava.api.model.Capability.NET_ADMIN; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasItemInArray; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.isEmptyString; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.startsWith; + @Test(groups = "integration") public class CreateContainerCmdExecTest extends AbstractNettyDockerClientTest { @@ -352,9 +353,9 @@ public void createContainerWithPortBindings() throws DockerException { ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); - portBindings.bind(tcp22, Ports.binding(11022)); - portBindings.bind(tcp23, Ports.binding(11023)); - portBindings.bind(tcp23, Ports.binding(11024)); + portBindings.bind(tcp22, Binding.bindPort(11022)); + portBindings.bind(tcp23, Binding.bindPort(11023)); + portBindings.bind(tcp23, Binding.bindPort(11024)); CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("true") .withExposedPorts(tcp22, tcp23).withPortBindings(portBindings).exec(); @@ -368,13 +369,13 @@ public void createContainerWithPortBindings() throws DockerException { assertThat(Arrays.asList(inspectContainerResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp22)[0], - is(equalTo(Ports.binding(11022)))); + is(equalTo(Binding.bindPort(11022)))); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23)[0], - is(equalTo(Ports.binding(11023)))); + is(equalTo(Binding.bindPort(11023)))); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23)[1], - is(equalTo(Ports.binding(11024)))); + is(equalTo(Binding.bindPort(11024)))); } diff --git a/src/test/java/com/github/dockerjava/netty/exec/RenameContainerCmdExecTest.java b/src/test/java/com/github/dockerjava/netty/exec/RenameContainerCmdExecTest.java index c176bc1d6..100a7d772 100644 --- a/src/test/java/com/github/dockerjava/netty/exec/RenameContainerCmdExecTest.java +++ b/src/test/java/com/github/dockerjava/netty/exec/RenameContainerCmdExecTest.java @@ -6,12 +6,17 @@ import com.github.dockerjava.api.exception.NotFoundException; import com.github.dockerjava.netty.AbstractNettyDockerClientTest; import org.testng.ITestResult; -import org.testng.annotations.*; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.AfterTest; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; import java.lang.reflect.Method; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; +import static org.hamcrest.Matchers.isEmptyString; +import static org.hamcrest.Matchers.not; @Test(groups = "integration") public class RenameContainerCmdExecTest extends AbstractNettyDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/netty/exec/StartContainerCmdExecTest.java b/src/test/java/com/github/dockerjava/netty/exec/StartContainerCmdExecTest.java index 6c70c1f07..f4a36c2b1 100644 --- a/src/test/java/com/github/dockerjava/netty/exec/StartContainerCmdExecTest.java +++ b/src/test/java/com/github/dockerjava/netty/exec/StartContainerCmdExecTest.java @@ -1,31 +1,5 @@ package com.github.dockerjava.netty.exec; -import static com.github.dockerjava.api.model.AccessMode.ro; -import static com.github.dockerjava.api.model.Capability.MKNOD; -import static com.github.dockerjava.api.model.Capability.NET_ADMIN; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.isEmptyString; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.startsWith; - -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; - -import org.testng.ITestResult; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; - import com.fasterxml.jackson.databind.ObjectMapper; import com.github.dockerjava.api.command.CreateContainerResponse; import com.github.dockerjava.api.command.InspectContainerResponse; @@ -41,9 +15,36 @@ import com.github.dockerjava.api.model.RestartPolicy; import com.github.dockerjava.api.model.Volume; import com.github.dockerjava.api.model.VolumesFrom; +import com.github.dockerjava.api.model.Ports.Binding; import com.github.dockerjava.core.command.WaitContainerResultCallback; import com.github.dockerjava.netty.AbstractNettyDockerClientTest; +import org.testng.ITestResult; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.AfterTest; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; + +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +import static com.github.dockerjava.api.model.AccessMode.ro; +import static com.github.dockerjava.api.model.Capability.MKNOD; +import static com.github.dockerjava.api.model.Capability.NET_ADMIN; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.isEmptyString; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.startsWith; + @Test(groups = "integration") public class StartContainerCmdExecTest extends AbstractNettyDockerClientTest { @@ -192,9 +193,9 @@ public void startContainerWithPortBindings() throws DockerException { ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); - portBindings.bind(tcp22, Ports.binding(11022)); - portBindings.bind(tcp23, Ports.binding(11023)); - portBindings.bind(tcp23, Ports.binding(11024)); + portBindings.bind(tcp22, Binding.bindPort(11022)); + portBindings.bind(tcp23, Binding.bindPort(11023)); + portBindings.bind(tcp23, Binding.bindPort(11024)); CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("true") .withExposedPorts(tcp22, tcp23).withPortBindings(portBindings).exec(); @@ -212,13 +213,13 @@ public void startContainerWithPortBindings() throws DockerException { assertThat(Arrays.asList(inspectContainerResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp22)[0], - is(equalTo(Ports.binding(11022)))); + is(equalTo(Binding.bindPort(11022)))); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23)[0], - is(equalTo(Ports.binding(11023)))); + is(equalTo(Binding.bindPort(11023)))); assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23)[1], - is(equalTo(Ports.binding(11024)))); + is(equalTo(Binding.bindPort(11024)))); } @@ -229,8 +230,8 @@ public void startContainerWithRandomPortBindings() throws DockerException { ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); - portBindings.bind(tcp22, Ports.binding(null)); - portBindings.bind(tcp23, Ports.binding(null)); + portBindings.bind(tcp22, Binding.empty()); + portBindings.bind(tcp23, Binding.empty()); CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("sleep", "9999") .withExposedPorts(tcp22, tcp23).withPortBindings(portBindings).withPublishAllPorts(true).exec(); @@ -245,11 +246,11 @@ public void startContainerWithRandomPortBindings() throws DockerException { assertThat(Arrays.asList(inspectContainerResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); - assertThat(inspectContainerResponse.getNetworkSettings().getPorts().getBindings().get(tcp22)[0].getHostPort(), - is(not(equalTo(tcp22.getPort())))); + assertThat(inspectContainerResponse.getNetworkSettings().getPorts().getBindings().get(tcp22)[0].getHostPortSpec(), + is(not(equalTo(String.valueOf(tcp22.getPort()))))); - assertThat(inspectContainerResponse.getNetworkSettings().getPorts().getBindings().get(tcp23)[0].getHostPort(), - is(not(equalTo(tcp23.getPort())))); + assertThat(inspectContainerResponse.getNetworkSettings().getPorts().getBindings().get(tcp23)[0].getHostPortSpec(), + is(not(equalTo(String.valueOf(tcp23.getPort()))))); } @@ -260,8 +261,8 @@ public void startContainerWithConflictingPortBindings() throws DockerException { ExposedPort tcp23 = ExposedPort.tcp(23); Ports portBindings = new Ports(); - portBindings.bind(tcp22, Ports.binding(11022)); - portBindings.bind(tcp23, Ports.binding(11022)); + portBindings.bind(tcp22, Binding.bindPort(11022)); + portBindings.bind(tcp23, Binding.bindPort(11022)); CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("true") .withExposedPorts(tcp22, tcp23).withPortBindings(portBindings).exec();