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

     1  package integration
     2  
     3  import (
     4  	"os"
     5  
     6  	. "github.com/containers/libpod/test/utils"
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  	. "github.com/onsi/gomega/gexec"
    10  )
    11  
    12  var _ = Describe("Podman start", func() {
    13  	var (
    14  		tempdir    string
    15  		err        error
    16  		podmanTest *PodmanTestIntegration
    17  	)
    18  
    19  	BeforeEach(func() {
    20  		tempdir, err = CreateTempDirInTempDir()
    21  		if err != nil {
    22  			os.Exit(1)
    23  		}
    24  		podmanTest = PodmanTestCreate(tempdir)
    25  		podmanTest.Setup()
    26  		podmanTest.SeedImages()
    27  	})
    28  
    29  	AfterEach(func() {
    30  		podmanTest.Cleanup()
    31  		f := CurrentGinkgoTestDescription()
    32  		processTestResult(f)
    33  
    34  	})
    35  
    36  	It("podman start bogus container", func() {
    37  		session := podmanTest.Podman([]string{"start", "123"})
    38  		session.WaitWithDefaultTimeout()
    39  		Expect(session.ExitCode()).To(Equal(125))
    40  	})
    41  
    42  	It("podman start single container by id", func() {
    43  		session := podmanTest.Podman([]string{"create", "-d", ALPINE, "ls"})
    44  		session.WaitWithDefaultTimeout()
    45  		Expect(session.ExitCode()).To(Equal(0))
    46  		cid := session.OutputToString()
    47  		session = podmanTest.Podman([]string{"start", cid})
    48  		session.WaitWithDefaultTimeout()
    49  		Expect(session.ExitCode()).To(Equal(0))
    50  	})
    51  
    52  	It("podman container start single container by id", func() {
    53  		session := podmanTest.Podman([]string{"container", "create", "-d", ALPINE, "ls"})
    54  		session.WaitWithDefaultTimeout()
    55  		Expect(session.ExitCode()).To(Equal(0))
    56  		cid := session.OutputToString()
    57  		session = podmanTest.Podman([]string{"container", "start", cid})
    58  		session.WaitWithDefaultTimeout()
    59  		Expect(session.ExitCode()).To(Equal(0))
    60  		Expect(session.OutputToString()).To(Equal(cid))
    61  	})
    62  
    63  	It("podman container start single container by short id", func() {
    64  		session := podmanTest.Podman([]string{"container", "create", "-d", ALPINE, "ls"})
    65  		session.WaitWithDefaultTimeout()
    66  		Expect(session.ExitCode()).To(Equal(0))
    67  		cid := session.OutputToString()
    68  		session = podmanTest.Podman([]string{"container", "start", cid[0:10]})
    69  		session.WaitWithDefaultTimeout()
    70  		Expect(session.ExitCode()).To(Equal(0))
    71  		Expect(session.OutputToString()).To(Equal(cid))
    72  	})
    73  
    74  	It("podman start single container by name", func() {
    75  		name := "foobar99"
    76  		session := podmanTest.Podman([]string{"create", "-d", "--name", name, ALPINE, "ls"})
    77  		session.WaitWithDefaultTimeout()
    78  		Expect(session.ExitCode()).To(Equal(0))
    79  		session = podmanTest.Podman([]string{"start", name})
    80  		session.WaitWithDefaultTimeout()
    81  		Expect(session.ExitCode()).To(Equal(0))
    82  		if podmanTest.RemoteTest {
    83  			Skip("Container-start name check doesn't work on remote client. It always returns the full ID.")
    84  		}
    85  		Expect(session.OutputToString()).To(Equal(name))
    86  	})
    87  
    88  	It("podman start multiple containers", func() {
    89  		session := podmanTest.Podman([]string{"create", "-d", "--name", "foobar99", ALPINE, "ls"})
    90  		session.WaitWithDefaultTimeout()
    91  		cid1 := session.OutputToString()
    92  		session2 := podmanTest.Podman([]string{"create", "-d", "--name", "foobar100", ALPINE, "ls"})
    93  		session2.WaitWithDefaultTimeout()
    94  		cid2 := session2.OutputToString()
    95  		session = podmanTest.Podman([]string{"start", cid1, cid2})
    96  		session.WaitWithDefaultTimeout()
    97  		Expect(session.ExitCode()).To(Equal(0))
    98  	})
    99  
   100  	It("podman start multiple containers with bogus", func() {
   101  		session := podmanTest.Podman([]string{"create", "-d", "--name", "foobar99", ALPINE, "ls"})
   102  		session.WaitWithDefaultTimeout()
   103  		cid1 := session.OutputToString()
   104  		session = podmanTest.Podman([]string{"start", cid1, "doesnotexist"})
   105  		session.WaitWithDefaultTimeout()
   106  		Expect(session.ExitCode()).To(Equal(125))
   107  	})
   108  
   109  	It("podman multiple containers -- attach should fail", func() {
   110  		session := podmanTest.Podman([]string{"create", "--name", "foobar1", ALPINE, "ls"})
   111  		session.WaitWithDefaultTimeout()
   112  		Expect(session.ExitCode()).To(Equal(0))
   113  		session = podmanTest.Podman([]string{"create", "--name", "foobar2", ALPINE, "ls"})
   114  		session.WaitWithDefaultTimeout()
   115  		Expect(session.ExitCode()).To(Equal(0))
   116  		session = podmanTest.Podman([]string{"start", "-a", "foobar1", "foobar2"})
   117  		session.WaitWithDefaultTimeout()
   118  		Expect(session.ExitCode()).To(Equal(125))
   119  	})
   120  
   121  	It("podman failed to start with --rm should delete the container", func() {
   122  		session := podmanTest.Podman([]string{"create", "-it", "--rm", ALPINE, "foo"})
   123  		session.WaitWithDefaultTimeout()
   124  		Expect(session.ExitCode()).To(Equal(0))
   125  
   126  		start := podmanTest.Podman([]string{"start", "-l"})
   127  		start.WaitWithDefaultTimeout()
   128  		Expect(start).To(ExitWithError())
   129  
   130  		Eventually(podmanTest.NumberOfContainers(), defaultWaitTimeout, 3.0).Should(BeZero())
   131  	})
   132  
   133  	It("podman failed to start without --rm should NOT delete the container", func() {
   134  		session := podmanTest.Podman([]string{"create", "-it", ALPINE, "foo"})
   135  		session.WaitWithDefaultTimeout()
   136  		Expect(session).Should(Exit(0))
   137  
   138  		start := podmanTest.Podman([]string{"start", "-l"})
   139  		start.WaitWithDefaultTimeout()
   140  		Expect(start).To(ExitWithError())
   141  
   142  		Eventually(podmanTest.NumberOfContainers(), defaultWaitTimeout, 3.0).Should(Equal(1))
   143  	})
   144  
   145  	It("podman start --sig-proxy should not work without --attach", func() {
   146  		session := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   147  		session.WaitWithDefaultTimeout()
   148  		Expect(session).Should(Exit(0))
   149  
   150  		session = podmanTest.Podman([]string{"start", "-l", "--sig-proxy"})
   151  		session.WaitWithDefaultTimeout()
   152  		Expect(session).Should(Exit(125))
   153  	})
   154  })