summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Evich <cevich@redhat.com>2019-04-03 10:17:40 -0400
committerChris Evich <cevich@redhat.com>2019-04-03 11:04:35 -0400
commitfc4105ddbe0bf46cdd46928f6a0d2a7de373ebc9 (patch)
tree5715f67322f04e3ab9b67bdc4de0c269358833f3
parent2ad5f5cc25844d0723116149b42e04ab310269f4 (diff)
downloadpodman-fc4105ddbe0bf46cdd46928f6a0d2a7de373ebc9.tar.gz
podman-fc4105ddbe0bf46cdd46928f6a0d2a7de373ebc9.tar.bz2
podman-fc4105ddbe0bf46cdd46928f6a0d2a7de373ebc9.zip
Improve podman pod rm -a test
When running as a user, the order of removal is database ID dependent. This results in this test randomly failing. This condition was very difficult to debug and the test was missing two critical checks. One to confirm an expected error message was produced, and another to verify the expected running container, remains running. Fix the container and missing error-message checks, and vastly improve the debug-ability of this test. Fixing the random-failures requires intensive fixes in other areas, so that task will be left up to future work. Signed-off-by: Chris Evich <cevich@redhat.com>
-rw-r--r--test/e2e/pod_rm_test.go32
1 files changed, 23 insertions, 9 deletions
diff --git a/test/e2e/pod_rm_test.go b/test/e2e/pod_rm_test.go
index f9d7abe8f..5da3d563b 100644
--- a/test/e2e/pod_rm_test.go
+++ b/test/e2e/pod_rm_test.go
@@ -3,6 +3,7 @@
package integration
import (
+ "fmt"
"os"
. "github.com/containers/libpod/test/utils"
@@ -95,28 +96,41 @@ var _ = Describe("Podman pod rm", func() {
})
It("podman pod rm -a doesn't remove a running container", func() {
+ fmt.Printf("To start, there are %d pods\n", podmanTest.NumberOfPods())
_, ec, podid1 := podmanTest.CreatePod("")
Expect(ec).To(Equal(0))
_, ec, _ = podmanTest.CreatePod("")
Expect(ec).To(Equal(0))
+ fmt.Printf("Started %d pods\n", podmanTest.NumberOfPods())
session := podmanTest.RunTopContainerInPod("", podid1)
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
+ podmanTest.WaitForContainer()
+ Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
+ fmt.Printf("Started container running in one pod")
+ num_pods := podmanTest.NumberOfPods()
+ Expect(num_pods).To(Equal(2))
+ ps := podmanTest.Podman([]string{"pod", "ps"})
+ ps.WaitWithDefaultTimeout()
+ fmt.Printf("Current %d pod(s):\n%s\n", num_pods, ps.OutputToString())
+
+ fmt.Printf("Removing all empty pods\n")
result := podmanTest.Podman([]string{"pod", "rm", "-a"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Not(Equal(0)))
-
- result = podmanTest.Podman([]string{"ps", "-q"})
- result.WaitWithDefaultTimeout()
- Expect(len(result.OutputToStringArray())).To(Equal(1))
-
- // one pod should have been deleted
- result = podmanTest.Podman([]string{"pod", "ps", "-q"})
- result.WaitWithDefaultTimeout()
- Expect(len(result.OutputToStringArray())).To(Equal(1))
+ foundExpectedError, _ := result.ErrorGrepString("contains containers and cannot be removed")
+ Expect(foundExpectedError).To(Equal(true))
+
+ num_pods = podmanTest.NumberOfPods()
+ ps = podmanTest.Podman([]string{"pod", "ps"})
+ ps.WaitWithDefaultTimeout()
+ fmt.Printf("Final %d pod(s):\n%s\n", num_pods, ps.OutputToString())
+ Expect(num_pods).To(Equal(1))
+ // Confirm top container still running inside remaining pod
+ Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
})
It("podman pod rm -fa removes everything", func() {