github.com/rita33cool1/iot-system-gateway@v0.0.0-20200911033302-e65bde238cc5/docker-engine/integration/container/update_test.go (about) 1 package container // import "github.com/docker/docker/integration/container" 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 containertypes "github.com/docker/docker/api/types/container" 9 "github.com/docker/docker/integration/internal/container" 10 "github.com/docker/docker/integration/internal/request" 11 "github.com/docker/docker/internal/testutil" 12 "github.com/gotestyourself/gotestyourself/assert" 13 is "github.com/gotestyourself/gotestyourself/assert/cmp" 14 "github.com/gotestyourself/gotestyourself/poll" 15 ) 16 17 func TestUpdateRestartPolicy(t *testing.T) { 18 defer setupTest(t)() 19 client := request.NewAPIClient(t) 20 ctx := context.Background() 21 22 cID := container.Run(t, ctx, client, container.WithCmd("sh", "-c", "sleep 1 && false"), func(c *container.TestContainerConfig) { 23 c.HostConfig.RestartPolicy = containertypes.RestartPolicy{ 24 Name: "on-failure", 25 MaximumRetryCount: 3, 26 } 27 }) 28 29 _, err := client.ContainerUpdate(ctx, cID, containertypes.UpdateConfig{ 30 RestartPolicy: containertypes.RestartPolicy{ 31 Name: "on-failure", 32 MaximumRetryCount: 5, 33 }, 34 }) 35 assert.NilError(t, err) 36 37 timeout := 60 * time.Second 38 if testEnv.OSType == "windows" { 39 timeout = 180 * time.Second 40 } 41 42 poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond), poll.WithTimeout(timeout)) 43 44 inspect, err := client.ContainerInspect(ctx, cID) 45 assert.NilError(t, err) 46 assert.Check(t, is.Equal(inspect.RestartCount, 5)) 47 assert.Check(t, is.Equal(inspect.HostConfig.RestartPolicy.MaximumRetryCount, 5)) 48 } 49 50 func TestUpdateRestartWithAutoRemove(t *testing.T) { 51 defer setupTest(t)() 52 client := request.NewAPIClient(t) 53 ctx := context.Background() 54 55 cID := container.Run(t, ctx, client, func(c *container.TestContainerConfig) { 56 c.HostConfig.AutoRemove = true 57 }) 58 59 _, err := client.ContainerUpdate(ctx, cID, containertypes.UpdateConfig{ 60 RestartPolicy: containertypes.RestartPolicy{ 61 Name: "always", 62 }, 63 }) 64 testutil.ErrorContains(t, err, "Restart policy cannot be updated because AutoRemove is enabled for the container") 65 }