1
16
17 package util
18
19 import (
20 "testing"
21
22 "github.com/stretchr/testify/assert"
23
24 v1 "k8s.io/api/core/v1"
25 "k8s.io/apimachinery/pkg/api/resource"
26 )
27
28 func TestGetNonZeroRequest(t *testing.T) {
29 tests := []struct {
30 name string
31 requests v1.ResourceList
32 expectedCPU int64
33 expectedMemory int64
34 }{
35 {
36 "cpu_and_memory_not_found",
37 v1.ResourceList{},
38 DefaultMilliCPURequest,
39 DefaultMemoryRequest,
40 },
41 {
42 "only_cpu_exist",
43 v1.ResourceList{
44 v1.ResourceCPU: resource.MustParse("200m"),
45 },
46 200,
47 DefaultMemoryRequest,
48 },
49 {
50 "only_memory_exist",
51 v1.ResourceList{
52 v1.ResourceMemory: resource.MustParse("400Mi"),
53 },
54 DefaultMilliCPURequest,
55 400 * 1024 * 1024,
56 },
57 {
58 "cpu_memory_exist",
59 v1.ResourceList{
60 v1.ResourceCPU: resource.MustParse("200m"),
61 v1.ResourceMemory: resource.MustParse("400Mi"),
62 },
63 200,
64 400 * 1024 * 1024,
65 },
66 }
67
68 for _, test := range tests {
69 t.Run(test.name, func(t *testing.T) {
70 realCPU, realMemory := GetNonzeroRequests(&test.requests)
71 assert.EqualValuesf(t, test.expectedCPU, realCPU, "Failed to test: %s", test.name)
72 assert.EqualValuesf(t, test.expectedMemory, realMemory, "Failed to test: %s", test.name)
73 })
74 }
75 }
76
77 func TestGetRequestForResource(t *testing.T) {
78 tests := []struct {
79 name string
80 requests v1.ResourceList
81 resource v1.ResourceName
82 expectedQuantity int64
83 nonZero bool
84 }{
85 {
86 "extended_resource_not_found",
87 v1.ResourceList{},
88 v1.ResourceName("intel.com/foo"),
89 0,
90 true,
91 },
92 {
93 "extended_resource_found",
94 v1.ResourceList{
95 v1.ResourceName("intel.com/foo"): resource.MustParse("4"),
96 },
97 v1.ResourceName("intel.com/foo"),
98 4,
99 true,
100 },
101 {
102 "cpu_not_found",
103 v1.ResourceList{},
104 v1.ResourceCPU,
105 DefaultMilliCPURequest,
106 true,
107 },
108 {
109 "memory_not_found",
110 v1.ResourceList{},
111 v1.ResourceMemory,
112 DefaultMemoryRequest,
113 true,
114 },
115 {
116 "cpu_exist",
117 v1.ResourceList{
118 v1.ResourceCPU: resource.MustParse("200m"),
119 },
120 v1.ResourceCPU,
121 200,
122 true,
123 },
124 {
125 "memory_exist",
126 v1.ResourceList{
127 v1.ResourceMemory: resource.MustParse("400Mi"),
128 },
129 v1.ResourceMemory,
130 400 * 1024 * 1024,
131 true,
132 },
133 {
134 "ephemeralStorage_exist",
135 v1.ResourceList{
136 v1.ResourceEphemeralStorage: resource.MustParse("400Mi"),
137 },
138 v1.ResourceEphemeralStorage,
139 400 * 1024 * 1024,
140 true,
141 },
142 {
143 "ephemeralStorage_not_found",
144 v1.ResourceList{},
145 v1.ResourceEphemeralStorage,
146 0,
147 true,
148 },
149 {
150 "cpu_not_found, useRequested is true",
151 v1.ResourceList{},
152 v1.ResourceCPU,
153 0,
154 false,
155 },
156 {
157 "memory_not_found, useRequested is true",
158 v1.ResourceList{},
159 v1.ResourceMemory,
160 0,
161 false,
162 },
163 }
164
165 for _, test := range tests {
166 t.Run(test.name, func(t *testing.T) {
167 realQuantity := GetRequestForResource(test.resource, &test.requests, test.nonZero)
168 var realQuantityI64 int64
169 if test.resource == v1.ResourceCPU {
170 realQuantityI64 = realQuantity.MilliValue()
171 } else {
172 realQuantityI64 = realQuantity.Value()
173 }
174 assert.EqualValuesf(t, test.expectedQuantity, realQuantityI64, "Failed to test: %s", test.name)
175 })
176 }
177 }
178
View as plain text