Skip to content

Commit 3ad75e0

Browse files
msekundaKostyaSha
authored andcommitted
add support for PidsLimit docker-java#734 (docker-java#764)
* add support for PidsLimit docker-java#734 * add support for PidsLimit docker-java#734 - using hamcrest in assertions * add support for PidsLimit docker-java#734 - remove proxing * add support for PidsLimit docker-java#734 - remove proxing * add support for PidsLimit docker-java#734 - formatting fixed
1 parent 5b8ed07 commit 3ad75e0

File tree

3 files changed

+71
-4
lines changed

3 files changed

+71
-4
lines changed

src/main/java/com/github/dockerjava/api/model/HostConfig.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,12 @@ public class HostConfig implements Serializable {
194194
@JsonProperty("ShmSize")
195195
private Long shmSize;
196196

197+
/**
198+
* @since ~{@link RemoteApiVersion#VERSION_1_23}
199+
*/
200+
@JsonProperty("PidsLimit")
201+
private Long pidsLimit;
202+
197203

198204
@JsonIgnore
199205
public Bind[] getBinds() {
@@ -415,6 +421,14 @@ public String getVolumeDriver() {
415421
return volumeDriver;
416422
}
417423

424+
/**
425+
* @see #pidsLimit
426+
*/
427+
@CheckForNull
428+
public Long getPidsLimit() {
429+
return pidsLimit;
430+
}
431+
418432
/**
419433
* Parse the network mode as specified at
420434
* {@see https://github.com/docker/engine-api/blob/master/types/container/hostconfig_unix.go}
@@ -794,6 +808,14 @@ public HostConfig withVolumesFrom(VolumesFrom[] volumesFrom) {
794808
this.volumesFrom = volumesFrom;
795809
return this;
796810
}
811+
812+
/**
813+
* @see #pidsLimit
814+
*/
815+
public HostConfig withPidsLimit(Long pidsLimit) {
816+
this.pidsLimit = pidsLimit;
817+
return this;
818+
}
797819
// end of auto-generated
798820

799821
@Override

src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222
import com.github.dockerjava.api.model.Ports.Binding;
2323
import com.github.dockerjava.client.AbstractDockerClientTest;
2424

25+
import com.github.dockerjava.core.RemoteApiVersion;
2526
import org.apache.commons.io.FileUtils;
2627
import org.testng.ITestResult;
28+
import org.testng.SkipException;
2729
import org.testng.annotations.AfterMethod;
2830
import org.testng.annotations.AfterTest;
2931
import org.testng.annotations.BeforeMethod;
@@ -34,14 +36,14 @@
3436
import java.lang.reflect.Method;
3537
import java.security.SecureRandom;
3638
import java.util.Arrays;
37-
import java.util.Collections;
3839
import java.util.HashMap;
3940
import java.util.Map;
4041
import java.util.UUID;
4142
import java.util.concurrent.TimeUnit;
4243

4344
import static com.github.dockerjava.api.model.Capability.MKNOD;
4445
import static com.github.dockerjava.api.model.Capability.NET_ADMIN;
46+
import static com.github.dockerjava.utils.TestUtils.getVersion;
4547
import static org.hamcrest.MatcherAssert.assertThat;
4648
import static org.hamcrest.Matchers.contains;
4749
import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -751,6 +753,28 @@ public void createContainerWithShmSize() throws DockerException {
751753

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

754-
assertEquals(inspectContainerResponse.getHostConfig().getShmSize(), hostConfig.getShmSize());
756+
assertThat(inspectContainerResponse.getHostConfig().getShmSize(), is(hostConfig.getShmSize()));
757+
}
758+
759+
@SuppressWarnings("Duplicates")
760+
@Test
761+
public void createContainerWithShmPidsLimit() throws DockerException {
762+
final RemoteApiVersion apiVersion = getVersion(dockerClient);
763+
764+
if (!apiVersion.isGreaterOrEqual(RemoteApiVersion.VERSION_1_23)) {
765+
throw new SkipException("API version should be >= 1.23");
766+
}
767+
768+
HostConfig hostConfig = new HostConfig().withPidsLimit(2L);
769+
CreateContainerResponse container = dockerClient.createContainerCmd(BUSYBOX_IMAGE)
770+
.withHostConfig(hostConfig).withCmd("true").exec();
771+
772+
LOG.info("Created container {}", container.toString());
773+
774+
assertThat(container.getId(), not(isEmptyString()));
775+
776+
InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();
777+
778+
assertThat(inspectContainerResponse.getHostConfig().getPidsLimit(), is(hostConfig.getPidsLimit()));
755779
}
756780
}

src/test/java/com/github/dockerjava/netty/exec/CreateContainerCmdExecTest.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import java.lang.reflect.Method;
3737
import java.security.SecureRandom;
3838
import java.util.Arrays;
39-
import java.util.Collections;
4039
import java.util.HashMap;
4140
import java.util.Map;
4241
import java.util.UUID;
@@ -729,6 +728,28 @@ public void createContainerWithShmSize() throws DockerException {
729728

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

732-
assertEquals(inspectContainerResponse.getHostConfig().getShmSize(), hostConfig.getShmSize());
731+
assertThat(inspectContainerResponse.getHostConfig().getShmSize(), is(hostConfig.getShmSize()));
732+
}
733+
734+
@SuppressWarnings("Duplicates")
735+
@Test
736+
public void createContainerWithShmPidsLimit() throws DockerException {
737+
final RemoteApiVersion apiVersion = getVersion(dockerClient);
738+
739+
if (!apiVersion.isGreaterOrEqual(RemoteApiVersion.VERSION_1_23)) {
740+
throw new SkipException("API version should be >= 1.23");
741+
}
742+
743+
HostConfig hostConfig = new HostConfig().withPidsLimit(2L);
744+
CreateContainerResponse container = dockerClient.createContainerCmd(BUSYBOX_IMAGE)
745+
.withHostConfig(hostConfig).withCmd("true").exec();
746+
747+
LOG.info("Created container {}", container.toString());
748+
749+
assertThat(container.getId(), not(isEmptyString()));
750+
751+
InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();
752+
753+
assertThat(inspectContainerResponse.getHostConfig().getPidsLimit(), is(hostConfig.getPidsLimit()));
733754
}
734755
}

0 commit comments

Comments
 (0)