From 500aaea4ddbd5dd0df14f1dd466fffde2c1ffba1 Mon Sep 17 00:00:00 2001 From: Jan Chaloupka Date: Thu, 11 Feb 2021 15:57:24 +0100 Subject: [PATCH] LowNodeUtilization: unit test resourceUsagePercentages to validate percentages are computed correctly --- .../strategies/lownodeutilization_test.go | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/pkg/descheduler/strategies/lownodeutilization_test.go b/pkg/descheduler/strategies/lownodeutilization_test.go index 851afcc0b..01ea264a1 100644 --- a/pkg/descheduler/strategies/lownodeutilization_test.go +++ b/pkg/descheduler/strategies/lownodeutilization_test.go @@ -19,6 +19,7 @@ package strategies import ( "context" "fmt" + "math" "strings" "testing" @@ -776,3 +777,41 @@ func TestWithTaints(t *testing.T) { }) } } + +func TestResourceUsagePercentages(t *testing.T) { + resourceUsagePercentage := resourceUsagePercentages(NodeUsage{ + node: &v1.Node{ + Status: v1.NodeStatus{ + Capacity: v1.ResourceList{ + v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI), + v1.ResourceMemory: *resource.NewQuantity(3977868*1024, resource.BinarySI), + v1.ResourcePods: *resource.NewQuantity(29, resource.BinarySI), + }, + Allocatable: v1.ResourceList{ + v1.ResourceCPU: *resource.NewMilliQuantity(1930, resource.DecimalSI), + v1.ResourceMemory: *resource.NewQuantity(3287692*1024, resource.BinarySI), + v1.ResourcePods: *resource.NewQuantity(29, resource.BinarySI), + }, + }, + }, + usage: map[v1.ResourceName]*resource.Quantity{ + v1.ResourceCPU: resource.NewMilliQuantity(1220, resource.DecimalSI), + v1.ResourceMemory: resource.NewQuantity(3038982964, resource.BinarySI), + v1.ResourcePods: resource.NewQuantity(11, resource.BinarySI), + }, + }) + + expectedUsageInIntPercentage := map[v1.ResourceName]float64{ + v1.ResourceCPU: 63, + v1.ResourceMemory: 90, + v1.ResourcePods: 37, + } + + for resourceName, percentage := range expectedUsageInIntPercentage { + if math.Floor(resourceUsagePercentage[resourceName]) != percentage { + t.Errorf("Incorrect percentange computation, expected %v, got math.Floor(%v) instead", percentage, resourceUsagePercentage[resourceName]) + } + } + + t.Logf("resourceUsagePercentage: %#v\n", resourceUsagePercentage) +}