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  }