github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/start_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"os"
     5  
     6  	. "github.com/containers/podman/v2/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", 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", 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", ALPINE, "ls"})
    65  		session.WaitWithDefaultTimeout()
    66  		Expect(session.ExitCode()).To(Equal(0))
    67  		cid := session.OutputToString()
    68  		shortID := cid[0:10]
    69  		session = podmanTest.Podman([]string{"container", "start", shortID})
    70  		session.WaitWithDefaultTimeout()
    71  		Expect(session.ExitCode()).To(Equal(0))
    72  		Expect(session.OutputToString()).To(Equal(shortID))
    73  	})
    74  
    75  	It("podman start single container by name", func() {
    76  		name := "foobar99"
    77  		session := podmanTest.Podman([]string{"create", "--name", name, ALPINE, "ls"})
    78  		session.WaitWithDefaultTimeout()
    79  		Expect(session.ExitCode()).To(Equal(0))
    80  		session = podmanTest.Podman([]string{"start", name})
    81  		session.WaitWithDefaultTimeout()
    82  		Expect(session.ExitCode()).To(Equal(0))
    83  		if podmanTest.RemoteTest {
    84  			Skip("Container-start name check doesn't work on remote client. It always returns the full ID.")
    85  		}
    86  		Expect(session.OutputToString()).To(Equal(name))
    87  	})
    88  
    89  	It("podman start single container with attach and test the signal", func() {
    90  		session := podmanTest.Podman([]string{"create", "--entrypoint", "sh", ALPINE, "-c", "exit 1"})
    91  		session.WaitWithDefaultTimeout()
    92  		Expect(session.ExitCode()).To(Equal(0))
    93  		cid := session.OutputToString()
    94  		session = podmanTest.Podman([]string{"start", "--attach", cid})
    95  		session.WaitWithDefaultTimeout()
    96  		// It should forward the signal
    97  		Expect(session.ExitCode()).To(Equal(1))
    98  	})
    99  
   100  	It("podman start multiple containers", func() {
   101  		session := podmanTest.Podman([]string{"create", "--name", "foobar99", ALPINE, "ls"})
   102  		session.WaitWithDefaultTimeout()
   103  		cid1 := session.OutputToString()
   104  		session2 := podmanTest.Podman([]string{"create", "--name", "foobar100", ALPINE, "ls"})
   105  		session2.WaitWithDefaultTimeout()
   106  		cid2 := session2.OutputToString()
   107  		session = podmanTest.Podman([]string{"start", cid1, cid2})
   108  		session.WaitWithDefaultTimeout()
   109  		Expect(session.ExitCode()).To(Equal(0))
   110  	})
   111  
   112  	It("podman start multiple containers with bogus", func() {
   113  		session := podmanTest.Podman([]string{"create", "--name", "foobar99", ALPINE, "ls"})
   114  		session.WaitWithDefaultTimeout()
   115  		cid1 := session.OutputToString()
   116  		session = podmanTest.Podman([]string{"start", cid1, "doesnotexist"})
   117  		session.WaitWithDefaultTimeout()
   118  		Expect(session.ExitCode()).To(Equal(125))
   119  	})
   120  
   121  	It("podman multiple containers -- attach should fail", func() {
   122  		session := podmanTest.Podman([]string{"create", "--name", "foobar1", ALPINE, "ls"})
   123  		session.WaitWithDefaultTimeout()
   124  		Expect(session.ExitCode()).To(Equal(0))
   125  		session = podmanTest.Podman([]string{"create", "--name", "foobar2", ALPINE, "ls"})
   126  		session.WaitWithDefaultTimeout()
   127  		Expect(session.ExitCode()).To(Equal(0))
   128  		session = podmanTest.Podman([]string{"start", "-a", "foobar1", "foobar2"})
   129  		session.WaitWithDefaultTimeout()
   130  		Expect(session.ExitCode()).To(Equal(125))
   131  	})
   132  
   133  	It("podman failed to start with --rm should delete the container", func() {
   134  		session := podmanTest.Podman([]string{"create", "--name", "test1", "-it", "--rm", ALPINE, "foo"})
   135  		session.WaitWithDefaultTimeout()
   136  		Expect(session.ExitCode()).To(Equal(0))
   137  
   138  		start := podmanTest.Podman([]string{"start", "test1"})
   139  		start.WaitWithDefaultTimeout()
   140  
   141  		wait := podmanTest.Podman([]string{"wait", "test1"})
   142  		wait.WaitWithDefaultTimeout()
   143  		Expect(wait).To(ExitWithError())
   144  
   145  		Eventually(podmanTest.NumberOfContainers(), defaultWaitTimeout, 3.0).Should(BeZero())
   146  	})
   147  
   148  	It("podman failed to start without --rm should NOT delete the container", func() {
   149  		session := podmanTest.Podman([]string{"create", "-it", ALPINE, "foo"})
   150  		session.WaitWithDefaultTimeout()
   151  		Expect(session).Should(Exit(0))
   152  
   153  		start := podmanTest.Podman([]string{"start", session.OutputToString()})
   154  		start.WaitWithDefaultTimeout()
   155  		Expect(start).To(ExitWithError())
   156  
   157  		Eventually(podmanTest.NumberOfContainers(), defaultWaitTimeout, 3.0).Should(Equal(1))
   158  	})
   159  
   160  	It("podman start --sig-proxy should not work without --attach", func() {
   161  		session := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   162  		session.WaitWithDefaultTimeout()
   163  		Expect(session).Should(Exit(0))
   164  
   165  		session = podmanTest.Podman([]string{"start", "-l", "--sig-proxy"})
   166  		session.WaitWithDefaultTimeout()
   167  		Expect(session).Should(Exit(125))
   168  	})
   169  })