github.com/docker/Engine@v17.12.1-ce-rc2+incompatible/integration-cli/docker_cli_update_test.go (about)

     1  package main
     2  
     3  import (
     4  	"strings"
     5  	"time"
     6  
     7  	"github.com/docker/docker/integration-cli/checker"
     8  	"github.com/docker/docker/integration-cli/cli"
     9  	"github.com/go-check/check"
    10  	"github.com/gotestyourself/gotestyourself/icmd"
    11  )
    12  
    13  func (s *DockerSuite) TestUpdateRestartPolicy(c *check.C) {
    14  	out := cli.DockerCmd(c, "run", "-d", "--restart=on-failure:3", "busybox", "sh", "-c", "sleep 1 && false").Combined()
    15  	timeout := 60 * time.Second
    16  	if testEnv.DaemonPlatform() == "windows" {
    17  		timeout = 180 * time.Second
    18  	}
    19  
    20  	id := strings.TrimSpace(string(out))
    21  
    22  	// update restart policy to on-failure:5
    23  	cli.DockerCmd(c, "update", "--restart=on-failure:5", id)
    24  
    25  	cli.WaitExited(c, id, timeout)
    26  
    27  	count := inspectField(c, id, "RestartCount")
    28  	c.Assert(count, checker.Equals, "5")
    29  
    30  	maximumRetryCount := inspectField(c, id, "HostConfig.RestartPolicy.MaximumRetryCount")
    31  	c.Assert(maximumRetryCount, checker.Equals, "5")
    32  }
    33  
    34  func (s *DockerSuite) TestUpdateRestartWithAutoRemoveFlag(c *check.C) {
    35  	out := runSleepingContainer(c, "--rm")
    36  	id := strings.TrimSpace(out)
    37  
    38  	// update restart policy for an AutoRemove container
    39  	cli.Docker(cli.Args("update", "--restart=always", id)).Assert(c, icmd.Expected{
    40  		ExitCode: 1,
    41  		Err:      "Restart policy cannot be updated because AutoRemove is enabled for the container",
    42  	})
    43  }