6
. "github.com/containers/podman/v5/test/utils"
7
. "github.com/onsi/ginkgo/v2"
8
. "github.com/onsi/gomega"
9
. "github.com/onsi/gomega/gexec"
12
var _ = Describe("Podman pod stop", func() {
14
It("podman pod stop bogus pod", func() {
15
session := podmanTest.Podman([]string{"pod", "stop", "123"})
16
session.WaitWithDefaultTimeout()
17
Expect(session).Should(Exit(125))
20
It("podman pod stop --ignore bogus pod", func() {
22
session := podmanTest.Podman([]string{"pod", "stop", "--ignore", "123"})
23
session.WaitWithDefaultTimeout()
24
Expect(session).Should(ExitCleanly())
27
It("podman stop bogus pod and a running pod", func() {
28
_, ec, podid1 := podmanTest.CreatePod(nil)
29
Expect(ec).To(Equal(0))
31
session := podmanTest.RunTopContainerInPod("test1", podid1)
32
session.WaitWithDefaultTimeout()
33
Expect(session).Should(ExitCleanly())
35
session = podmanTest.Podman([]string{"pod", "stop", "bogus", "test1"})
36
session.WaitWithDefaultTimeout()
37
Expect(session).Should(Exit(125))
40
It("podman stop --ignore bogus pod and a running pod", func() {
42
_, ec, podid1 := podmanTest.CreatePod(nil)
43
Expect(ec).To(Equal(0))
45
session := podmanTest.RunTopContainerInPod("test1", podid1)
46
session.WaitWithDefaultTimeout()
47
Expect(session).Should(ExitCleanly())
49
session = podmanTest.Podman([]string{"pod", "stop", "--ignore", "bogus", "test1"})
50
session.WaitWithDefaultTimeout()
51
Expect(session).Should(ExitCleanly())
53
session = podmanTest.Podman([]string{"pod", "stop", "-t", "-1", "--ignore", "test1", "bogus"})
54
session.WaitWithDefaultTimeout()
55
Expect(session).Should(ExitCleanly())
58
It("podman pod stop single empty pod", func() {
59
_, ec, podid := podmanTest.CreatePod(nil)
60
Expect(ec).To(Equal(0))
62
session := podmanTest.Podman([]string{"pod", "stop", podid})
63
session.WaitWithDefaultTimeout()
64
Expect(session).Should(ExitCleanly())
67
It("podman pod stop single pod by name", func() {
68
_, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
69
Expect(ec).To(Equal(0))
71
session := podmanTest.RunTopContainerInPod("", "foobar99")
72
session.WaitWithDefaultTimeout()
73
Expect(session).Should(ExitCleanly())
75
session = podmanTest.Podman([]string{"pod", "stop", "foobar99"})
76
session.WaitWithDefaultTimeout()
77
Expect(session).Should(ExitCleanly())
78
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
81
It("podman pod stop multiple pods", func() {
82
_, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
83
Expect(ec).To(Equal(0))
85
session := podmanTest.RunTopContainerInPod("", "foobar99")
86
session.WaitWithDefaultTimeout()
87
Expect(session).Should(ExitCleanly())
89
_, ec2, podid2 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
90
Expect(ec2).To(Equal(0))
92
session = podmanTest.RunTopContainerInPod("", "foobar100")
93
session.WaitWithDefaultTimeout()
94
Expect(session).Should(ExitCleanly())
96
session = podmanTest.Podman([]string{"pod", "stop", podid1, podid2})
97
session.WaitWithDefaultTimeout()
98
Expect(session).Should(ExitCleanly())
99
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
102
It("podman pod stop all pods", func() {
103
_, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
104
Expect(ec).To(Equal(0))
106
session := podmanTest.RunTopContainerInPod("", "foobar99")
107
session.WaitWithDefaultTimeout()
108
Expect(session).Should(ExitCleanly())
110
_, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
111
Expect(ec).To(Equal(0))
113
session = podmanTest.RunTopContainerInPod("", "foobar100")
114
session.WaitWithDefaultTimeout()
115
Expect(session).Should(ExitCleanly())
117
session = podmanTest.Podman([]string{"pod", "stop", "--all"})
118
session.WaitWithDefaultTimeout()
119
Expect(session).Should(ExitCleanly())
120
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
123
It("podman pod stop latest pod", func() {
124
_, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
125
Expect(ec).To(Equal(0))
127
session := podmanTest.RunTopContainerInPod("", "foobar99")
128
session.WaitWithDefaultTimeout()
129
Expect(session).Should(ExitCleanly())
131
_, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
132
Expect(ec).To(Equal(0))
134
session = podmanTest.RunTopContainerInPod("", "foobar100")
135
session.WaitWithDefaultTimeout()
136
Expect(session).Should(ExitCleanly())
142
session = podmanTest.Podman([]string{"pod", "stop", podid})
143
session.WaitWithDefaultTimeout()
144
Expect(session).Should(ExitCleanly())
145
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
148
It("podman pod stop multiple pods with bogus", func() {
149
_, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
150
Expect(ec).To(Equal(0))
152
session := podmanTest.RunTopContainerInPod("", "foobar99")
153
session.WaitWithDefaultTimeout()
154
Expect(session).Should(ExitCleanly())
156
session = podmanTest.Podman([]string{"pod", "stop", podid1, "doesnotexist"})
157
session.WaitWithDefaultTimeout()
158
Expect(session).Should(Exit(125))
161
It("podman pod start/stop single pod via --pod-id-file", func() {
162
podIDFile := filepath.Join(tempdir, "podID")
166
// Create a pod with --pod-id-file.
167
session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", podIDFile})
168
session.WaitWithDefaultTimeout()
169
Expect(session).Should(ExitCleanly())
171
// Create container inside the pod.
172
session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"})
173
session.WaitWithDefaultTimeout()
174
Expect(session).Should(ExitCleanly())
176
session = podmanTest.Podman([]string{"pod", "start", "--pod-id-file", podIDFile})
177
session.WaitWithDefaultTimeout()
178
Expect(session).Should(ExitCleanly())
179
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2)) // infra+top
181
session = podmanTest.Podman([]string{"pod", "stop", "--pod-id-file", podIDFile})
182
session.WaitWithDefaultTimeout()
183
Expect(session).Should(ExitCleanly())
184
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
187
It("podman pod start/stop multiple pods via --pod-id-file", func() {
188
podIDFiles := []string{}
189
for _, i := range "0123456789" {
190
podIDFile := filepath.Join(tempdir, "cid"+string(i))
191
podName := "rudolph" + string(i)
192
// Create a pod with --pod-id-file.
193
session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", podIDFile})
194
session.WaitWithDefaultTimeout()
195
Expect(session).Should(ExitCleanly())
197
// Create container inside the pod.
198
session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"})
199
session.WaitWithDefaultTimeout()
200
Expect(session).Should(ExitCleanly())
202
// Append the id files along with the command.
203
podIDFiles = append(podIDFiles, "--pod-id-file")
204
podIDFiles = append(podIDFiles, podIDFile)
207
cmd := []string{"pod", "start"}
208
cmd = append(cmd, podIDFiles...)
209
session := podmanTest.Podman(cmd)
210
session.WaitWithDefaultTimeout()
211
Expect(session).Should(ExitCleanly())
212
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(20)) // 10*(infra+top)
214
cmd = []string{"pod", "stop"}
215
cmd = append(cmd, podIDFiles...)
216
session = podmanTest.Podman(cmd)
217
session.WaitWithDefaultTimeout()
218
Expect(session).Should(ExitCleanly())
219
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))