91 lines
2.0 KiB
Go
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)
|
|
}
|
|
}
|