diff --git a/pkg/util/resource.go b/pkg/util/resource.go index d36c2033f..e25581a45 100644 --- a/pkg/util/resource.go +++ b/pkg/util/resource.go @@ -29,22 +29,7 @@ func EmptyResource() *Resource { // NewResource creates a new resource object from resource list. func NewResource(rl corev1.ResourceList) *Resource { r := &Resource{} - for rName, rQuant := range rl { - switch rName { - case corev1.ResourceCPU: - r.MilliCPU += rQuant.MilliValue() - case corev1.ResourceMemory: - r.Memory += rQuant.Value() - case corev1.ResourcePods: - r.AllowedPodNumber += rQuant.Value() - case corev1.ResourceEphemeralStorage: - r.EphemeralStorage += rQuant.Value() - default: - if lifted.IsScalarResourceName(rName) { - r.AddScalar(rName, rQuant.Value()) - } - } - } + r.Add(rl) return r } diff --git a/pkg/util/resource_test.go b/pkg/util/resource_test.go new file mode 100644 index 000000000..dfb09178e --- /dev/null +++ b/pkg/util/resource_test.go @@ -0,0 +1,41 @@ +package util + +import ( + "reflect" + "testing" + + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" +) + +func TestNewResource(t *testing.T) { + tests := []struct { + name string + rl corev1.ResourceList + want *Resource + }{ + { + name: "Resource", + rl: corev1.ResourceList{ + corev1.ResourceCPU: *resource.NewMilliQuantity(5, resource.DecimalSI), + corev1.ResourceMemory: *resource.NewQuantity(5, resource.BinarySI), + corev1.ResourcePods: *resource.NewQuantity(5, resource.DecimalSI), + corev1.ResourceEphemeralStorage: *resource.NewQuantity(5, resource.BinarySI), + }, + want: &Resource{ + MilliCPU: 5, + Memory: 5, + EphemeralStorage: 5, + AllowedPodNumber: 5, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := NewResource(tt.rl); !reflect.DeepEqual(got, tt.want) { + t.Errorf("NewResource() = %v, want %v", got, tt.want) + } + }) + } +}