github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/mount_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 6 . "github.com/containers/podman/v2/test/utils" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 ) 10 11 var _ = Describe("Podman mount", func() { 12 var ( 13 tempdir string 14 err error 15 podmanTest *PodmanTestIntegration 16 ) 17 18 BeforeEach(func() { 19 SkipIfRemote("Podman mount not supported for remote connections") 20 SkipIfRootless("Podman mount requires podman unshare first to work") 21 tempdir, err = CreateTempDirInTempDir() 22 if err != nil { 23 os.Exit(1) 24 } 25 podmanTest = PodmanTestCreate(tempdir) 26 podmanTest.Setup() 27 podmanTest.AddImageToRWStore(ALPINE) 28 }) 29 30 AfterEach(func() { 31 podmanTest.Cleanup() 32 f := CurrentGinkgoTestDescription() 33 processTestResult(f) 34 35 }) 36 37 It("podman mount", func() { 38 setup := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 39 setup.WaitWithDefaultTimeout() 40 Expect(setup.ExitCode()).To(Equal(0)) 41 cid := setup.OutputToString() 42 43 mount := podmanTest.Podman([]string{"mount", cid}) 44 mount.WaitWithDefaultTimeout() 45 Expect(mount.ExitCode()).To(Equal(0)) 46 47 umount := podmanTest.Podman([]string{"umount", cid}) 48 umount.WaitWithDefaultTimeout() 49 Expect(umount.ExitCode()).To(Equal(0)) 50 }) 51 52 It("podman container mount", func() { 53 setup := podmanTest.Podman([]string{"container", "create", ALPINE, "ls"}) 54 setup.WaitWithDefaultTimeout() 55 Expect(setup.ExitCode()).To(Equal(0)) 56 cid := setup.OutputToString() 57 58 mount := podmanTest.Podman([]string{"container", "mount", cid}) 59 mount.WaitWithDefaultTimeout() 60 Expect(mount.ExitCode()).To(Equal(0)) 61 62 umount := podmanTest.Podman([]string{"container", "umount", cid}) 63 umount.WaitWithDefaultTimeout() 64 Expect(umount.ExitCode()).To(Equal(0)) 65 }) 66 67 It("podman mount with json format", func() { 68 setup := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 69 setup.WaitWithDefaultTimeout() 70 Expect(setup.ExitCode()).To(Equal(0)) 71 cid := setup.OutputToString() 72 73 mount := podmanTest.Podman([]string{"mount", cid}) 74 mount.WaitWithDefaultTimeout() 75 Expect(mount.ExitCode()).To(Equal(0)) 76 77 j := podmanTest.Podman([]string{"mount", "--format=json"}) 78 j.WaitWithDefaultTimeout() 79 Expect(j.ExitCode()).To(Equal(0)) 80 Expect(j.IsJSONOutputValid()).To(BeTrue()) 81 82 j = podmanTest.Podman([]string{"mount", "--format='{{.foobar}}'"}) 83 j.WaitWithDefaultTimeout() 84 Expect(j.ExitCode()).ToNot(Equal(0)) 85 Expect(j.ErrorToString()).To(ContainSubstring("unknown --format")) 86 87 umount := podmanTest.Podman([]string{"umount", cid}) 88 umount.WaitWithDefaultTimeout() 89 Expect(umount.ExitCode()).To(Equal(0)) 90 }) 91 92 It("podman mount many", func() { 93 setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 94 setup1.WaitWithDefaultTimeout() 95 Expect(setup1.ExitCode()).To(Equal(0)) 96 cid1 := setup1.OutputToString() 97 98 setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 99 setup2.WaitWithDefaultTimeout() 100 Expect(setup2.ExitCode()).To(Equal(0)) 101 cid2 := setup2.OutputToString() 102 103 setup3 := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 104 setup3.WaitWithDefaultTimeout() 105 Expect(setup3.ExitCode()).To(Equal(0)) 106 cid3 := setup3.OutputToString() 107 108 mount1 := podmanTest.Podman([]string{"mount", cid1, cid2, cid3}) 109 mount1.WaitWithDefaultTimeout() 110 Expect(mount1.ExitCode()).To(Equal(0)) 111 112 umount := podmanTest.Podman([]string{"umount", cid1, cid2, cid3}) 113 umount.WaitWithDefaultTimeout() 114 Expect(umount.ExitCode()).To(Equal(0)) 115 }) 116 117 It("podman umount many", func() { 118 setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 119 setup1.WaitWithDefaultTimeout() 120 Expect(setup1.ExitCode()).To(Equal(0)) 121 cid1 := setup1.OutputToString() 122 123 setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 124 setup2.WaitWithDefaultTimeout() 125 Expect(setup2.ExitCode()).To(Equal(0)) 126 cid2 := setup2.OutputToString() 127 128 mount1 := podmanTest.Podman([]string{"mount", cid1}) 129 mount1.WaitWithDefaultTimeout() 130 Expect(mount1.ExitCode()).To(Equal(0)) 131 132 mount2 := podmanTest.Podman([]string{"mount", cid2}) 133 mount2.WaitWithDefaultTimeout() 134 Expect(mount2.ExitCode()).To(Equal(0)) 135 136 umount := podmanTest.Podman([]string{"umount", cid1, cid2}) 137 umount.WaitWithDefaultTimeout() 138 Expect(umount.ExitCode()).To(Equal(0)) 139 }) 140 141 It("podman umount all", func() { 142 setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 143 setup1.WaitWithDefaultTimeout() 144 Expect(setup1.ExitCode()).To(Equal(0)) 145 cid1 := setup1.OutputToString() 146 147 setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 148 setup2.WaitWithDefaultTimeout() 149 Expect(setup2.ExitCode()).To(Equal(0)) 150 cid2 := setup2.OutputToString() 151 152 mount1 := podmanTest.Podman([]string{"mount", cid1}) 153 mount1.WaitWithDefaultTimeout() 154 Expect(mount1.ExitCode()).To(Equal(0)) 155 156 mount2 := podmanTest.Podman([]string{"mount", cid2}) 157 mount2.WaitWithDefaultTimeout() 158 Expect(mount2.ExitCode()).To(Equal(0)) 159 160 umount := podmanTest.Podman([]string{"umount", "--all"}) 161 umount.WaitWithDefaultTimeout() 162 Expect(umount.ExitCode()).To(Equal(0)) 163 }) 164 165 It("podman list mounted container", func() { 166 setup := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 167 setup.WaitWithDefaultTimeout() 168 Expect(setup.ExitCode()).To(Equal(0)) 169 cid := setup.OutputToString() 170 171 lmount := podmanTest.Podman([]string{"mount", "--notruncate"}) 172 lmount.WaitWithDefaultTimeout() 173 Expect(lmount.ExitCode()).To(Equal(0)) 174 Expect(lmount.OutputToString()).To(Equal("")) 175 176 mount := podmanTest.Podman([]string{"mount", cid}) 177 mount.WaitWithDefaultTimeout() 178 Expect(mount.ExitCode()).To(Equal(0)) 179 180 lmount = podmanTest.Podman([]string{"mount", "--notruncate"}) 181 lmount.WaitWithDefaultTimeout() 182 Expect(lmount.ExitCode()).To(Equal(0)) 183 Expect(lmount.OutputToString()).To(ContainSubstring(cid)) 184 185 umount := podmanTest.Podman([]string{"umount", cid}) 186 umount.WaitWithDefaultTimeout() 187 Expect(umount.ExitCode()).To(Equal(0)) 188 }) 189 190 It("podman list running container", func() { 191 192 setup := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"}) 193 setup.WaitWithDefaultTimeout() 194 Expect(setup.ExitCode()).To(Equal(0)) 195 cid := setup.OutputToString() 196 197 lmount := podmanTest.Podman([]string{"mount", "--notruncate"}) 198 lmount.WaitWithDefaultTimeout() 199 Expect(lmount.ExitCode()).To(Equal(0)) 200 Expect(lmount.OutputToString()).To(ContainSubstring(cid)) 201 202 stop := podmanTest.Podman([]string{"stop", cid}) 203 stop.WaitWithDefaultTimeout() 204 Expect(stop.ExitCode()).To(Equal(0)) 205 206 lmount = podmanTest.Podman([]string{"mount", "--notruncate"}) 207 lmount.WaitWithDefaultTimeout() 208 Expect(lmount.ExitCode()).To(Equal(0)) 209 Expect(lmount.OutputToString()).To(Equal("")) 210 }) 211 212 It("podman list multiple mounted containers", func() { 213 214 setup := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 215 setup.WaitWithDefaultTimeout() 216 Expect(setup.ExitCode()).To(Equal(0)) 217 cid1 := setup.OutputToString() 218 219 setup = podmanTest.Podman([]string{"create", ALPINE, "ls"}) 220 setup.WaitWithDefaultTimeout() 221 Expect(setup.ExitCode()).To(Equal(0)) 222 cid2 := setup.OutputToString() 223 224 setup = podmanTest.Podman([]string{"create", ALPINE, "ls"}) 225 setup.WaitWithDefaultTimeout() 226 Expect(setup.ExitCode()).To(Equal(0)) 227 cid3 := setup.OutputToString() 228 229 lmount := podmanTest.Podman([]string{"mount", "--notruncate"}) 230 lmount.WaitWithDefaultTimeout() 231 Expect(lmount.ExitCode()).To(Equal(0)) 232 Expect(lmount.OutputToString()).To(Equal("")) 233 234 mount := podmanTest.Podman([]string{"mount", cid1, cid3}) 235 mount.WaitWithDefaultTimeout() 236 Expect(mount.ExitCode()).To(Equal(0)) 237 238 lmount = podmanTest.Podman([]string{"mount", "--notruncate"}) 239 lmount.WaitWithDefaultTimeout() 240 Expect(lmount.ExitCode()).To(Equal(0)) 241 Expect(lmount.OutputToString()).To(ContainSubstring(cid1)) 242 Expect(lmount.OutputToString()).ToNot(ContainSubstring(cid2)) 243 Expect(lmount.OutputToString()).To(ContainSubstring(cid3)) 244 245 umount := podmanTest.Podman([]string{"umount", cid1, cid3}) 246 umount.WaitWithDefaultTimeout() 247 Expect(umount.ExitCode()).To(Equal(0)) 248 249 lmount = podmanTest.Podman([]string{"mount", "--notruncate"}) 250 lmount.WaitWithDefaultTimeout() 251 Expect(lmount.ExitCode()).To(Equal(0)) 252 Expect(lmount.OutputToString()).To(Equal("")) 253 254 }) 255 256 It("podman list mounted container", func() { 257 258 setup := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 259 setup.WaitWithDefaultTimeout() 260 Expect(setup.ExitCode()).To(Equal(0)) 261 cid := setup.OutputToString() 262 263 lmount := podmanTest.Podman([]string{"mount", "--notruncate"}) 264 lmount.WaitWithDefaultTimeout() 265 Expect(lmount.ExitCode()).To(Equal(0)) 266 Expect(lmount.OutputToString()).To(Equal("")) 267 268 mount := podmanTest.Podman([]string{"mount", cid}) 269 mount.WaitWithDefaultTimeout() 270 Expect(mount.ExitCode()).To(Equal(0)) 271 272 lmount = podmanTest.Podman([]string{"mount", "--notruncate"}) 273 lmount.WaitWithDefaultTimeout() 274 Expect(lmount.ExitCode()).To(Equal(0)) 275 Expect(lmount.OutputToString()).To(ContainSubstring(cid)) 276 277 umount := podmanTest.Podman([]string{"umount", cid}) 278 umount.WaitWithDefaultTimeout() 279 Expect(umount.ExitCode()).To(Equal(0)) 280 }) 281 282 It("podman image mount", func() { 283 images := podmanTest.Podman([]string{"images"}) 284 images.WaitWithDefaultTimeout() 285 Expect(images.ExitCode()).To(Equal(0)) 286 287 mount := podmanTest.Podman([]string{"image", "mount", ALPINE}) 288 mount.WaitWithDefaultTimeout() 289 Expect(mount.ExitCode()).To(Equal(0)) 290 291 umount := podmanTest.Podman([]string{"image", "umount", ALPINE}) 292 umount.WaitWithDefaultTimeout() 293 Expect(umount.ExitCode()).To(Equal(0)) 294 295 mount = podmanTest.Podman([]string{"image", "mount"}) 296 mount.WaitWithDefaultTimeout() 297 Expect(mount.ExitCode()).To(Equal(0)) 298 Expect(mount.OutputToString()).To(Equal("")) 299 300 // Mount multiple times 301 mount = podmanTest.Podman([]string{"image", "mount", ALPINE}) 302 mount.WaitWithDefaultTimeout() 303 Expect(mount.ExitCode()).To(Equal(0)) 304 305 mount = podmanTest.Podman([]string{"image", "mount", ALPINE}) 306 mount.WaitWithDefaultTimeout() 307 Expect(mount.ExitCode()).To(Equal(0)) 308 309 // Unmount once 310 mount = podmanTest.Podman([]string{"image", "mount", ALPINE}) 311 mount.WaitWithDefaultTimeout() 312 Expect(mount.ExitCode()).To(Equal(0)) 313 314 mount = podmanTest.Podman([]string{"image", "mount"}) 315 mount.WaitWithDefaultTimeout() 316 Expect(mount.ExitCode()).To(Equal(0)) 317 Expect(mount.OutputToString()).To(ContainSubstring(ALPINE)) 318 319 mount = podmanTest.Podman([]string{"image", "umount", "--all"}) 320 mount.WaitWithDefaultTimeout() 321 Expect(mount.ExitCode()).To(Equal(0)) 322 }) 323 324 It("podman mount with json format", func() { 325 podmanTest.AddImageToRWStore(fedoraMinimal) 326 mount := podmanTest.Podman([]string{"image", "mount", fedoraMinimal}) 327 mount.WaitWithDefaultTimeout() 328 Expect(mount.ExitCode()).To(Equal(0)) 329 330 j := podmanTest.Podman([]string{"image", "mount", "--format=json"}) 331 j.WaitWithDefaultTimeout() 332 Expect(j.ExitCode()).To(Equal(0)) 333 Expect(j.IsJSONOutputValid()).To(BeTrue()) 334 335 umount := podmanTest.Podman([]string{"image", "umount", fedoraMinimal}) 336 umount.WaitWithDefaultTimeout() 337 Expect(umount.ExitCode()).To(Equal(0)) 338 }) 339 340 It("podman umount --all", func() { 341 podmanTest.AddImageToRWStore(fedoraMinimal) 342 mount := podmanTest.Podman([]string{"image", "mount", fedoraMinimal}) 343 mount.WaitWithDefaultTimeout() 344 Expect(mount.ExitCode()).To(Equal(0)) 345 346 umount := podmanTest.Podman([]string{"image", "umount", "--all"}) 347 umount.WaitWithDefaultTimeout() 348 Expect(umount.ExitCode()).To(Equal(0)) 349 Expect(len(umount.OutputToStringArray())).To(Equal(1)) 350 }) 351 352 It("podman mount many", func() { 353 Skip("Issue where using short name when we have a lookaside store") 354 podmanTest.AddImageToRWStore(fedoraMinimal) 355 podmanTest.AddImageToRWStore(BB) 356 357 mount1 := podmanTest.Podman([]string{"image", "mount", fedoraMinimal, ALPINE, "busybox"}) 358 mount1.WaitWithDefaultTimeout() 359 Expect(mount1.ExitCode()).To(Equal(0)) 360 361 umount := podmanTest.Podman([]string{"image", "umount", fedoraMinimal, ALPINE}) 362 umount.WaitWithDefaultTimeout() 363 Expect(umount.ExitCode()).To(Equal(0)) 364 365 mount := podmanTest.Podman([]string{"image", "mount"}) 366 mount.WaitWithDefaultTimeout() 367 Expect(mount.ExitCode()).To(Equal(0)) 368 Expect(mount.OutputToString()).To(ContainSubstring("busybox")) 369 370 mount1 = podmanTest.Podman([]string{"image", "unmount", "busybox"}) 371 mount1.WaitWithDefaultTimeout() 372 Expect(mount1.ExitCode()).To(Equal(0)) 373 374 mount = podmanTest.Podman([]string{"image", "mount"}) 375 mount.WaitWithDefaultTimeout() 376 Expect(mount.ExitCode()).To(Equal(0)) 377 Expect(mount.OutputToString()).To(Equal("")) 378 379 mount1 = podmanTest.Podman([]string{"image", "mount", fedoraMinimal, ALPINE, "busybox"}) 380 mount1.WaitWithDefaultTimeout() 381 Expect(mount1.ExitCode()).To(Equal(0)) 382 383 mount = podmanTest.Podman([]string{"image", "mount"}) 384 mount.WaitWithDefaultTimeout() 385 Expect(mount.ExitCode()).To(Equal(0)) 386 Expect(mount.OutputToString()).To(ContainSubstring(fedoraMinimal)) 387 Expect(mount.OutputToString()).To(ContainSubstring(ALPINE)) 388 389 umount = podmanTest.Podman([]string{"image", "umount", "--all"}) 390 umount.WaitWithDefaultTimeout() 391 Expect(umount.ExitCode()).To(Equal(0)) 392 393 mount = podmanTest.Podman([]string{"image", "mount"}) 394 mount.WaitWithDefaultTimeout() 395 Expect(mount.ExitCode()).To(Equal(0)) 396 Expect(mount.OutputToString()).To(Equal("")) 397 398 umount = podmanTest.Podman([]string{"image", "umount", fedoraMinimal, ALPINE}) 399 umount.WaitWithDefaultTimeout() 400 Expect(umount.ExitCode()).To(Equal(0)) 401 402 mount1 = podmanTest.Podman([]string{"image", "mount", "--all"}) 403 mount1.WaitWithDefaultTimeout() 404 Expect(mount1.ExitCode()).To(Equal(0)) 405 406 mount = podmanTest.Podman([]string{"image", "mount"}) 407 mount.WaitWithDefaultTimeout() 408 Expect(mount.ExitCode()).To(Equal(0)) 409 Expect(mount.OutputToString()).To(ContainSubstring(fedoraMinimal)) 410 Expect(mount.OutputToString()).To(ContainSubstring(ALPINE)) 411 412 umount = podmanTest.Podman([]string{"image", "umount", "--all"}) 413 umount.WaitWithDefaultTimeout() 414 Expect(umount.ExitCode()).To(Equal(0)) 415 416 mount = podmanTest.Podman([]string{"image", "mount"}) 417 mount.WaitWithDefaultTimeout() 418 Expect(mount.ExitCode()).To(Equal(0)) 419 Expect(mount.OutputToString()).To(Equal("")) 420 }) 421 })