1 package resource
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/require"
7 corev1 "k8s.io/api/core/v1"
8 kresource "k8s.io/apimachinery/pkg/api/resource"
9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10 )
11
12 const testResource Resource = "test.edge.ncr.com/resource"
13
14 func TestPodHasResourceRequest(t *testing.T) {
15 tcs := []struct {
16 Pod *corev1.Pod
17 HasResourceRequest bool
18 }{
19 {
20 Pod: &corev1.Pod{
21 ObjectMeta: metav1.ObjectMeta{
22 Name: "example",
23 Namespace: "example",
24 },
25 Spec: corev1.PodSpec{},
26 },
27 HasResourceRequest: false,
28 },
29 {
30 Pod: &corev1.Pod{
31 ObjectMeta: metav1.ObjectMeta{
32 Name: "example",
33 Namespace: "example",
34 },
35 Spec: corev1.PodSpec{
36 Containers: []corev1.Container{
37 {
38 Name: "ubuntu",
39 Image: "docker.io/ubuntu",
40 Resources: corev1.ResourceRequirements{
41 Requests: corev1.ResourceList{
42 testResource.ResourceName(): kresource.MustParse("1"),
43 },
44 },
45 },
46 },
47 },
48 },
49 HasResourceRequest: false,
50 },
51 {
52 Pod: &corev1.Pod{
53 ObjectMeta: metav1.ObjectMeta{
54 Name: "example",
55 Namespace: "example",
56 },
57 Spec: corev1.PodSpec{
58 Containers: []corev1.Container{
59 {
60 Name: "ubuntu",
61 Image: "docker.io/ubuntu",
62 Resources: corev1.ResourceRequirements{
63 Requests: corev1.ResourceList{
64 UIRequestResource.ResourceName(): kresource.MustParse("1"),
65 },
66 },
67 },
68 },
69 },
70 },
71 HasResourceRequest: true,
72 },
73 {
74 Pod: &corev1.Pod{
75 ObjectMeta: metav1.ObjectMeta{
76 Name: "example",
77 Namespace: "example",
78 },
79 Spec: corev1.PodSpec{
80 Containers: []corev1.Container{
81 {
82 Name: "ubuntu",
83 Image: "docker.io/ubuntu",
84 Resources: corev1.ResourceRequirements{
85 Requests: corev1.ResourceList{
86 AudioRequestResource.ResourceName(): kresource.MustParse("1"),
87 },
88 },
89 },
90 },
91 },
92 },
93 HasResourceRequest: true,
94 },
95 }
96 for idx, tc := range tcs {
97 require.Equal(t, tc.HasResourceRequest, ContainersHasResourceRequest(tc.Pod.Spec.Containers, UIRequestResource) || ContainersHasResourceRequest(tc.Pod.Spec.Containers, AudioRequestResource), "test case %d failed", idx+1)
98 }
99 }
100
View as plain text