summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToshiki Sonoda <sonoda.toshiki@fujitsu.com>2022-08-05 12:01:51 +0900
committerToshiki Sonoda <sonoda.toshiki@fujitsu.com>2022-08-05 12:01:51 +0900
commit83bd7a5c28511cdf09a173af83271c93a45cd9b6 (patch)
tree256c52dfa50e1671aae75a101370637a2be0aaff
parentb0ef621ebf196fd61189aebff3161927f0049c52 (diff)
downloadpodman-83bd7a5c28511cdf09a173af83271c93a45cd9b6.tar.gz
podman-83bd7a5c28511cdf09a173af83271c93a45cd9b6.tar.bz2
podman-83bd7a5c28511cdf09a173af83271c93a45cd9b6.zip
e2e: Add rootless mount cleanup test
`podman run -d mount cleanup test` adapt to rootless environment. Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
-rw-r--r--test/e2e/run_cleanup_test.go45
1 files changed, 44 insertions, 1 deletions
diff --git a/test/e2e/run_cleanup_test.go b/test/e2e/run_cleanup_test.go
index ea2caf907..5aa81140d 100644
--- a/test/e2e/run_cleanup_test.go
+++ b/test/e2e/run_cleanup_test.go
@@ -36,7 +36,7 @@ var _ = Describe("Podman run exit", func() {
It("podman run -d mount cleanup test", func() {
SkipIfRemote("podman-remote does not support mount")
- SkipIfRootless("TODO rootless podman mount requires podman unshare first")
+ SkipIfRootless("rootless podman mount requires podman unshare first")
result := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
result.WaitWithDefaultTimeout()
@@ -69,6 +69,49 @@ var _ = Describe("Podman run exit", func() {
pmount.WaitWithDefaultTimeout()
Expect(pmount).Should(Exit(0))
Expect(pmount.OutputToString()).NotTo(ContainSubstring(cid))
+ })
+
+ It("podman run -d mount cleanup rootless test", func() {
+ SkipIfRemote("podman-remote does not support mount")
+ SkipIfNotRootless("Use unshare in rootless only")
+
+ result := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
+ result.WaitWithDefaultTimeout()
+ cid := result.OutputToString()
+ Expect(result).Should(Exit(0))
+
+ mount := podmanTest.Podman([]string{"unshare", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount).Should(Exit(0))
+ Expect(mount.OutputToString()).To(ContainSubstring(cid))
+
+ // command: podman <options> unshare podman <options> image mount ALPINE
+ args := []string{"unshare", podmanTest.PodmanBinary}
+ opts := podmanTest.PodmanMakeOptions([]string{"mount", "--no-trunc"}, false, false)
+ args = append(args, opts...)
+
+ pmount := podmanTest.Podman(args)
+ pmount.WaitWithDefaultTimeout()
+ Expect(pmount).Should(Exit(0))
+ Expect(pmount.OutputToString()).To(ContainSubstring(cid))
+ stop := podmanTest.Podman([]string{"stop", cid})
+ stop.WaitWithDefaultTimeout()
+ Expect(stop).Should(Exit(0))
+
+ // We have to force cleanup so the unmount happens
+ podmanCleanupSession := podmanTest.Podman([]string{"container", "cleanup", cid})
+ podmanCleanupSession.WaitWithDefaultTimeout()
+ Expect(podmanCleanupSession).Should(Exit(0))
+
+ mount = podmanTest.Podman([]string{"unshare", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount).Should(Exit(0))
+ Expect(mount.OutputToString()).NotTo(ContainSubstring(cid))
+
+ pmount = podmanTest.Podman(args)
+ pmount.WaitWithDefaultTimeout()
+ Expect(pmount).Should(Exit(0))
+ Expect(pmount.OutputToString()).NotTo(ContainSubstring(cid))
})
})