From e6227e41aa518f374718e0ff3ffcc80add5f4877 Mon Sep 17 00:00:00 2001 From: dmmax Date: Mon, 21 Aug 2023 16:29:58 +0200 Subject: [PATCH 1/2] Fixing flaky test `ListContainersCmdIT.testStatusFilter` --- .../dockerjava/cmd/ListContainersCmdIT.java | 60 ++++++++++++------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java index a94a02f82..9b7c96d7f 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java @@ -188,16 +188,8 @@ public void testIdsFilter() { } @Test - public void testStatusFilter() { - String id1, id2; - id1 = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) - .withCmd("sh", "-c", "sleep 99999") - .withLabels(testLabel) - .exec() - .getId(); - - id2 = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) - .withCmd("sh", "-c", "sleep 99999") + public void shouldFilterByCreatedStatus() { + String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) .withLabels(testLabel) .exec() .getId(); @@ -208,42 +200,66 @@ public void testStatusFilter() { .withStatusFilter(singletonList("created")) .exec(); - assertThat(filteredContainers.size(), is(2)); - assertThat(filteredContainers.get(1).getId(), isOneOf(id1, id2)); + assertThat(filteredContainers.size(), is(1)); + assertThat(filteredContainers.get(0).getId(), is(containerId)); + } - dockerRule.getClient().startContainerCmd(id1).exec(); + @Test + public void shouldFilterByRunningStatus() { + String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) + .withLabels(testLabel) + .exec() + .getId(); + dockerRule.getClient().startContainerCmd(containerId).exec(); - filteredContainers = dockerRule.getClient().listContainersCmd() + List filteredContainers = dockerRule.getClient().listContainersCmd() .withShowAll(true) .withLabelFilter(testLabel) .withStatusFilter(singletonList("running")) .exec(); assertThat(filteredContainers.size(), is(1)); - assertThat(filteredContainers.get(0).getId(), is(id1)); + assertThat(filteredContainers.get(0).getId(), is(containerId)); + } - dockerRule.getClient().pauseContainerCmd(id1).exec(); + @Test + public void shouldFilterByPausedStatus() { + String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) + .withCmd("sh", "-c", "sleep 99999") + .withLabels(testLabel) + .exec() + .getId(); + dockerRule.getClient().startContainerCmd(containerId).exec(); + dockerRule.getClient().pauseContainerCmd(containerId).exec(); - filteredContainers = dockerRule.getClient().listContainersCmd() + List filteredContainers = dockerRule.getClient().listContainersCmd() .withShowAll(true) .withLabelFilter(testLabel) .withStatusFilter(singletonList("paused")) .exec(); assertThat(filteredContainers.size(), is(1)); - assertThat(filteredContainers.get(0).getId(), is(id1)); + assertThat(filteredContainers.get(0).getId(), is(containerId)); + } - dockerRule.getClient().unpauseContainerCmd(id1).exec(); - dockerRule.getClient().stopContainerCmd(id1).exec(); + @Test + public void shouldFilterByExitedStatus() { + String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) + .withCmd("sh", "-c", "sleep 99999") + .withLabels(testLabel) + .exec() + .getId(); + dockerRule.getClient().startContainerCmd(containerId).exec(); + dockerRule.getClient().killContainerCmd(containerId).exec(); - filteredContainers = dockerRule.getClient().listContainersCmd() + List filteredContainers = dockerRule.getClient().listContainersCmd() .withShowAll(true) .withLabelFilter(testLabel) .withStatusFilter(singletonList("exited")) .exec(); assertThat(filteredContainers.size(), is(1)); - assertThat(filteredContainers.get(0).getId(), is(id1)); + assertThat(filteredContainers.get(0).getId(), is(containerId)); } @Test From 1e0886b59deb54619812871bd5d0c29fa53cd649 Mon Sep 17 00:00:00 2001 From: dmmax Date: Wed, 23 Aug 2023 13:00:37 +0200 Subject: [PATCH 2/2] Add wait for a container after stop --- .../java/com/github/dockerjava/cmd/ListContainersCmdIT.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java index 9b7c96d7f..c03df2a55 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.concurrent.TimeUnit; import static ch.lambdaj.Lambda.filter; import static com.github.dockerjava.api.model.HostConfig.newHostConfig; @@ -243,14 +244,15 @@ public void shouldFilterByPausedStatus() { } @Test - public void shouldFilterByExitedStatus() { + public void shouldFilterByExitedStatus() throws InterruptedException { String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE) .withCmd("sh", "-c", "sleep 99999") .withLabels(testLabel) .exec() .getId(); dockerRule.getClient().startContainerCmd(containerId).exec(); - dockerRule.getClient().killContainerCmd(containerId).exec(); + dockerRule.getClient().stopContainerCmd(containerId).exec(); + dockerRule.getClient().waitContainerCmd(containerId).start().awaitCompletion(15, TimeUnit.SECONDS); List filteredContainers = dockerRule.getClient().listContainersCmd() .withShowAll(true)