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