github.com/rita33cool1/iot-system-gateway@v0.0.0-20200911033302-e65bde238cc5/docker-engine/integration/internal/container/container.go (about)

     1  package container
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/docker/docker/api/types"
     8  	"github.com/docker/docker/api/types/container"
     9  	"github.com/docker/docker/api/types/network"
    10  	"github.com/docker/docker/client"
    11  	"github.com/gotestyourself/gotestyourself/assert"
    12  )
    13  
    14  // TestContainerConfig holds container configuration struct that
    15  // are used in api calls.
    16  type TestContainerConfig struct {
    17  	Name             string
    18  	Config           *container.Config
    19  	HostConfig       *container.HostConfig
    20  	NetworkingConfig *network.NetworkingConfig
    21  }
    22  
    23  // Create creates a container with the specified options
    24  func Create(t *testing.T, ctx context.Context, client client.APIClient, ops ...func(*TestContainerConfig)) string { // nolint: golint
    25  	t.Helper()
    26  	config := &TestContainerConfig{
    27  		Config: &container.Config{
    28  			Image: "busybox",
    29  			Cmd:   []string{"top"},
    30  		},
    31  		HostConfig:       &container.HostConfig{},
    32  		NetworkingConfig: &network.NetworkingConfig{},
    33  	}
    34  
    35  	for _, op := range ops {
    36  		op(config)
    37  	}
    38  
    39  	c, err := client.ContainerCreate(ctx, config.Config, config.HostConfig, config.NetworkingConfig, config.Name)
    40  	assert.NilError(t, err)
    41  
    42  	return c.ID
    43  }
    44  
    45  // Run creates and start a container with the specified options
    46  func Run(t *testing.T, ctx context.Context, client client.APIClient, ops ...func(*TestContainerConfig)) string { // nolint: golint
    47  	t.Helper()
    48  	id := Create(t, ctx, client, ops...)
    49  
    50  	err := client.ContainerStart(ctx, id, types.ContainerStartOptions{})
    51  	assert.NilError(t, err)
    52  
    53  	return id
    54  }