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