From bcbd017a93eef8fa208bb568b5e0c0148629ce46 Mon Sep 17 00:00:00 2001 From: vadasambar Date: Thu, 13 Apr 2023 11:41:53 +0530 Subject: [PATCH] test: update eligibility test cases for `IgnoreDaemonSetsUtilization` Signed-off-by: vadasambar --- .../scaledown/eligibility/eligibility_test.go | 24 +++++++++++++++++++ cluster-autoscaler/utils/test/test_utils.go | 9 +++++++ 2 files changed, 33 insertions(+) diff --git a/cluster-autoscaler/core/scaledown/eligibility/eligibility_test.go b/cluster-autoscaler/core/scaledown/eligibility/eligibility_test.go index 66c4748d3bf3..a458021abc59 100644 --- a/cluster-autoscaler/core/scaledown/eligibility/eligibility_test.go +++ b/cluster-autoscaler/core/scaledown/eligibility/eligibility_test.go @@ -66,6 +66,9 @@ func TestFilterOutUnremovable(t *testing.T) { smallPod := BuildTestPod("smallPod", 100, 0) smallPod.Spec.NodeName = "regular" + dsPod := BuildDSTestPod("dsPod", 500, 0) + dsPod.Spec.NodeName = "regular" + testCases := []testCase{ { desc: "regular node stays", @@ -122,6 +125,27 @@ func TestFilterOutUnremovable(t *testing.T) { allTestCases = append(allTestCases, t) } + ignoreDsCases := []testCase{ + { + desc: "high utilization daemonsets node is filtered out", + nodes: []*apiv1.Node{regularNode}, + pods: []*apiv1.Pod{smallPod, dsPod}, + want: []string{}, + scaleDownUnready: true, + ignoreDaemonSetsUtilization: false, + }, + { + desc: "high utilization daemonsets node stays", + nodes: []*apiv1.Node{regularNode}, + pods: []*apiv1.Pod{smallPod, dsPod}, + want: []string{"regular"}, + scaleDownUnready: true, + ignoreDaemonSetsUtilization: true, + }, + } + + allTestCases = append(allTestCases, ignoreDsCases...) + for _, tc := range allTestCases { tc := tc t.Run(tc.desc, func(t *testing.T) { diff --git a/cluster-autoscaler/utils/test/test_utils.go b/cluster-autoscaler/utils/test/test_utils.go index b42ec11c6d31..925fa056e6ca 100644 --- a/cluster-autoscaler/utils/test/test_utils.go +++ b/cluster-autoscaler/utils/test/test_utils.go @@ -67,6 +67,15 @@ func BuildTestPod(name string, cpu int64, mem int64) *apiv1.Pod { return pod } +// BuildDSTestPod creates a DaemonSet pod with cpu and memory. +func BuildDSTestPod(name string, cpu int64, mem int64) *apiv1.Pod { + + pod := BuildTestPod(name, cpu, mem) + pod.OwnerReferences = GenerateOwnerReferences("ds", "DaemonSet", "apps/v1", "some-uid") + + return pod +} + // BuildTestPodWithEphemeralStorage creates a pod with cpu, memory and ephemeral storage resources. func BuildTestPodWithEphemeralStorage(name string, cpu, mem, ephemeralStorage int64) *apiv1.Pod { startTime := metav1.Unix(0, 0)