Browse code

Update cgroup integration tests

Cgroup integtaion tests should cover:
- docker can run sucessfully with these options
- these cgroup options are set to HostConfig as expected
- these cgroup options are really set to cgroup files as expected
- other cases (wrong value, combinations etc..)

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>

Qiang Huang authored on 2015/11/30 09:40:47
Showing 1 changed files
... ...
@@ -134,25 +134,24 @@ func (s *DockerSuite) TestRunAttachDetach(c *check.C) {
134 134
 	}
135 135
 }
136 136
 
137
-// "test" should be printed
138
-func (s *DockerSuite) TestRunEchoStdoutWithCPUQuota(c *check.C) {
137
+func (s *DockerSuite) TestRunWithCPUQuota(c *check.C) {
139 138
 	testRequires(c, cpuCfsQuota)
140 139
 
141
-	out, _, err := dockerCmdWithError("run", "--cpu-quota", "8000", "--name", "test", "busybox", "echo", "test")
142
-	c.Assert(err, checker.IsNil, check.Commentf("failed to run container, output: %q", out))
143
-	out = strings.TrimSpace(out)
144
-	c.Assert(out, checker.Equals, "test", check.Commentf("container should've printed 'test'"))
140
+	file := "/sys/fs/cgroup/cpu/cpu.cfs_quota_us"
141
+	out, _ := dockerCmd(c, "run", "--cpu-quota", "8000", "--name", "test", "busybox", "cat", file)
142
+	c.Assert(strings.TrimSpace(out), checker.Equals, "8000")
145 143
 
146
-	out, err = inspectField("test", "HostConfig.CpuQuota")
144
+	out, err := inspectField("test", "HostConfig.CpuQuota")
147 145
 	c.Assert(err, check.IsNil)
148
-
149 146
 	c.Assert(out, checker.Equals, "8000", check.Commentf("setting the CPU CFS quota failed"))
150 147
 }
151 148
 
152 149
 func (s *DockerSuite) TestRunWithCpuPeriod(c *check.C) {
153 150
 	testRequires(c, cpuCfsPeriod)
154 151
 
155
-	dockerCmd(c, "run", "--cpu-period", "50000", "--name", "test", "busybox", "true")
152
+	file := "/sys/fs/cgroup/cpu/cpu.cfs_period_us"
153
+	out, _ := dockerCmd(c, "run", "--cpu-period", "50000", "--name", "test", "busybox", "cat", file)
154
+	c.Assert(strings.TrimSpace(out), checker.Equals, "50000")
156 155
 
157 156
 	out, err := inspectField("test", "HostConfig.CpuPeriod")
158 157
 	c.Assert(err, check.IsNil)
... ...
@@ -163,8 +162,8 @@ func (s *DockerSuite) TestRunWithKernelMemory(c *check.C) {
163 163
 	testRequires(c, kernelMemorySupport)
164 164
 
165 165
 	file := "/sys/fs/cgroup/memory/memory.kmem.limit_in_bytes"
166
-	out, _ := dockerCmd(c, "run", "--kernel-memory", "50M", "--name", "test1", "busybox", "cat", file)
167
-	c.Assert(out, checker.Contains, "52428800")
166
+	stdout, _, _ := dockerCmdWithStdoutStderr(c, "run", "--kernel-memory", "50M", "--name", "test1", "busybox", "cat", file)
167
+	c.Assert(strings.TrimSpace(stdout), checker.Equals, "52428800")
168 168
 
169 169
 	out, err := inspectField("test1", "HostConfig.KernelMemory")
170 170
 	c.Assert(err, check.IsNil)
... ...
@@ -176,11 +175,16 @@ func (s *DockerSuite) TestRunWithKernelMemory(c *check.C) {
176 176
 	c.Assert(out, checker.Contains, expected)
177 177
 }
178 178
 
179
-// "test" should be printed
180
-func (s *DockerSuite) TestRunEchoStdoutWitCPUShares(c *check.C) {
179
+func (s *DockerSuite) TestRunWithCPUShares(c *check.C) {
181 180
 	testRequires(c, cpuShare)
182
-	out, _ := dockerCmd(c, "run", "--cpu-shares", "1000", "busybox", "echo", "test")
183
-	c.Assert(out, checker.Equals, "test\n", check.Commentf("container should've printed 'test'"))
181
+
182
+	file := "/sys/fs/cgroup/cpu/cpu.shares"
183
+	out, _ := dockerCmd(c, "run", "--cpu-shares", "1000", "--name", "test", "busybox", "cat", file)
184
+	c.Assert(strings.TrimSpace(out), checker.Equals, "1000")
185
+
186
+	out, err := inspectField("test", "HostConfig.CPUShares")
187
+	c.Assert(err, check.IsNil)
188
+	c.Assert(out, check.Equals, "1000")
184 189
 }
185 190
 
186 191
 // "test" should be printed
... ...
@@ -193,17 +197,38 @@ func (s *DockerSuite) TestRunEchoStdoutWithCPUSharesAndMemoryLimit(c *check.C) {
193 193
 
194 194
 func (s *DockerSuite) TestRunWithCpusetCpus(c *check.C) {
195 195
 	testRequires(c, cgroupCpuset)
196
-	dockerCmd(c, "run", "--cpuset-cpus", "0", "busybox", "true")
196
+
197
+	file := "/sys/fs/cgroup/cpuset/cpuset.cpus"
198
+	out, _ := dockerCmd(c, "run", "--cpuset-cpus", "0", "--name", "test", "busybox", "cat", file)
199
+	c.Assert(strings.TrimSpace(out), checker.Equals, "0")
200
+
201
+	out, err := inspectField("test", "HostConfig.CpusetCpus")
202
+	c.Assert(err, check.IsNil)
203
+	c.Assert(out, check.Equals, "0")
197 204
 }
198 205
 
199 206
 func (s *DockerSuite) TestRunWithCpusetMems(c *check.C) {
200 207
 	testRequires(c, cgroupCpuset)
201
-	dockerCmd(c, "run", "--cpuset-mems", "0", "busybox", "true")
208
+
209
+	file := "/sys/fs/cgroup/cpuset/cpuset.mems"
210
+	out, _ := dockerCmd(c, "run", "--cpuset-mems", "0", "--name", "test", "busybox", "cat", file)
211
+	c.Assert(strings.TrimSpace(out), checker.Equals, "0")
212
+
213
+	out, err := inspectField("test", "HostConfig.CpusetMems")
214
+	c.Assert(err, check.IsNil)
215
+	c.Assert(out, check.Equals, "0")
202 216
 }
203 217
 
204 218
 func (s *DockerSuite) TestRunWithBlkioWeight(c *check.C) {
205 219
 	testRequires(c, blkioWeight)
206
-	dockerCmd(c, "run", "--blkio-weight", "300", "busybox", "true")
220
+
221
+	file := "/sys/fs/cgroup/blkio/blkio.weight"
222
+	out, _ := dockerCmd(c, "run", "--blkio-weight", "300", "--name", "test", "busybox", "cat", file)
223
+	c.Assert(strings.TrimSpace(out), checker.Equals, "300")
224
+
225
+	out, err := inspectField("test", "HostConfig.BlkioWeight")
226
+	c.Assert(err, check.IsNil)
227
+	c.Assert(out, check.Equals, "300")
207 228
 }
208 229
 
209 230
 func (s *DockerSuite) TestRunWithBlkioInvalidWeight(c *check.C) {
... ...
@@ -240,13 +265,16 @@ func (s *DockerSuite) TestRunOOMExitCode(c *check.C) {
240 240
 	}
241 241
 }
242 242
 
243
-// "test" should be printed
244
-func (s *DockerSuite) TestRunEchoStdoutWithMemoryLimit(c *check.C) {
243
+func (s *DockerSuite) TestRunWithMemoryLimit(c *check.C) {
245 244
 	testRequires(c, memoryLimitSupport)
246
-	out, _, _ := dockerCmdWithStdoutStderr(c, "run", "-m", "32m", "busybox", "echo", "test")
247
-	out = strings.Trim(out, "\r\n")
248 245
 
249
-	c.Assert(out, checker.Equals, "test", check.Commentf("container should've printed 'test'"))
246
+	file := "/sys/fs/cgroup/memory/memory.limit_in_bytes"
247
+	stdout, _, _ := dockerCmdWithStdoutStderr(c, "run", "-m", "32M", "--name", "test", "busybox", "cat", file)
248
+	c.Assert(strings.TrimSpace(stdout), checker.Equals, "33554432")
249
+
250
+	out, err := inspectField("test", "HostConfig.Memory")
251
+	c.Assert(err, check.IsNil)
252
+	c.Assert(out, check.Equals, "33554432")
250 253
 }
251 254
 
252 255
 // TestRunWithoutMemoryswapLimit sets memory limit and disables swap
... ...
@@ -262,7 +290,13 @@ func (s *DockerSuite) TestRunWithoutMemoryswapLimit(c *check.C) {
262 262
 
263 263
 func (s *DockerSuite) TestRunWithSwappiness(c *check.C) {
264 264
 	testRequires(c, memorySwappinessSupport)
265
-	dockerCmd(c, "run", "--memory-swappiness", "0", "busybox", "true")
265
+	file := "/sys/fs/cgroup/memory/memory.swappiness"
266
+	out, _ := dockerCmd(c, "run", "--memory-swappiness", "0", "--name", "test", "busybox", "cat", file)
267
+	c.Assert(strings.TrimSpace(out), checker.Equals, "0")
268
+
269
+	out, err := inspectField("test", "HostConfig.MemorySwappiness")
270
+	c.Assert(err, check.IsNil)
271
+	c.Assert(out, check.Equals, "0")
266 272
 }
267 273
 
268 274
 func (s *DockerSuite) TestRunWithSwappinessInvalid(c *check.C) {
... ...
@@ -279,7 +313,14 @@ func (s *DockerSuite) TestRunWithSwappinessInvalid(c *check.C) {
279 279
 
280 280
 func (s *DockerSuite) TestRunWithMemoryReservation(c *check.C) {
281 281
 	testRequires(c, memoryReservationSupport)
282
-	dockerCmd(c, "run", "--memory-reservation", "200M", "busybox", "true")
282
+
283
+	file := "/sys/fs/cgroup/memory/memory.soft_limit_in_bytes"
284
+	out, _ := dockerCmd(c, "run", "--memory-reservation", "200M", "--name", "test", "busybox", "cat", file)
285
+	c.Assert(strings.TrimSpace(out), checker.Equals, "209715200")
286
+
287
+	out, err := inspectField("test", "HostConfig.MemoryReservation")
288
+	c.Assert(err, check.IsNil)
289
+	c.Assert(out, check.Equals, "209715200")
283 290
 }
284 291
 
285 292
 func (s *DockerSuite) TestRunWithMemoryReservationInvalid(c *check.C) {