volcano.sh/volcano@v1.9.0/pkg/controllers/util/util_test.go (about) 1 package util 2 3 import ( 4 "testing" 5 6 corev1 "k8s.io/api/core/v1" 7 "k8s.io/apimachinery/pkg/api/resource" 8 ) 9 10 func TestGetPodQuotaUsage(t *testing.T) { 11 resList := corev1.ResourceList{ 12 corev1.ResourceCPU: resource.MustParse("1000m"), 13 corev1.ResourceMemory: resource.MustParse("1000Mi"), 14 "nvidia.com/gpu": resource.MustParse("1"), 15 "hugepages-test": resource.MustParse("2000"), 16 } 17 18 container := corev1.Container{ 19 Resources: corev1.ResourceRequirements{ 20 Requests: resList, 21 Limits: resList, 22 }, 23 } 24 25 pod := &corev1.Pod{ 26 Spec: corev1.PodSpec{ 27 Containers: []corev1.Container{container, container}, 28 }, 29 } 30 31 expected := map[string]int64{ 32 "count/pods": 1, 33 "cpu": 2, 34 "memory": 1024 * 1024 * 2000, 35 "nvidia.com/gpu": 2, 36 "hugepages-test": 4000, 37 "limits.cpu": 2, 38 "limits.memory": 1024 * 1024 * 2000, 39 "requests.memory": 1024 * 1024 * 2000, 40 "requests.nvidia.com/gpu": 2, 41 "requests.hugepages-test": 4000, 42 "pods": 1, 43 "requests.cpu": 2, 44 } 45 46 res := *GetPodQuotaUsage(pod) 47 for name, quantity := range expected { 48 value, ok := res[corev1.ResourceName(name)] 49 if !ok { 50 t.Errorf("Resource %s should exists in pod resources", name) 51 } else if quantity != value.Value() { 52 t.Errorf("Resource %s 's value %d should equal to %d", name, quantity, value.Value()) 53 } 54 } 55 }