Skip to content

Commit b29fec7

Browse files
author
Harry Li
committed
test(webhook): add TestPodHasInitContainer case
Signed-off-by: Harry Li <[email protected]>
1 parent 80ccef6 commit b29fec7

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

pkg/scheduler/webhook_test.go

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,3 +241,88 @@ func TestPodHasDifferentScheduler(t *testing.T) {
241241
t.Errorf("Expected allowed response for pod with different scheduler, but got: %v", resp)
242242
}
243243
}
244+
245+
func TestPodHasInitContainer(t *testing.T) {
246+
config.SchedulerName = "hami-scheduler"
247+
config.ForceOverwriteDefaultScheduler = true
248+
deviceConfig := &device.Config{
249+
NvidiaConfig: nvidia.NvidiaConfig{
250+
ResourceCountName: "hami.io/gpu",
251+
ResourceMemoryName: "hami.io/gpumem",
252+
ResourceMemoryPercentageName: "hami.io/gpumem-percentage",
253+
ResourceCoreName: "hami.io/gpucores",
254+
DefaultMemory: 0,
255+
DefaultCores: 0,
256+
DefaultGPUNum: 1,
257+
},
258+
}
259+
260+
if err := device.InitDevicesWithConfig(deviceConfig); err != nil {
261+
klog.Fatalf("Failed to initialize devices with config: %v", err)
262+
}
263+
264+
pod := &corev1.Pod{
265+
ObjectMeta: metav1.ObjectMeta{
266+
Name: "test-pod",
267+
Namespace: "default",
268+
},
269+
Spec: corev1.PodSpec{
270+
Containers: []corev1.Container{
271+
{
272+
Name: "container1",
273+
SecurityContext: &corev1.SecurityContext{
274+
Privileged: nil,
275+
},
276+
Resources: corev1.ResourceRequirements{
277+
Limits: corev1.ResourceList{
278+
"hami.io/gpu": resource.MustParse("1"),
279+
},
280+
},
281+
},
282+
},
283+
InitContainers: []corev1.Container{
284+
{
285+
Name: "container2",
286+
SecurityContext: &corev1.SecurityContext{
287+
Privileged: nil,
288+
},
289+
Resources: corev1.ResourceRequirements{
290+
Limits: corev1.ResourceList{
291+
"hami.io/gpu": resource.MustParse("1"),
292+
},
293+
},
294+
},
295+
},
296+
},
297+
}
298+
299+
scheme := runtime.NewScheme()
300+
corev1.AddToScheme(scheme)
301+
codec := serializer.NewCodecFactory(scheme).LegacyCodec(corev1.SchemeGroupVersion)
302+
podBytes, err := runtime.Encode(codec, pod)
303+
if err != nil {
304+
t.Fatalf("Error encoding pod: %v", err)
305+
}
306+
307+
req := admission.Request{
308+
AdmissionRequest: admissionv1.AdmissionRequest{
309+
UID: "test-uid",
310+
Namespace: "default",
311+
Name: "test-pod",
312+
Object: runtime.RawExtension{
313+
Raw: podBytes,
314+
},
315+
},
316+
}
317+
wh, err := NewWebHook()
318+
if err != nil {
319+
t.Fatalf("Error creating WebHook: %v", err)
320+
}
321+
322+
resp := wh.Handle(context.Background(), req)
323+
324+
if !resp.Allowed {
325+
t.Errorf("Expected allowed response, but got: %v", resp)
326+
}
327+
328+
}

0 commit comments

Comments
 (0)