1// +build functional 2 3package cri_containerd 4 5import ( 6 "context" 7 "testing" 8 9 runtime "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" 10) 11 12func createContainer(t *testing.T, client runtime.RuntimeServiceClient, ctx context.Context, request *runtime.CreateContainerRequest) string { 13 response, err := client.CreateContainer(ctx, request) 14 if err != nil { 15 t.Fatalf("failed CreateContainer in sandbox: %s, with: %v", request.PodSandboxId, err) 16 } 17 return response.ContainerId 18} 19 20func startContainer(t *testing.T, client runtime.RuntimeServiceClient, ctx context.Context, containerID string) { 21 _, err := client.StartContainer(ctx, &runtime.StartContainerRequest{ 22 ContainerId: containerID, 23 }) 24 if err != nil { 25 t.Fatalf("failed StartContainer request for container: %s, with: %v", containerID, err) 26 } 27} 28 29func stopContainer(t *testing.T, client runtime.RuntimeServiceClient, ctx context.Context, containerID string) { 30 stopContainerWithTimeout(t, client, ctx, containerID, 0) 31} 32 33func stopContainerWithTimeout(t *testing.T, client runtime.RuntimeServiceClient, ctx context.Context, containerID string, timeout int64) { 34 _, err := client.StopContainer(ctx, &runtime.StopContainerRequest{ 35 ContainerId: containerID, 36 Timeout: timeout, 37 }) 38 if err != nil { 39 t.Fatalf("failed StopContainer request for container: %s, with: %v", containerID, err) 40 } 41} 42 43func removeContainer(t *testing.T, client runtime.RuntimeServiceClient, ctx context.Context, containerID string) { 44 _, err := client.RemoveContainer(ctx, &runtime.RemoveContainerRequest{ 45 ContainerId: containerID, 46 }) 47 if err != nil { 48 t.Fatalf("failed StopContainer request for container: %s, with: %v", containerID, err) 49 } 50} 51 52func getCreateContainerRequest(podID string, name string, image string, command []string, podConfig *runtime.PodSandboxConfig) *runtime.CreateContainerRequest { 53 return &runtime.CreateContainerRequest{ 54 Config: &runtime.ContainerConfig{ 55 Metadata: &runtime.ContainerMetadata{ 56 Name: name, 57 }, 58 Image: &runtime.ImageSpec{ 59 Image: image, 60 }, 61 Command: command, 62 }, 63 PodSandboxId: podID, 64 SandboxConfig: podConfig, 65 } 66} 67 68func getContainerStatus(t *testing.T, client runtime.RuntimeServiceClient, ctx context.Context, containerID string) runtime.ContainerState { 69 response, err := client.ContainerStatus(ctx, &runtime.ContainerStatusRequest{ 70 ContainerId: containerID, 71 }) 72 if err != nil { 73 t.Fatalf("failed ContainerStatus request for container: %s, with: %v", containerID, err) 74 } 75 return response.Status.State 76} 77