github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/prune_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 6 . "github.com/containers/libpod/test/utils" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 ) 10 11 var pruneImage = ` 12 FROM alpine:latest 13 LABEL RUN podman --version 14 RUN apk update 15 RUN apk add bash` 16 17 var _ = Describe("Podman prune", func() { 18 var ( 19 tempdir string 20 err error 21 podmanTest *PodmanTestIntegration 22 ) 23 24 BeforeEach(func() { 25 tempdir, err = CreateTempDirInTempDir() 26 if err != nil { 27 os.Exit(1) 28 } 29 podmanTest = PodmanTestCreate(tempdir) 30 podmanTest.Setup() 31 podmanTest.SeedImages() 32 }) 33 34 AfterEach(func() { 35 podmanTest.Cleanup() 36 f := CurrentGinkgoTestDescription() 37 processTestResult(f) 38 39 }) 40 41 It("podman container prune containers", func() { 42 top := podmanTest.RunTopContainer("") 43 top.WaitWithDefaultTimeout() 44 Expect(top.ExitCode()).To(Equal(0)) 45 46 top = podmanTest.RunTopContainer("") 47 top.WaitWithDefaultTimeout() 48 Expect(top.ExitCode()).To(Equal(0)) 49 cid := top.OutputToString() 50 51 stop := podmanTest.Podman([]string{"stop", cid}) 52 stop.WaitWithDefaultTimeout() 53 Expect(stop.ExitCode()).To(Equal(0)) 54 55 prune := podmanTest.Podman([]string{"container", "prune", "-f"}) 56 prune.WaitWithDefaultTimeout() 57 Expect(prune.ExitCode()).To(Equal(0)) 58 59 Expect(podmanTest.NumberOfContainers()).To(Equal(1)) 60 }) 61 62 It("podman container prune after create containers", func() { 63 create := podmanTest.Podman([]string{"create", "--name", "test", BB}) 64 create.WaitWithDefaultTimeout() 65 Expect(create.ExitCode()).To(Equal(0)) 66 67 prune := podmanTest.Podman([]string{"container", "prune", "-f"}) 68 prune.WaitWithDefaultTimeout() 69 Expect(prune.ExitCode()).To(Equal(0)) 70 71 Expect(podmanTest.NumberOfContainers()).To(Equal(0)) 72 }) 73 74 It("podman container prune after create & init containers", func() { 75 create := podmanTest.Podman([]string{"create", "--name", "test", BB}) 76 create.WaitWithDefaultTimeout() 77 Expect(create.ExitCode()).To(Equal(0)) 78 79 init := podmanTest.Podman([]string{"init", "test"}) 80 init.WaitWithDefaultTimeout() 81 Expect(init.ExitCode()).To(Equal(0)) 82 83 prune := podmanTest.Podman([]string{"container", "prune", "-f"}) 84 prune.WaitWithDefaultTimeout() 85 Expect(prune.ExitCode()).To(Equal(0)) 86 87 Expect(podmanTest.NumberOfContainers()).To(Equal(0)) 88 }) 89 90 It("podman image prune none images", func() { 91 SkipIfRemote() 92 podmanTest.BuildImage(pruneImage, "alpine_bash:latest", "true") 93 94 none := podmanTest.Podman([]string{"images", "-a"}) 95 none.WaitWithDefaultTimeout() 96 Expect(none.ExitCode()).To(Equal(0)) 97 hasNone, _ := none.GrepString("<none>") 98 Expect(hasNone).To(BeTrue()) 99 100 prune := podmanTest.Podman([]string{"image", "prune", "-f"}) 101 prune.WaitWithDefaultTimeout() 102 Expect(prune.ExitCode()).To(Equal(0)) 103 104 after := podmanTest.Podman([]string{"images", "-a"}) 105 after.WaitWithDefaultTimeout() 106 Expect(none.ExitCode()).To(Equal(0)) 107 hasNoneAfter, _ := after.GrepString("<none>") 108 Expect(hasNoneAfter).To(BeFalse()) 109 Expect(len(after.OutputToStringArray()) > 1).To(BeTrue()) 110 }) 111 112 It("podman image prune unused images", func() { 113 podmanTest.RestoreAllArtifacts() 114 prune := podmanTest.PodmanNoCache([]string{"image", "prune", "-af"}) 115 prune.WaitWithDefaultTimeout() 116 Expect(prune.ExitCode()).To(Equal(0)) 117 118 images := podmanTest.PodmanNoCache([]string{"images", "-aq"}) 119 images.WaitWithDefaultTimeout() 120 // all images are unused, so they all should be deleted! 121 Expect(len(images.OutputToStringArray())).To(Equal(0)) 122 }) 123 124 It("podman system image prune unused images", func() { 125 SkipIfRemote() 126 podmanTest.RestoreAllArtifacts() 127 podmanTest.BuildImage(pruneImage, "alpine_bash:latest", "true") 128 prune := podmanTest.PodmanNoCache([]string{"system", "prune", "-a", "--force"}) 129 prune.WaitWithDefaultTimeout() 130 Expect(prune.ExitCode()).To(Equal(0)) 131 132 images := podmanTest.PodmanNoCache([]string{"images", "-aq"}) 133 images.WaitWithDefaultTimeout() 134 // all images are unused, so they all should be deleted! 135 Expect(len(images.OutputToStringArray())).To(Equal(0)) 136 }) 137 138 It("podman system prune pods", func() { 139 session := podmanTest.Podman([]string{"pod", "create"}) 140 session.WaitWithDefaultTimeout() 141 Expect(session.ExitCode()).To(Equal(0)) 142 143 session = podmanTest.Podman([]string{"pod", "create"}) 144 session.WaitWithDefaultTimeout() 145 Expect(session.ExitCode()).To(Equal(0)) 146 147 session = podmanTest.Podman([]string{"pod", "start", "-l"}) 148 session.WaitWithDefaultTimeout() 149 Expect(session.ExitCode()).To(Equal(0)) 150 151 session = podmanTest.Podman([]string{"pod", "stop", "-l"}) 152 session.WaitWithDefaultTimeout() 153 Expect(session.ExitCode()).To(Equal(0)) 154 155 pods := podmanTest.Podman([]string{"pod", "ps"}) 156 pods.WaitWithDefaultTimeout() 157 Expect(pods.ExitCode()).To(Equal(0)) 158 Expect(len(pods.OutputToStringArray())).To(Equal(3)) 159 160 prune := podmanTest.Podman([]string{"system", "prune", "-f"}) 161 prune.WaitWithDefaultTimeout() 162 Expect(prune.ExitCode()).To(Equal(0)) 163 164 pods = podmanTest.Podman([]string{"pod", "ps"}) 165 pods.WaitWithDefaultTimeout() 166 Expect(pods.ExitCode()).To(Equal(0)) 167 Expect(len(pods.OutputToStringArray())).To(Equal(2)) 168 }) 169 })