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 }