@@ -142,3 +142,92 @@ func Test_gcNodeDevices(t *testing.T) {
142
142
nodeNames := sets .StringKeySet (cache .nodeDeviceInfos )
143
143
assert .Equal (t , expectedNodeNames , nodeNames )
144
144
}
145
+
146
+ func Test_nodeDevice_calcFreeWithPreemptible (t * testing.T ) {
147
+ tests := []struct {
148
+ name string
149
+ deviceFree map [schedulingv1alpha1.DeviceType ]deviceResources
150
+ requiredDeviceResources deviceResources
151
+ wantFree deviceResources
152
+ wantOriginalFree map [schedulingv1alpha1.DeviceType ]deviceResources
153
+ }{
154
+ {
155
+ name : "assure free not changed" ,
156
+ deviceFree : map [schedulingv1alpha1.DeviceType ]deviceResources {
157
+ schedulingv1alpha1 .GPU : {
158
+ 0 : corev1.ResourceList {
159
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
160
+ },
161
+ 1 : corev1.ResourceList {
162
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
163
+ },
164
+ 2 : corev1.ResourceList {
165
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
166
+ },
167
+ 3 : corev1.ResourceList {
168
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
169
+ },
170
+ 4 : corev1.ResourceList {
171
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
172
+ },
173
+ 5 : corev1.ResourceList {
174
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
175
+ },
176
+ 6 : corev1.ResourceList {
177
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
178
+ },
179
+ 7 : corev1.ResourceList {
180
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
181
+ },
182
+ },
183
+ },
184
+ requiredDeviceResources : deviceResources {
185
+ 0 : corev1.ResourceList {
186
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
187
+ },
188
+ },
189
+ wantFree : deviceResources {
190
+ 0 : corev1.ResourceList {
191
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
192
+ },
193
+ },
194
+ wantOriginalFree : map [schedulingv1alpha1.DeviceType ]deviceResources {
195
+ schedulingv1alpha1 .GPU : {
196
+ 0 : corev1.ResourceList {
197
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
198
+ },
199
+ 1 : corev1.ResourceList {
200
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
201
+ },
202
+ 2 : corev1.ResourceList {
203
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
204
+ },
205
+ 3 : corev1.ResourceList {
206
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
207
+ },
208
+ 4 : corev1.ResourceList {
209
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
210
+ },
211
+ 5 : corev1.ResourceList {
212
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
213
+ },
214
+ 6 : corev1.ResourceList {
215
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
216
+ },
217
+ 7 : corev1.ResourceList {
218
+ apiext .ResourceGPUMemory : resource .MustParse ("8Gi" ),
219
+ },
220
+ },
221
+ },
222
+ },
223
+ }
224
+ for _ , tt := range tests {
225
+ t .Run (tt .name , func (t * testing.T ) {
226
+ n := & nodeDevice {
227
+ deviceFree : tt .deviceFree ,
228
+ }
229
+ assert .Equal (t , tt .wantFree , n .calcFreeWithPreemptible (schedulingv1alpha1 .GPU , nil , tt .requiredDeviceResources ))
230
+ assert .Equal (t , tt .wantOriginalFree , n .deviceFree )
231
+ })
232
+ }
233
+ }
0 commit comments