diff --git a/pkg/registry/core/pod/strategy_test.go b/pkg/registry/core/pod/strategy_test.go index 33a44610039..6b1cd9a9bf5 100644 --- a/pkg/registry/core/pod/strategy_test.go +++ b/pkg/registry/core/pod/strategy_test.go @@ -2452,7 +2452,7 @@ func (w *warningRecorder) AddWarning(_, text string) { w.warnings = append(w.warnings, text) } -func TestDropNonPodResizeUpdates(t *testing.T) { +func TestPodResizePrepareForUpdate(t *testing.T) { tests := []struct { name string oldPod *api.Pod @@ -2468,13 +2468,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, newPod: &api.Pod{ Spec: api.PodSpec{ @@ -2483,13 +2494,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, expected: &api.Pod{ Spec: api.PodSpec{ @@ -2498,13 +2520,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, }, { @@ -2516,13 +2549,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, newPod: &api.Pod{ Spec: api.PodSpec{ @@ -2531,12 +2575,8 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("2"), - api.ResourceMemory: resource.MustParse("2Gi"), - }, - Limits: api.ResourceList{ - api.ResourceCPU: resource.MustParse("4"), - api.ResourceMemory: resource.MustParse("4Gi"), + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), }, }, ResizePolicy: []api.ContainerResizePolicy{ @@ -2546,6 +2586,17 @@ func TestDropNonPodResizeUpdates(t *testing.T) { }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, expected: &api.Pod{ Spec: api.PodSpec{ @@ -2554,12 +2605,8 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("2"), - api.ResourceMemory: resource.MustParse("2Gi"), - }, - Limits: api.ResourceList{ - api.ResourceCPU: resource.MustParse("4"), - api.ResourceMemory: resource.MustParse("4Gi"), + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), }, }, ResizePolicy: []api.ContainerResizePolicy{ @@ -2569,6 +2616,17 @@ func TestDropNonPodResizeUpdates(t *testing.T) { }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, }, { @@ -2580,13 +2638,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, newPod: &api.Pod{ Spec: api.PodSpec{ @@ -2595,7 +2664,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, @@ -2604,13 +2673,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container2", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, expected: &api.Pod{ Spec: api.PodSpec{ @@ -2619,13 +2699,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, }, { @@ -2637,13 +2728,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, newPod: &api.Pod{ Spec: api.PodSpec{ @@ -2652,7 +2754,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("2Gi"), }, }, @@ -2661,13 +2763,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container2", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, expected: &api.Pod{ Spec: api.PodSpec{ @@ -2676,13 +2789,25 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("2Gi"), }, }, }, }, }, + Status: api.PodStatus{ + Resize: api.PodResizeStatusProposed, + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, }, { @@ -2694,7 +2819,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, @@ -2703,13 +2828,31 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container2", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("1"), + api.ResourceCPU: resource.MustParse("100m"), api.ResourceMemory: resource.MustParse("1Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + { + Name: "container2", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, newPod: &api.Pod{ Spec: api.PodSpec{ @@ -2718,7 +2861,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container2", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("2"), + api.ResourceCPU: resource.MustParse("200m"), api.ResourceMemory: resource.MustParse("2Gi"), }, }, @@ -2727,13 +2870,31 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("2"), + api.ResourceCPU: resource.MustParse("200m"), api.ResourceMemory: resource.MustParse("4Gi"), }, }, }, }, }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + { + Name: "container2", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, expected: &api.Pod{ Spec: api.PodSpec{ @@ -2742,7 +2903,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container1", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("2"), + api.ResourceCPU: resource.MustParse("200m"), api.ResourceMemory: resource.MustParse("4Gi"), }, }, @@ -2751,19 +2912,39 @@ func TestDropNonPodResizeUpdates(t *testing.T) { Name: "container2", Resources: api.ResourceRequirements{ Requests: api.ResourceList{ - api.ResourceCPU: resource.MustParse("2"), + api.ResourceCPU: resource.MustParse("200m"), api.ResourceMemory: resource.MustParse("2Gi"), }, }, }, }, }, + Status: api.PodStatus{ + Resize: api.PodResizeStatusProposed, + ContainerStatuses: []api.ContainerStatus{ + { + Name: "container1", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + { + Name: "container2", + AllocatedResources: api.ResourceList{ + api.ResourceCPU: resource.MustParse("100m"), + api.ResourceMemory: resource.MustParse("1Gi"), + }, + }, + }, + }, }, }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { + featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.InPlacePodVerticalScaling, true) tc.newPod.Name = "test-pod" tc.newPod.Namespace = "test-ns" tc.newPod.ResourceVersion = "123" @@ -2772,9 +2953,10 @@ func TestDropNonPodResizeUpdates(t *testing.T) { tc.expected.Namespace = "test-ns" tc.expected.ResourceVersion = "123" tc.expected.UID = "abc" - got := dropNonPodResizeUpdates(tc.newPod, tc.oldPod) - if !cmp.Equal(tc.expected, got) { - t.Errorf("dropNonPodResizeUpdates() diff = %v", cmp.Diff(tc.expected, got)) + ctx := context.Background() + ResizeStrategy.PrepareForUpdate(ctx, tc.newPod, tc.oldPod) + if !cmp.Equal(tc.expected, tc.newPod) { + t.Errorf("ResizeStrategy.PrepareForUpdate() diff = %v", cmp.Diff(tc.expected, tc.newPod)) } }) }