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