podman

Форк
0
/
pod_stats_test.go 
173 строки · 5.8 Кб
1
package integration
2

3
import (
4
	. "github.com/containers/podman/v5/test/utils"
5
	. "github.com/onsi/ginkgo/v2"
6
	. "github.com/onsi/gomega"
7
	. "github.com/onsi/gomega/gexec"
8
)
9

10
var _ = Describe("Podman pod stats", func() {
11

12
	BeforeEach(func() {
13
		SkipIfRootlessCgroupsV1("Tests fail with both CGv1 + required --cgroup-manager=cgroupfs")
14
		if isContainerized() {
15
			SkipIfCgroupV1("All tests fail Error: unable to load cgroup at ...: cgroup deleted")
16
		}
17
	})
18

19
	It("podman pod stats should run with no pods", func() {
20
		session := podmanTest.Podman([]string{"pod", "stats", "--no-stream"})
21
		session.WaitWithDefaultTimeout()
22
		Expect(session).Should(ExitCleanly())
23
	})
24

25
	It("podman pod stats with a bogus pod", func() {
26
		session := podmanTest.Podman([]string{"pod", "stats", "foobar"})
27
		session.WaitWithDefaultTimeout()
28
		Expect(session).Should(Exit(125))
29
	})
30

31
	It("podman pod stats on a specific running pod", func() {
32
		_, ec, podid := podmanTest.CreatePod(nil)
33
		Expect(ec).To(Equal(0))
34

35
		session := podmanTest.RunTopContainerInPod("", podid)
36
		session.WaitWithDefaultTimeout()
37
		Expect(session).Should(ExitCleanly())
38

39
		session = podmanTest.RunTopContainerInPod("", podid)
40
		session.WaitWithDefaultTimeout()
41
		Expect(session).Should(ExitCleanly())
42

43
		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", podid})
44
		stats.WaitWithDefaultTimeout()
45
		Expect(stats).Should(ExitCleanly())
46
	})
47

48
	It("podman pod stats on a specific running pod with shortID", func() {
49
		_, ec, podid := podmanTest.CreatePod(nil)
50
		Expect(ec).To(Equal(0))
51

52
		session := podmanTest.RunTopContainerInPod("", podid)
53
		session.WaitWithDefaultTimeout()
54
		Expect(session).Should(ExitCleanly())
55

56
		session = podmanTest.RunTopContainerInPod("", podid)
57
		session.WaitWithDefaultTimeout()
58
		Expect(session).Should(ExitCleanly())
59

60
		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", podid[:5]})
61
		stats.WaitWithDefaultTimeout()
62
		Expect(stats).Should(ExitCleanly())
63
	})
64

65
	It("podman pod stats on a specific running pod with name", func() {
66
		_, ec, podid := podmanTest.CreatePod(map[string][]string{"--name": {"test"}})
67
		Expect(ec).To(Equal(0))
68

69
		session := podmanTest.RunTopContainerInPod("", podid)
70
		session.WaitWithDefaultTimeout()
71
		Expect(session).Should(ExitCleanly())
72

73
		session = podmanTest.RunTopContainerInPod("", podid)
74
		session.WaitWithDefaultTimeout()
75
		Expect(session).Should(ExitCleanly())
76

77
		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", "test"})
78
		stats.WaitWithDefaultTimeout()
79
		Expect(stats).Should(ExitCleanly())
80
	})
81

82
	It("podman pod stats on running pods", func() {
83
		_, ec, podid := podmanTest.CreatePod(nil)
84
		Expect(ec).To(Equal(0))
85

86
		session := podmanTest.RunTopContainerInPod("", podid)
87
		session.WaitWithDefaultTimeout()
88
		Expect(session).Should(ExitCleanly())
89

90
		session = podmanTest.RunTopContainerInPod("", podid)
91
		session.WaitWithDefaultTimeout()
92
		Expect(session).Should(ExitCleanly())
93

94
		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream"})
95
		stats.WaitWithDefaultTimeout()
96
		Expect(stats).Should(ExitCleanly())
97
	})
98

99
	It("podman pod stats on all pods", func() {
100
		_, ec, podid := podmanTest.CreatePod(nil)
101
		Expect(ec).To(Equal(0))
102

103
		session := podmanTest.RunTopContainerInPod("", podid)
104
		session.WaitWithDefaultTimeout()
105
		Expect(session).Should(ExitCleanly())
106

107
		session = podmanTest.RunTopContainerInPod("", podid)
108
		session.WaitWithDefaultTimeout()
109
		Expect(session).Should(ExitCleanly())
110

111
		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", "-a"})
112
		stats.WaitWithDefaultTimeout()
113
		Expect(stats).Should(ExitCleanly())
114
	})
115

116
	It("podman pod stats with json output", func() {
117
		_, ec, podid := podmanTest.CreatePod(nil)
118
		Expect(ec).To(Equal(0))
119

120
		session := podmanTest.RunTopContainerInPod("", podid)
121
		session.WaitWithDefaultTimeout()
122
		Expect(session).Should(ExitCleanly())
123

124
		session = podmanTest.RunTopContainerInPod("", podid)
125
		session.WaitWithDefaultTimeout()
126
		Expect(session).Should(ExitCleanly())
127

128
		stats := podmanTest.Podman([]string{"pod", "stats", "--format", "json", "--no-stream", "-a"})
129
		stats.WaitWithDefaultTimeout()
130
		Expect(stats).Should(ExitCleanly())
131
		Expect(stats.OutputToString()).To(BeValidJSON())
132
	})
133
	It("podman pod stats with GO template", func() {
134
		_, ec, podid := podmanTest.CreatePod(nil)
135
		Expect(ec).To(Equal(0))
136

137
		session := podmanTest.RunTopContainerInPod("", podid)
138
		session.WaitWithDefaultTimeout()
139
		Expect(session).Should(ExitCleanly())
140
		stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "table {{.CID}} {{.Pod}} {{.Mem}} {{.MemUsage}} {{.CPU}} {{.NetIO}} {{.BlockIO}} {{.PIDS}} {{.Pod}}"})
141
		stats.WaitWithDefaultTimeout()
142
		Expect(stats).To(ExitCleanly())
143
	})
144

145
	It("podman pod stats with invalid GO template", func() {
146
		_, ec, podid := podmanTest.CreatePod(nil)
147
		Expect(ec).To(Equal(0))
148

149
		session := podmanTest.RunTopContainerInPod("", podid)
150
		session.WaitWithDefaultTimeout()
151
		Expect(session).Should(ExitCleanly())
152
		stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "\"table {{.ID}} \""})
153
		stats.WaitWithDefaultTimeout()
154
		Expect(stats).To(ExitWithError())
155
	})
156

157
	It("podman pod stats on net=host post", func() {
158
		SkipIfRootless("--net=host not supported for rootless pods at present")
159
		podName := "testPod"
160
		podCreate := podmanTest.Podman([]string{"pod", "create", "--net=host", "--name", podName})
161
		podCreate.WaitWithDefaultTimeout()
162
		Expect(podCreate).Should(ExitCleanly())
163

164
		ctrRun := podmanTest.Podman([]string{"run", "-d", "--pod", podName, ALPINE, "top"})
165
		ctrRun.WaitWithDefaultTimeout()
166
		Expect(ctrRun).Should(ExitCleanly())
167

168
		stats := podmanTest.Podman([]string{"pod", "stats", "--format", "json", "--no-stream", podName})
169
		stats.WaitWithDefaultTimeout()
170
		Expect(stats).Should(ExitCleanly())
171
		Expect(stats.OutputToString()).To(BeValidJSON())
172
	})
173
})
174

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.