Signed-off-by: Vincent Demeester <vincent@sbr.pm>
| ... | ... |
@@ -25,16 +25,12 @@ import ( |
| 25 | 25 |
func (s *DockerSuite) TestRunRedirectStdout(c *check.C) {
|
| 26 | 26 |
checkRedirect := func(command string) {
|
| 27 | 27 |
_, tty, err := pty.Open() |
| 28 |
- if err != nil {
|
|
| 29 |
- c.Fatalf("Could not open pty: %v", err)
|
|
| 30 |
- } |
|
| 28 |
+ c.Assert(err, checker.IsNil, check.Commentf("Could not open pty"))
|
|
| 31 | 29 |
cmd := exec.Command("sh", "-c", command)
|
| 32 | 30 |
cmd.Stdin = tty |
| 33 | 31 |
cmd.Stdout = tty |
| 34 | 32 |
cmd.Stderr = tty |
| 35 |
- if err := cmd.Start(); err != nil {
|
|
| 36 |
- c.Fatalf("start err: %v", err)
|
|
| 37 |
- } |
|
| 33 |
+ c.Assert(cmd.Start(), checker.IsNil) |
|
| 38 | 34 |
ch := make(chan error) |
| 39 | 35 |
go func() {
|
| 40 | 36 |
ch <- cmd.Wait() |
| ... | ... |
@@ -45,9 +41,7 @@ func (s *DockerSuite) TestRunRedirectStdout(c *check.C) {
|
| 45 | 45 |
case <-time.After(10 * time.Second): |
| 46 | 46 |
c.Fatal("command timeout")
|
| 47 | 47 |
case err := <-ch: |
| 48 |
- if err != nil {
|
|
| 49 |
- c.Fatalf("wait err=%v", err)
|
|
| 50 |
- } |
|
| 48 |
+ c.Assert(err, checker.IsNil, check.Commentf("wait err"))
|
|
| 51 | 49 |
} |
| 52 | 50 |
} |
| 53 | 51 |
|
| ... | ... |
@@ -60,35 +54,23 @@ func (s *DockerSuite) TestRunWithVolumesIsRecursive(c *check.C) {
|
| 60 | 60 |
// /tmp gets permission denied |
| 61 | 61 |
testRequires(c, NotUserNamespace) |
| 62 | 62 |
tmpDir, err := ioutil.TempDir("", "docker_recursive_mount_test")
|
| 63 |
- if err != nil {
|
|
| 64 |
- c.Fatal(err) |
|
| 65 |
- } |
|
| 63 |
+ c.Assert(err, checker.IsNil) |
|
| 66 | 64 |
|
| 67 | 65 |
defer os.RemoveAll(tmpDir) |
| 68 | 66 |
|
| 69 | 67 |
// Create a temporary tmpfs mount. |
| 70 | 68 |
tmpfsDir := filepath.Join(tmpDir, "tmpfs") |
| 71 |
- if err := os.MkdirAll(tmpfsDir, 0777); err != nil {
|
|
| 72 |
- c.Fatalf("failed to mkdir at %s - %s", tmpfsDir, err)
|
|
| 73 |
- } |
|
| 74 |
- if err := mount.Mount("tmpfs", tmpfsDir, "tmpfs", ""); err != nil {
|
|
| 75 |
- c.Fatalf("failed to create a tmpfs mount at %s - %s", tmpfsDir, err)
|
|
| 76 |
- } |
|
| 69 |
+ c.Assert(os.MkdirAll(tmpfsDir, 0777), checker.IsNil, check.Commentf("failed to mkdir at %s", tmpfsDir))
|
|
| 70 |
+ c.Assert(mount.Mount("tmpfs", tmpfsDir, "tmpfs", ""), checker.IsNil, check.Commentf("failed to create a tmpfs mount at %s", tmpfsDir))
|
|
| 77 | 71 |
|
| 78 | 72 |
f, err := ioutil.TempFile(tmpfsDir, "touch-me") |
| 79 |
- if err != nil {
|
|
| 80 |
- c.Fatal(err) |
|
| 81 |
- } |
|
| 73 |
+ c.Assert(err, checker.IsNil) |
|
| 82 | 74 |
defer f.Close() |
| 83 | 75 |
|
| 84 | 76 |
runCmd := exec.Command(dockerBinary, "run", "--name", "test-data", "--volume", fmt.Sprintf("%s:/tmp:ro", tmpDir), "busybox:latest", "ls", "/tmp/tmpfs")
|
| 85 |
- out, stderr, exitCode, err := runCommandWithStdoutStderr(runCmd) |
|
| 86 |
- if err != nil && exitCode != 0 {
|
|
| 87 |
- c.Fatal(out, stderr, err) |
|
| 88 |
- } |
|
| 89 |
- if !strings.Contains(out, filepath.Base(f.Name())) {
|
|
| 90 |
- c.Fatal("Recursive bind mount test failed. Expected file not found")
|
|
| 91 |
- } |
|
| 77 |
+ out, _, _, err := runCommandWithStdoutStderr(runCmd) |
|
| 78 |
+ c.Assert(err, checker.IsNil) |
|
| 79 |
+ c.Assert(out, checker.Contains, filepath.Base(f.Name()), check.Commentf("Recursive bind mount test failed. Expected file not found"))
|
|
| 92 | 80 |
} |
| 93 | 81 |
|
| 94 | 82 |
func (s *DockerSuite) TestRunDeviceDirectory(c *check.C) {
|
| ... | ... |
@@ -98,14 +80,10 @@ func (s *DockerSuite) TestRunDeviceDirectory(c *check.C) {
|
| 98 | 98 |
} |
| 99 | 99 |
|
| 100 | 100 |
out, _ := dockerCmd(c, "run", "--device", "/dev/snd:/dev/snd", "busybox", "sh", "-c", "ls /dev/snd/") |
| 101 |
- if actual := strings.Trim(out, "\r\n"); !strings.Contains(out, "timer") {
|
|
| 102 |
- c.Fatalf("expected output /dev/snd/timer, received %s", actual)
|
|
| 103 |
- } |
|
| 101 |
+ c.Assert(strings.Trim(out, "\r\n"), checker.Contains, "timer", check.Commentf("expected output /dev/snd/timer"))
|
|
| 104 | 102 |
|
| 105 | 103 |
out, _ = dockerCmd(c, "run", "--device", "/dev/snd:/dev/othersnd", "busybox", "sh", "-c", "ls /dev/othersnd/") |
| 106 |
- if actual := strings.Trim(out, "\r\n"); !strings.Contains(out, "seq") {
|
|
| 107 |
- c.Fatalf("expected output /dev/othersnd/seq, received %s", actual)
|
|
| 108 |
- } |
|
| 104 |
+ c.Assert(strings.Trim(out, "\r\n"), checker.Contains, "seq", check.Commentf("expected output /dev/othersnd/seq"))
|
|
| 109 | 105 |
} |
| 110 | 106 |
|
| 111 | 107 |
// TestRunDetach checks attaching and detaching with the escape sequence. |
| ... | ... |
@@ -113,40 +91,27 @@ func (s *DockerSuite) TestRunAttachDetach(c *check.C) {
|
| 113 | 113 |
name := "attach-detach" |
| 114 | 114 |
cmd := exec.Command(dockerBinary, "run", "--name", name, "-it", "busybox", "cat") |
| 115 | 115 |
stdout, err := cmd.StdoutPipe() |
| 116 |
- if err != nil {
|
|
| 117 |
- c.Fatal(err) |
|
| 118 |
- } |
|
| 116 |
+ c.Assert(err, checker.IsNil) |
|
| 119 | 117 |
cpty, tty, err := pty.Open() |
| 120 |
- if err != nil {
|
|
| 121 |
- c.Fatal(err) |
|
| 122 |
- } |
|
| 118 |
+ c.Assert(err, checker.IsNil) |
|
| 123 | 119 |
defer cpty.Close() |
| 124 | 120 |
cmd.Stdin = tty |
| 125 |
- if err := cmd.Start(); err != nil {
|
|
| 126 |
- c.Fatal(err) |
|
| 127 |
- } |
|
| 121 |
+ c.Assert(cmd.Start(), checker.IsNil) |
|
| 128 | 122 |
c.Assert(waitRun(name), check.IsNil) |
| 129 | 123 |
|
| 130 |
- if _, err := cpty.Write([]byte("hello\n")); err != nil {
|
|
| 131 |
- c.Fatal(err) |
|
| 132 |
- } |
|
| 124 |
+ _, err = cpty.Write([]byte("hello\n"))
|
|
| 125 |
+ c.Assert(err, checker.IsNil) |
|
| 133 | 126 |
|
| 134 | 127 |
out, err := bufio.NewReader(stdout).ReadString('\n')
|
| 135 |
- if err != nil {
|
|
| 136 |
- c.Fatal(err) |
|
| 137 |
- } |
|
| 138 |
- if strings.TrimSpace(out) != "hello" {
|
|
| 139 |
- c.Fatalf("expected 'hello', got %q", out)
|
|
| 140 |
- } |
|
| 128 |
+ c.Assert(err, checker.IsNil) |
|
| 129 |
+ c.Assert(strings.TrimSpace(out), checker.Equals, "hello") |
|
| 141 | 130 |
|
| 142 | 131 |
// escape sequence |
| 143 |
- if _, err := cpty.Write([]byte{16}); err != nil {
|
|
| 144 |
- c.Fatal(err) |
|
| 145 |
- } |
|
| 132 |
+ _, err = cpty.Write([]byte{16})
|
|
| 133 |
+ c.Assert(err, checker.IsNil) |
|
| 146 | 134 |
time.Sleep(100 * time.Millisecond) |
| 147 |
- if _, err := cpty.Write([]byte{17}); err != nil {
|
|
| 148 |
- c.Fatal(err) |
|
| 149 |
- } |
|
| 135 |
+ _, err = cpty.Write([]byte{17})
|
|
| 136 |
+ c.Assert(err, checker.IsNil) |
|
| 150 | 137 |
|
| 151 | 138 |
ch := make(chan struct{})
|
| 152 | 139 |
go func() {
|
| ... | ... |
@@ -155,12 +120,8 @@ func (s *DockerSuite) TestRunAttachDetach(c *check.C) {
|
| 155 | 155 |
}() |
| 156 | 156 |
|
| 157 | 157 |
running, err := inspectField(name, "State.Running") |
| 158 |
- if err != nil {
|
|
| 159 |
- c.Fatal(err) |
|
| 160 |
- } |
|
| 161 |
- if running != "true" {
|
|
| 162 |
- c.Fatal("expected container to still be running")
|
|
| 163 |
- } |
|
| 158 |
+ c.Assert(err, checker.IsNil) |
|
| 159 |
+ c.Assert(running, checker.Equals, "true", check.Commentf("expected container to still be running"))
|
|
| 164 | 160 |
|
| 165 | 161 |
go func() {
|
| 166 | 162 |
exec.Command(dockerBinary, "kill", name).Run() |
| ... | ... |
@@ -178,34 +139,24 @@ func (s *DockerSuite) TestRunEchoStdoutWithCPUQuota(c *check.C) {
|
| 178 | 178 |
testRequires(c, cpuCfsQuota) |
| 179 | 179 |
|
| 180 | 180 |
out, _, err := dockerCmdWithError("run", "--cpu-quota", "8000", "--name", "test", "busybox", "echo", "test")
|
| 181 |
- if err != nil {
|
|
| 182 |
- c.Fatalf("failed to run container: %v, output: %q", err, out)
|
|
| 183 |
- } |
|
| 181 |
+ c.Assert(err, checker.IsNil, check.Commentf("failed to run container, output: %q", out))
|
|
| 184 | 182 |
out = strings.TrimSpace(out) |
| 185 |
- if out != "test" {
|
|
| 186 |
- c.Errorf("container should've printed 'test'")
|
|
| 187 |
- } |
|
| 183 |
+ c.Assert(out, checker.Equals, "test", check.Commentf("container should've printed 'test'"))
|
|
| 188 | 184 |
|
| 189 | 185 |
out, err = inspectField("test", "HostConfig.CpuQuota")
|
| 190 | 186 |
c.Assert(err, check.IsNil) |
| 191 | 187 |
|
| 192 |
- if out != "8000" {
|
|
| 193 |
- c.Fatalf("setting the CPU CFS quota failed")
|
|
| 194 |
- } |
|
| 188 |
+ c.Assert(out, checker.Equals, "8000", check.Commentf("setting the CPU CFS quota failed"))
|
|
| 195 | 189 |
} |
| 196 | 190 |
|
| 197 | 191 |
func (s *DockerSuite) TestRunWithCpuPeriod(c *check.C) {
|
| 198 | 192 |
testRequires(c, cpuCfsPeriod) |
| 199 | 193 |
|
| 200 |
- if _, _, err := dockerCmdWithError("run", "--cpu-period", "50000", "--name", "test", "busybox", "true"); err != nil {
|
|
| 201 |
- c.Fatalf("failed to run container: %v", err)
|
|
| 202 |
- } |
|
| 194 |
+ dockerCmd(c, "run", "--cpu-period", "50000", "--name", "test", "busybox", "true") |
|
| 203 | 195 |
|
| 204 | 196 |
out, err := inspectField("test", "HostConfig.CpuPeriod")
|
| 205 | 197 |
c.Assert(err, check.IsNil) |
| 206 |
- if out != "50000" {
|
|
| 207 |
- c.Fatalf("setting the CPU CFS period failed")
|
|
| 208 |
- } |
|
| 198 |
+ c.Assert(out, checker.Equals, "50000", check.Commentf("setting the CPU CFS period failed"))
|
|
| 209 | 199 |
} |
| 210 | 200 |
|
| 211 | 201 |
func (s *DockerSuite) TestRunWithKernelMemory(c *check.C) {
|
| ... | ... |
@@ -227,9 +178,7 @@ func (s *DockerSuite) TestRunWithKernelMemory(c *check.C) {
|
| 227 | 227 |
func (s *DockerSuite) TestRunEchoStdoutWitCPUShares(c *check.C) {
|
| 228 | 228 |
testRequires(c, cpuShare) |
| 229 | 229 |
out, _ := dockerCmd(c, "run", "--cpu-shares", "1000", "busybox", "echo", "test") |
| 230 |
- if out != "test\n" {
|
|
| 231 |
- c.Errorf("container should've printed 'test', got %q instead", out)
|
|
| 232 |
- } |
|
| 230 |
+ c.Assert(out, checker.Equals, "test\n", check.Commentf("container should've printed 'test'"))
|
|
| 233 | 231 |
} |
| 234 | 232 |
|
| 235 | 233 |
// "test" should be printed |
| ... | ... |
@@ -237,37 +186,27 @@ func (s *DockerSuite) TestRunEchoStdoutWithCPUSharesAndMemoryLimit(c *check.C) {
|
| 237 | 237 |
testRequires(c, cpuShare) |
| 238 | 238 |
testRequires(c, memoryLimitSupport) |
| 239 | 239 |
out, _, _ := dockerCmdWithStdoutStderr(c, "run", "--cpu-shares", "1000", "-m", "32m", "busybox", "echo", "test") |
| 240 |
- if out != "test\n" {
|
|
| 241 |
- c.Errorf("container should've printed 'test', got %q instead", out)
|
|
| 242 |
- } |
|
| 240 |
+ c.Assert(out, checker.Equals, "test\n", check.Commentf("container should've printed 'test'"))
|
|
| 243 | 241 |
} |
| 244 | 242 |
|
| 245 | 243 |
func (s *DockerSuite) TestRunWithCpuset(c *check.C) {
|
| 246 | 244 |
testRequires(c, cgroupCpuset) |
| 247 |
- if _, code := dockerCmd(c, "run", "--cpuset", "0", "busybox", "true"); code != 0 {
|
|
| 248 |
- c.Fatalf("container should run successfully with cpuset of 0")
|
|
| 249 |
- } |
|
| 245 |
+ dockerCmd(c, "run", "--cpuset", "0", "busybox", "true") |
|
| 250 | 246 |
} |
| 251 | 247 |
|
| 252 | 248 |
func (s *DockerSuite) TestRunWithCpusetCpus(c *check.C) {
|
| 253 | 249 |
testRequires(c, cgroupCpuset) |
| 254 |
- if _, code := dockerCmd(c, "run", "--cpuset-cpus", "0", "busybox", "true"); code != 0 {
|
|
| 255 |
- c.Fatalf("container should run successfully with cpuset-cpus of 0")
|
|
| 256 |
- } |
|
| 250 |
+ dockerCmd(c, "run", "--cpuset-cpus", "0", "busybox", "true") |
|
| 257 | 251 |
} |
| 258 | 252 |
|
| 259 | 253 |
func (s *DockerSuite) TestRunWithCpusetMems(c *check.C) {
|
| 260 | 254 |
testRequires(c, cgroupCpuset) |
| 261 |
- if _, code := dockerCmd(c, "run", "--cpuset-mems", "0", "busybox", "true"); code != 0 {
|
|
| 262 |
- c.Fatalf("container should run successfully with cpuset-mems of 0")
|
|
| 263 |
- } |
|
| 255 |
+ dockerCmd(c, "run", "--cpuset-mems", "0", "busybox", "true") |
|
| 264 | 256 |
} |
| 265 | 257 |
|
| 266 | 258 |
func (s *DockerSuite) TestRunWithBlkioWeight(c *check.C) {
|
| 267 | 259 |
testRequires(c, blkioWeight) |
| 268 |
- if _, code := dockerCmd(c, "run", "--blkio-weight", "300", "busybox", "true"); code != 0 {
|
|
| 269 |
- c.Fatalf("container should run successfully with blkio-weight of 300")
|
|
| 270 |
- } |
|
| 260 |
+ dockerCmd(c, "run", "--blkio-weight", "300", "busybox", "true") |
|
| 271 | 261 |
} |
| 272 | 262 |
|
| 273 | 263 |
func (s *DockerSuite) TestRunWithBlkioInvalidWeight(c *check.C) {
|
| ... | ... |
@@ -304,9 +243,7 @@ func (s *DockerSuite) TestRunEchoStdoutWithMemoryLimit(c *check.C) {
|
| 304 | 304 |
out, _, _ := dockerCmdWithStdoutStderr(c, "run", "-m", "32m", "busybox", "echo", "test") |
| 305 | 305 |
out = strings.Trim(out, "\r\n") |
| 306 | 306 |
|
| 307 |
- if expected := "test"; out != expected {
|
|
| 308 |
- c.Fatalf("container should've printed %q but printed %q", expected, out)
|
|
| 309 |
- } |
|
| 307 |
+ c.Assert(out, checker.Equals, "test", check.Commentf("container should've printed 'test'"))
|
|
| 310 | 308 |
} |
| 311 | 309 |
|
| 312 | 310 |
// TestRunWithoutMemoryswapLimit sets memory limit and disables swap |
| ... | ... |
@@ -348,25 +285,19 @@ func (s *DockerSuite) TestRunWithMemoryReservationInvalid(c *check.C) {
|
| 348 | 348 |
out, _, err := dockerCmdWithError("run", "-m", "500M", "--memory-reservation", "800M", "busybox", "true")
|
| 349 | 349 |
c.Assert(err, check.NotNil) |
| 350 | 350 |
expected := "Minimum memory limit should be larger than memory reservation limit" |
| 351 |
- if !strings.Contains(strings.TrimSpace(out), expected) {
|
|
| 352 |
- c.Fatalf("run container should fail with invalid memory reservation, output: %q", out)
|
|
| 353 |
- } |
|
| 351 |
+ c.Assert(strings.TrimSpace(out), checker.Contains, expected, check.Commentf("run container should fail with invalid memory reservation"))
|
|
| 354 | 352 |
} |
| 355 | 353 |
|
| 356 | 354 |
func (s *DockerSuite) TestStopContainerSignal(c *check.C) {
|
| 357 | 355 |
out, _ := dockerCmd(c, "run", "--stop-signal", "SIGUSR1", "-d", "busybox", "/bin/sh", "-c", `trap 'echo "exit trapped"; exit 0' USR1; while true; do sleep 1; done`) |
| 358 | 356 |
containerID := strings.TrimSpace(out) |
| 359 | 357 |
|
| 360 |
- if err := waitRun(containerID); err != nil {
|
|
| 361 |
- c.Fatal(err) |
|
| 362 |
- } |
|
| 358 |
+ c.Assert(waitRun(containerID), checker.IsNil) |
|
| 363 | 359 |
|
| 364 | 360 |
dockerCmd(c, "stop", containerID) |
| 365 | 361 |
out, _ = dockerCmd(c, "logs", containerID) |
| 366 | 362 |
|
| 367 |
- if !strings.Contains(out, "exit trapped") {
|
|
| 368 |
- c.Fatalf("Expected `exit trapped` in the log, got %v", out)
|
|
| 369 |
- } |
|
| 363 |
+ c.Assert(out, checker.Contains, "exit trapped", check.Commentf("Expected `exit trapped` in the log"))
|
|
| 370 | 364 |
} |
| 371 | 365 |
|
| 372 | 366 |
func (s *DockerSuite) TestRunSwapLessThanMemoryLimit(c *check.C) {
|
| ... | ... |
@@ -376,9 +307,7 @@ func (s *DockerSuite) TestRunSwapLessThanMemoryLimit(c *check.C) {
|
| 376 | 376 |
expected := "Minimum memoryswap limit should be larger than memory limit" |
| 377 | 377 |
c.Assert(err, check.NotNil) |
| 378 | 378 |
|
| 379 |
- if !strings.Contains(out, expected) {
|
|
| 380 |
- c.Fatalf("Expected output to contain %q, not %q", out, expected)
|
|
| 381 |
- } |
|
| 379 |
+ c.Assert(out, checker.Contains, expected) |
|
| 382 | 380 |
} |
| 383 | 381 |
|
| 384 | 382 |
func (s *DockerSuite) TestRunInvalidCpusetCpusFlagValue(c *check.C) {
|
| ... | ... |
@@ -397,9 +326,7 @@ func (s *DockerSuite) TestRunInvalidCpusetCpusFlagValue(c *check.C) {
|
| 397 | 397 |
out, _, err := dockerCmdWithError("run", "--cpuset-cpus", strconv.Itoa(invalid), "busybox", "true")
|
| 398 | 398 |
c.Assert(err, check.NotNil) |
| 399 | 399 |
expected := fmt.Sprintf("Error response from daemon: Requested CPUs are not available - requested %s, available: %s", strconv.Itoa(invalid), sysInfo.Cpus)
|
| 400 |
- if !(strings.Contains(out, expected)) {
|
|
| 401 |
- c.Fatalf("Expected output to contain %q, got %q", expected, out)
|
|
| 402 |
- } |
|
| 400 |
+ c.Assert(out, checker.Contains, expected) |
|
| 403 | 401 |
} |
| 404 | 402 |
|
| 405 | 403 |
func (s *DockerSuite) TestRunInvalidCpusetMemsFlagValue(c *check.C) {
|
| ... | ... |
@@ -418,9 +345,7 @@ func (s *DockerSuite) TestRunInvalidCpusetMemsFlagValue(c *check.C) {
|
| 418 | 418 |
out, _, err := dockerCmdWithError("run", "--cpuset-mems", strconv.Itoa(invalid), "busybox", "true")
|
| 419 | 419 |
c.Assert(err, check.NotNil) |
| 420 | 420 |
expected := fmt.Sprintf("Error response from daemon: Requested memory nodes are not available - requested %s, available: %s", strconv.Itoa(invalid), sysInfo.Mems)
|
| 421 |
- if !(strings.Contains(out, expected)) {
|
|
| 422 |
- c.Fatalf("Expected output to contain %q, got %q", expected, out)
|
|
| 423 |
- } |
|
| 421 |
+ c.Assert(out, checker.Contains, expected) |
|
| 424 | 422 |
} |
| 425 | 423 |
|
| 426 | 424 |
func (s *DockerSuite) TestRunInvalidCPUShares(c *check.C) {
|