github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/mount_test.go (about)

     1  // +build !remoteclient
     2  
     3  package integration
     4  
     5  import (
     6  	"os"
     7  
     8  	. "github.com/containers/libpod/test/utils"
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  )
    12  
    13  var _ = Describe("Podman mount", func() {
    14  	var (
    15  		tempdir    string
    16  		err        error
    17  		podmanTest *PodmanTestIntegration
    18  	)
    19  
    20  	BeforeEach(func() {
    21  		tempdir, err = CreateTempDirInTempDir()
    22  		if err != nil {
    23  			os.Exit(1)
    24  		}
    25  		podmanTest = PodmanTestCreate(tempdir)
    26  		podmanTest.Setup()
    27  		podmanTest.SeedImages()
    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  		umount := podmanTest.Podman([]string{"umount", cid})
    83  		umount.WaitWithDefaultTimeout()
    84  		Expect(umount.ExitCode()).To(Equal(0))
    85  	})
    86  
    87  	It("podman mount many", func() {
    88  		setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
    89  		setup1.WaitWithDefaultTimeout()
    90  		Expect(setup1.ExitCode()).To(Equal(0))
    91  		cid1 := setup1.OutputToString()
    92  
    93  		setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
    94  		setup2.WaitWithDefaultTimeout()
    95  		Expect(setup2.ExitCode()).To(Equal(0))
    96  		cid2 := setup2.OutputToString()
    97  
    98  		setup3 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
    99  		setup3.WaitWithDefaultTimeout()
   100  		Expect(setup3.ExitCode()).To(Equal(0))
   101  		cid3 := setup3.OutputToString()
   102  
   103  		mount1 := podmanTest.Podman([]string{"mount", cid1, cid2, cid3})
   104  		mount1.WaitWithDefaultTimeout()
   105  		Expect(mount1.ExitCode()).To(Equal(0))
   106  
   107  		umount := podmanTest.Podman([]string{"umount", cid1, cid2, cid3})
   108  		umount.WaitWithDefaultTimeout()
   109  		Expect(umount.ExitCode()).To(Equal(0))
   110  	})
   111  
   112  	It("podman umount many", func() {
   113  		setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   114  		setup1.WaitWithDefaultTimeout()
   115  		Expect(setup1.ExitCode()).To(Equal(0))
   116  		cid1 := setup1.OutputToString()
   117  
   118  		setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   119  		setup2.WaitWithDefaultTimeout()
   120  		Expect(setup2.ExitCode()).To(Equal(0))
   121  		cid2 := setup2.OutputToString()
   122  
   123  		mount1 := podmanTest.Podman([]string{"mount", cid1})
   124  		mount1.WaitWithDefaultTimeout()
   125  		Expect(mount1.ExitCode()).To(Equal(0))
   126  
   127  		mount2 := podmanTest.Podman([]string{"mount", cid2})
   128  		mount2.WaitWithDefaultTimeout()
   129  		Expect(mount2.ExitCode()).To(Equal(0))
   130  
   131  		umount := podmanTest.Podman([]string{"umount", cid1, cid2})
   132  		umount.WaitWithDefaultTimeout()
   133  		Expect(umount.ExitCode()).To(Equal(0))
   134  	})
   135  
   136  	It("podman umount all", func() {
   137  		setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   138  		setup1.WaitWithDefaultTimeout()
   139  		Expect(setup1.ExitCode()).To(Equal(0))
   140  		cid1 := setup1.OutputToString()
   141  
   142  		setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   143  		setup2.WaitWithDefaultTimeout()
   144  		Expect(setup2.ExitCode()).To(Equal(0))
   145  		cid2 := setup2.OutputToString()
   146  
   147  		mount1 := podmanTest.Podman([]string{"mount", cid1})
   148  		mount1.WaitWithDefaultTimeout()
   149  		Expect(mount1.ExitCode()).To(Equal(0))
   150  
   151  		mount2 := podmanTest.Podman([]string{"mount", cid2})
   152  		mount2.WaitWithDefaultTimeout()
   153  		Expect(mount2.ExitCode()).To(Equal(0))
   154  
   155  		umount := podmanTest.Podman([]string{"umount", "--all"})
   156  		umount.WaitWithDefaultTimeout()
   157  		Expect(umount.ExitCode()).To(Equal(0))
   158  	})
   159  
   160  	It("podman list mounted container", func() {
   161  		setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   162  		setup.WaitWithDefaultTimeout()
   163  		Expect(setup.ExitCode()).To(Equal(0))
   164  		cid := setup.OutputToString()
   165  
   166  		lmount := podmanTest.Podman([]string{"mount", "--notruncate"})
   167  		lmount.WaitWithDefaultTimeout()
   168  		Expect(lmount.ExitCode()).To(Equal(0))
   169  		Expect(lmount.OutputToString()).To(Equal(""))
   170  
   171  		mount := podmanTest.Podman([]string{"mount", cid})
   172  		mount.WaitWithDefaultTimeout()
   173  		Expect(mount.ExitCode()).To(Equal(0))
   174  
   175  		lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
   176  		lmount.WaitWithDefaultTimeout()
   177  		Expect(lmount.ExitCode()).To(Equal(0))
   178  		Expect(lmount.OutputToString()).To(ContainSubstring(cid))
   179  
   180  		umount := podmanTest.Podman([]string{"umount", cid})
   181  		umount.WaitWithDefaultTimeout()
   182  		Expect(umount.ExitCode()).To(Equal(0))
   183  	})
   184  
   185  	It("podman list running container", func() {
   186  		SkipIfRootless()
   187  
   188  		setup := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
   189  		setup.WaitWithDefaultTimeout()
   190  		Expect(setup.ExitCode()).To(Equal(0))
   191  		cid := setup.OutputToString()
   192  
   193  		lmount := podmanTest.Podman([]string{"mount", "--notruncate"})
   194  		lmount.WaitWithDefaultTimeout()
   195  		Expect(lmount.ExitCode()).To(Equal(0))
   196  		Expect(lmount.OutputToString()).To(ContainSubstring(cid))
   197  
   198  		stop := podmanTest.Podman([]string{"stop", cid})
   199  		stop.WaitWithDefaultTimeout()
   200  		Expect(stop.ExitCode()).To(Equal(0))
   201  
   202  		lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
   203  		lmount.WaitWithDefaultTimeout()
   204  		Expect(lmount.ExitCode()).To(Equal(0))
   205  		Expect(lmount.OutputToString()).To(Equal(""))
   206  	})
   207  
   208  	It("podman list multiple mounted containers", func() {
   209  		SkipIfRootless()
   210  
   211  		setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   212  		setup.WaitWithDefaultTimeout()
   213  		Expect(setup.ExitCode()).To(Equal(0))
   214  		cid1 := setup.OutputToString()
   215  
   216  		setup = podmanTest.Podman([]string{"create", ALPINE, "ls"})
   217  		setup.WaitWithDefaultTimeout()
   218  		Expect(setup.ExitCode()).To(Equal(0))
   219  		cid2 := setup.OutputToString()
   220  
   221  		setup = podmanTest.Podman([]string{"create", ALPINE, "ls"})
   222  		setup.WaitWithDefaultTimeout()
   223  		Expect(setup.ExitCode()).To(Equal(0))
   224  		cid3 := setup.OutputToString()
   225  
   226  		lmount := podmanTest.Podman([]string{"mount", "--notruncate"})
   227  		lmount.WaitWithDefaultTimeout()
   228  		Expect(lmount.ExitCode()).To(Equal(0))
   229  		Expect(lmount.OutputToString()).To(Equal(""))
   230  
   231  		mount := podmanTest.Podman([]string{"mount", cid1, cid3})
   232  		mount.WaitWithDefaultTimeout()
   233  		Expect(mount.ExitCode()).To(Equal(0))
   234  
   235  		lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
   236  		lmount.WaitWithDefaultTimeout()
   237  		Expect(lmount.ExitCode()).To(Equal(0))
   238  		Expect(lmount.OutputToString()).To(ContainSubstring(cid1))
   239  		Expect(lmount.OutputToString()).ToNot(ContainSubstring(cid2))
   240  		Expect(lmount.OutputToString()).To(ContainSubstring(cid3))
   241  
   242  		umount := podmanTest.Podman([]string{"umount", cid1, cid3})
   243  		umount.WaitWithDefaultTimeout()
   244  		Expect(umount.ExitCode()).To(Equal(0))
   245  
   246  		lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
   247  		lmount.WaitWithDefaultTimeout()
   248  		Expect(lmount.ExitCode()).To(Equal(0))
   249  		Expect(lmount.OutputToString()).To(Equal(""))
   250  
   251  	})
   252  
   253  	It("podman list mounted container", func() {
   254  		SkipIfRootless()
   255  
   256  		setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   257  		setup.WaitWithDefaultTimeout()
   258  		Expect(setup.ExitCode()).To(Equal(0))
   259  		cid := setup.OutputToString()
   260  
   261  		lmount := podmanTest.Podman([]string{"mount", "--notruncate"})
   262  		lmount.WaitWithDefaultTimeout()
   263  		Expect(lmount.ExitCode()).To(Equal(0))
   264  		Expect(lmount.OutputToString()).To(Equal(""))
   265  
   266  		mount := podmanTest.Podman([]string{"mount", cid})
   267  		mount.WaitWithDefaultTimeout()
   268  		Expect(mount.ExitCode()).To(Equal(0))
   269  
   270  		lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
   271  		lmount.WaitWithDefaultTimeout()
   272  		Expect(lmount.ExitCode()).To(Equal(0))
   273  		Expect(lmount.OutputToString()).To(ContainSubstring(cid))
   274  
   275  		umount := podmanTest.Podman([]string{"umount", cid})
   276  		umount.WaitWithDefaultTimeout()
   277  		Expect(umount.ExitCode()).To(Equal(0))
   278  	})
   279  })