github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/integration/container/stop_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  	"gotest.tools/v3/poll"
    11  )
    12  
    13  // hcs can sometimes take a long time to stop container.
    14  const StopContainerWindowsPollTimeout = 75 * time.Second
    15  
    16  func TestStopContainerWithRestartPolicyAlways(t *testing.T) {
    17  	ctx := setupTest(t)
    18  	apiClient := testEnv.APIClient()
    19  
    20  	names := []string{"verifyRestart1-" + t.Name(), "verifyRestart2-" + t.Name()}
    21  	for _, name := range names {
    22  		container.Run(ctx, t, apiClient,
    23  			container.WithName(name),
    24  			container.WithCmd("false"),
    25  			container.WithRestartPolicy(containertypes.RestartPolicyAlways),
    26  		)
    27  	}
    28  
    29  	for _, name := range names {
    30  		poll.WaitOn(t, container.IsInState(ctx, apiClient, name, "running", "restarting"), poll.WithDelay(100*time.Millisecond))
    31  	}
    32  
    33  	for _, name := range names {
    34  		err := apiClient.ContainerStop(ctx, name, containertypes.StopOptions{})
    35  		assert.NilError(t, err)
    36  	}
    37  
    38  	for _, name := range names {
    39  		poll.WaitOn(t, container.IsStopped(ctx, apiClient, name), poll.WithDelay(100*time.Millisecond))
    40  	}
    41  }