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 }