diff --git a/test/e2e/rmi_test.go b/test/e2e/rmi_test.go index 10e9f496f3..535d458ec6 100644 --- a/test/e2e/rmi_test.go +++ b/test/e2e/rmi_test.go @@ -266,22 +266,33 @@ RUN find $LOCAL podmanTest.AddImageToRWStore(CIRROS_IMAGE) var wg sync.WaitGroup - buildAndRemove := func(i int) { - defer GinkgoRecover() - defer wg.Done() - imageName := fmt.Sprintf("rmtest:%d", i) - containerfile := fmt.Sprintf(`FROM %s -RUN touch %s`, CIRROS_IMAGE, imageName) - - podmanTest.BuildImage(containerfile, imageName, "false") - session := podmanTest.Podman([]string{"rmi", "-f", imageName}) - session.WaitWithDefaultTimeout() - Expect(session).Should(Exit(0)) - } - + // Prepare images wg.Add(10) for i := 0; i < 10; i++ { - go buildAndRemove(i) + go func(i int) { + defer GinkgoRecover() + defer wg.Done() + imageName := fmt.Sprintf("rmtest:%d", i) + containerfile := fmt.Sprintf(`FROM %s + RUN touch %s`, CIRROS_IMAGE, imageName) + + podmanTest.BuildImage(containerfile, imageName, "false") + }(i) + } + wg.Wait() + + // A herd of concurrent removals + wg.Add(10) + for i := 0; i < 10; i++ { + go func(i int) { + defer GinkgoRecover() + defer wg.Done() + + imageName := fmt.Sprintf("rmtest:%d", i) + session := podmanTest.Podman([]string{"rmi", "-f", imageName}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + }(i) } wg.Wait() })