Files
omnex/control-plane/api/internal/alerts/resources_test.go
T
Xor290 2f6e5a953d
ci-api / test (push) Successful in 28m2s
chore: update
2026-08-08 18:27:52 +02:00

91 lines
2.0 KiB
Go

package alerts
import (
"testing"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
)
func podWithLimits(cpuLimit, memLimit string) corev1.Pod {
return corev1.Pod{
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
Resources: corev1.ResourceRequirements{
Limits: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse(cpuLimit),
corev1.ResourceMemory: resource.MustParse(memLimit),
},
},
},
},
},
}
}
func TestPodResourcePercents(t *testing.T) {
pod := podWithLimits("500m", "256Mi")
cpuPct, memPct, ok := podResourcePercents(pod, 450, 256*1024*1024)
if !ok {
t.Fatal("ok = false, want true")
}
if cpuPct != 90 {
t.Errorf("cpuPct = %d, want 90", cpuPct)
}
if memPct != 100 {
t.Errorf("memPct = %d, want 100", memPct)
}
}
func TestPodResourcePercents_NoLimitsDefined(t *testing.T) {
pod := corev1.Pod{
Spec: corev1.PodSpec{
Containers: []corev1.Container{{}},
},
}
_, _, ok := podResourcePercents(pod, 100, 100)
if ok {
t.Error("ok = true, want false when container has no resource limits")
}
}
func TestPodResourcePercents_MultiContainerSumsLimits(t *testing.T) {
pod := corev1.Pod{
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
Resources: corev1.ResourceRequirements{
Limits: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("250m"),
corev1.ResourceMemory: resource.MustParse("128Mi"),
},
},
},
{
Resources: corev1.ResourceRequirements{
Limits: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("250m"),
corev1.ResourceMemory: resource.MustParse("128Mi"),
},
},
},
},
},
}
// Limite totale : 500m CPU, 256Mi mémoire.
cpuPct, memPct, ok := podResourcePercents(pod, 250, 128*1024*1024)
if !ok {
t.Fatal("ok = false, want true")
}
if cpuPct != 50 {
t.Errorf("cpuPct = %d, want 50", cpuPct)
}
if memPct != 50 {
t.Errorf("memPct = %d, want 50", memPct)
}
}