dockerCmd when possible
Addresses: #14603 integration-cli/docker_cli_daemon_experimental_test.go (hqhq) integration-cli/docker_cli_daemon_test.go (hqhq) integration-cli/docker_cli_diff_test.go (hqhq) integration-cli/docker_cli_events_test.go (hqhq) integration-cli/docker_cli_events_unix_test.go (hqhq) integration-cli/docker_cli_exec_test.go (hqhq) integration-cli/docker_cli_exec_unix_test.go (hqhq) integration-cli/docker_cli_experimental_test.go (hqhq) integration-cli/docker_cli_export_import_test.go (hqhq) integration-cli/docker_cli_help_test.go (hqhq) integration-cli/docker_cli_history_test.go (hqhq) integration-cli/docker_cli_images_test.go (hqhq) integration-cli/docker_cli_import_test.go (hqhq) integration-cli/docker_cli_info_test.go (hqhq) integration-cli/docker_cli_inspect_test.go (hqhq) integration-cli/docker_cli_kill_test.go (hqhq) Signed-off-by: Qiang Huang <h.huangqiang@huawei.com> Upstream-commit: 668e2369cc5d57d634d0e559241ea4c4cbde65d8 Component: engine
This commit is contained in:
@ -1,75 +1,42 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"github.com/go-check/check"
|
||||
)
|
||||
|
||||
func (s *DockerSuite) TestKillContainer(c *check.C) {
|
||||
runCmd := exec.Command(dockerBinary, "run", "-d", "busybox", "top")
|
||||
out, _, err := runCommandWithOutput(runCmd)
|
||||
if err != nil {
|
||||
c.Fatal(out, err)
|
||||
}
|
||||
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
cleanedContainerID := strings.TrimSpace(out)
|
||||
c.Assert(waitRun(cleanedContainerID), check.IsNil)
|
||||
|
||||
killCmd := exec.Command(dockerBinary, "kill", cleanedContainerID)
|
||||
if out, _, err = runCommandWithOutput(killCmd); err != nil {
|
||||
c.Fatalf("failed to kill container: %s, %v", out, err)
|
||||
}
|
||||
|
||||
listRunningContainersCmd := exec.Command(dockerBinary, "ps", "-q")
|
||||
out, _, err = runCommandWithOutput(listRunningContainersCmd)
|
||||
if err != nil {
|
||||
c.Fatalf("failed to list running containers: %s, %v", out, err)
|
||||
}
|
||||
dockerCmd(c, "kill", cleanedContainerID)
|
||||
|
||||
out, _ = dockerCmd(c, "ps", "-q")
|
||||
if strings.Contains(out, cleanedContainerID) {
|
||||
c.Fatal("killed container is still running")
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestKillofStoppedContainer(c *check.C) {
|
||||
runCmd := exec.Command(dockerBinary, "run", "-d", "busybox", "top")
|
||||
out, _, err := runCommandWithOutput(runCmd)
|
||||
c.Assert(err, check.IsNil)
|
||||
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
cleanedContainerID := strings.TrimSpace(out)
|
||||
|
||||
stopCmd := exec.Command(dockerBinary, "stop", cleanedContainerID)
|
||||
out, _, err = runCommandWithOutput(stopCmd)
|
||||
c.Assert(err, check.IsNil)
|
||||
dockerCmd(c, "stop", cleanedContainerID)
|
||||
|
||||
killCmd := exec.Command(dockerBinary, "kill", "-s", "30", cleanedContainerID)
|
||||
_, _, err = runCommandWithOutput(killCmd)
|
||||
_, _, err := dockerCmdWithError(c, "kill", "-s", "30", cleanedContainerID)
|
||||
c.Assert(err, check.Not(check.IsNil), check.Commentf("Container %s is not running", cleanedContainerID))
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestKillDifferentUserContainer(c *check.C) {
|
||||
runCmd := exec.Command(dockerBinary, "run", "-u", "daemon", "-d", "busybox", "top")
|
||||
out, _, err := runCommandWithOutput(runCmd)
|
||||
if err != nil {
|
||||
c.Fatal(out, err)
|
||||
}
|
||||
|
||||
out, _ := dockerCmd(c, "run", "-u", "daemon", "-d", "busybox", "top")
|
||||
cleanedContainerID := strings.TrimSpace(out)
|
||||
c.Assert(waitRun(cleanedContainerID), check.IsNil)
|
||||
|
||||
killCmd := exec.Command(dockerBinary, "kill", cleanedContainerID)
|
||||
if out, _, err = runCommandWithOutput(killCmd); err != nil {
|
||||
c.Fatalf("failed to kill container: %s, %v", out, err)
|
||||
}
|
||||
|
||||
listRunningContainersCmd := exec.Command(dockerBinary, "ps", "-q")
|
||||
out, _, err = runCommandWithOutput(listRunningContainersCmd)
|
||||
if err != nil {
|
||||
c.Fatalf("failed to list running containers: %s, %v", out, err)
|
||||
}
|
||||
dockerCmd(c, "kill", cleanedContainerID)
|
||||
|
||||
out, _ = dockerCmd(c, "ps", "-q")
|
||||
if strings.Contains(out, cleanedContainerID) {
|
||||
c.Fatal("killed container is still running")
|
||||
}
|
||||
@ -77,58 +44,45 @@ func (s *DockerSuite) TestKillDifferentUserContainer(c *check.C) {
|
||||
|
||||
// regression test about correct signal parsing see #13665
|
||||
func (s *DockerSuite) TestKillWithSignal(c *check.C) {
|
||||
runCmd := exec.Command(dockerBinary, "run", "-d", "busybox", "top")
|
||||
out, _, err := runCommandWithOutput(runCmd)
|
||||
c.Assert(err, check.IsNil)
|
||||
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
cid := strings.TrimSpace(out)
|
||||
c.Assert(waitRun(cid), check.IsNil)
|
||||
|
||||
killCmd := exec.Command(dockerBinary, "kill", "-s", "SIGWINCH", cid)
|
||||
_, err = runCommand(killCmd)
|
||||
c.Assert(err, check.IsNil)
|
||||
dockerCmd(c, "kill", "-s", "SIGWINCH", cid)
|
||||
|
||||
running, err := inspectField(cid, "State.Running")
|
||||
running, _ := inspectField(cid, "State.Running")
|
||||
if running != "true" {
|
||||
c.Fatal("Container should be in running state after SIGWINCH")
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestKillWithInvalidSignal(c *check.C) {
|
||||
runCmd := exec.Command(dockerBinary, "run", "-d", "busybox", "top")
|
||||
out, _, err := runCommandWithOutput(runCmd)
|
||||
c.Assert(err, check.IsNil)
|
||||
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
cid := strings.TrimSpace(out)
|
||||
c.Assert(waitRun(cid), check.IsNil)
|
||||
|
||||
killCmd := exec.Command(dockerBinary, "kill", "-s", "0", cid)
|
||||
out, _, err = runCommandWithOutput(killCmd)
|
||||
out, _, err := dockerCmdWithError(c, "kill", "-s", "0", cid)
|
||||
c.Assert(err, check.NotNil)
|
||||
if !strings.ContainsAny(out, "Invalid signal: 0") {
|
||||
c.Fatal("Kill with an invalid signal didn't error out correctly")
|
||||
}
|
||||
|
||||
running, err := inspectField(cid, "State.Running")
|
||||
running, _ := inspectField(cid, "State.Running")
|
||||
if running != "true" {
|
||||
c.Fatal("Container should be in running state after an invalid signal")
|
||||
}
|
||||
|
||||
runCmd = exec.Command(dockerBinary, "run", "-d", "busybox", "top")
|
||||
out, _, err = runCommandWithOutput(runCmd)
|
||||
c.Assert(err, check.IsNil)
|
||||
|
||||
out, _ = dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
cid = strings.TrimSpace(out)
|
||||
c.Assert(waitRun(cid), check.IsNil)
|
||||
|
||||
killCmd = exec.Command(dockerBinary, "kill", "-s", "SIG42", cid)
|
||||
out, _, err = runCommandWithOutput(killCmd)
|
||||
out, _, err = dockerCmdWithError(c, "kill", "-s", "SIG42", cid)
|
||||
c.Assert(err, check.NotNil)
|
||||
if !strings.ContainsAny(out, "Invalid signal: SIG42") {
|
||||
c.Fatal("Kill with an invalid signal error out correctly")
|
||||
}
|
||||
|
||||
running, err = inspectField(cid, "State.Running")
|
||||
running, _ = inspectField(cid, "State.Running")
|
||||
if running != "true" {
|
||||
c.Fatal("Container should be in running state after an invalid signal")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user