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  })