github.com/jwhonce/docker@v0.6.7-0.20190327063223-da823cf3a5a3/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  	"gotest.tools/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  // nolint: golint
    25  func Create(t *testing.T, ctx context.Context, client client.APIClient, ops ...func(*TestContainerConfig)) string { // nolint: golint
    26  	t.Helper()
    27  	config := &TestContainerConfig{
    28  		Config: &container.Config{
    29  			Image: "busybox",
    30  			Cmd:   []string{"top"},
    31  		},
    32  		HostConfig:       &container.HostConfig{},
    33  		NetworkingConfig: &network.NetworkingConfig{},
    34  	}
    35  
    36  	for _, op := range ops {
    37  		op(config)
    38  	}
    39  
    40  	c, err := client.ContainerCreate(ctx, config.Config, config.HostConfig, config.NetworkingConfig, config.Name)
    41  	assert.NilError(t, err)
    42  
    43  	return c.ID
    44  }
    45  
    46  // Run creates and start a container with the specified options
    47  // nolint: golint
    48  func Run(t *testing.T, ctx context.Context, client client.APIClient, ops ...func(*TestContainerConfig)) string { // nolint: golint
    49  	t.Helper()
    50  	id := Create(t, ctx, client, ops...)
    51  
    52  	err := client.ContainerStart(ctx, id, types.ContainerStartOptions{})
    53  	assert.NilError(t, err)
    54  
    55  	return id
    56  }