From 47207f9aad2d8b763f441eca3a8dff27afa89010 Mon Sep 17 00:00:00 2001 From: Itamar Holder Date: Mon, 8 Apr 2024 09:37:53 +0300 Subject: [PATCH] unit test: Add extended resources to ContainerStatuses[i].Resources Signed-off-by: Itamar Holder --- pkg/kubelet/kubelet_pods_test.go | 83 ++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/pkg/kubelet/kubelet_pods_test.go b/pkg/kubelet/kubelet_pods_test.go index f3019e247bf..e44822d0ac3 100644 --- a/pkg/kubelet/kubelet_pods_test.go +++ b/pkg/kubelet/kubelet_pods_test.go @@ -4588,6 +4588,20 @@ func TestConvertToAPIContainerStatusesForResources(t *testing.T) { CPU2AndMem2GAndStorage2G := CPU2AndMem2G.DeepCopy() CPU2AndMem2GAndStorage2G[v1.ResourceEphemeralStorage] = resource.MustParse("2Gi") + addExtendedResource := func(list v1.ResourceList) v1.ResourceList { + const stubCustomResource = v1.ResourceName("dummy.io/dummy") + + withExtendedResource := list.DeepCopy() + for _, resourceName := range []v1.ResourceName{v1.ResourceMemory, v1.ResourceCPU} { + if _, exists := withExtendedResource[resourceName]; !exists { + withExtendedResource[resourceName] = resource.MustParse("0") + } + } + + withExtendedResource[stubCustomResource] = resource.MustParse("1") + return withExtendedResource + } + testKubelet := newTestKubelet(t, false) defer testKubelet.Cleanup() kubelet := testKubelet.kubelet @@ -4734,6 +4748,75 @@ func TestConvertToAPIContainerStatusesForResources(t *testing.T) { }, }, }, + "BestEffort QoSPod with extended resources": { + Resources: []v1.ResourceRequirements{{Requests: addExtendedResource(v1.ResourceList{})}}, + OldStatus: []v1.ContainerStatus{ + { + Name: testContainerName, + Image: "img", + ImageID: "img1234", + State: v1.ContainerState{Running: &v1.ContainerStateRunning{}}, + Resources: &v1.ResourceRequirements{}, + }, + }, + Expected: []v1.ContainerStatus{ + { + Name: testContainerName, + ContainerID: testContainerID.String(), + Image: "img", + ImageID: "img1234", + State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: metav1.NewTime(nowTime)}}, + AllocatedResources: addExtendedResource(v1.ResourceList{}), + Resources: &v1.ResourceRequirements{Requests: addExtendedResource(v1.ResourceList{})}, + }, + }, + }, + "BurstableQoSPod with extended resources": { + Resources: []v1.ResourceRequirements{{Requests: addExtendedResource(CPU1AndMem1G)}}, + OldStatus: []v1.ContainerStatus{ + { + Name: testContainerName, + Image: "img", + ImageID: "img1234", + State: v1.ContainerState{Running: &v1.ContainerStateRunning{}}, + Resources: &v1.ResourceRequirements{}, + }, + }, + Expected: []v1.ContainerStatus{ + { + Name: testContainerName, + ContainerID: testContainerID.String(), + Image: "img", + ImageID: "img1234", + State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: metav1.NewTime(nowTime)}}, + AllocatedResources: addExtendedResource(CPU1AndMem1G), + Resources: &v1.ResourceRequirements{Requests: addExtendedResource(CPU1AndMem1G)}, + }, + }, + }, + "GuaranteedQoSPod with extended resources": { + Resources: []v1.ResourceRequirements{{Requests: addExtendedResource(CPU1AndMem1G), Limits: addExtendedResource(CPU1AndMem1G)}}, + OldStatus: []v1.ContainerStatus{ + { + Name: testContainerName, + Image: "img", + ImageID: "img1234", + State: v1.ContainerState{Running: &v1.ContainerStateRunning{}}, + Resources: &v1.ResourceRequirements{}, + }, + }, + Expected: []v1.ContainerStatus{ + { + Name: testContainerName, + ContainerID: testContainerID.String(), + Image: "img", + ImageID: "img1234", + State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: metav1.NewTime(nowTime)}}, + AllocatedResources: addExtendedResource(CPU1AndMem1G), + Resources: &v1.ResourceRequirements{Requests: addExtendedResource(CPU1AndMem1G), Limits: addExtendedResource(CPU1AndMem1G)}, + }, + }, + }, } { tPod := testPod.DeepCopy() tPod.Name = fmt.Sprintf("%s-%d", testPod.Name, idx)