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