test: add unit tests to verify the .status.resize field

This commit is contained in:
Anish Shah 2024-10-22 19:36:54 -07:00
parent f1093962b6
commit 878c54fc9a

View File

@ -2452,7 +2452,7 @@ func (w *warningRecorder) AddWarning(_, text string) {
w.warnings = append(w.warnings, text) w.warnings = append(w.warnings, text)
} }
func TestDropNonPodResizeUpdates(t *testing.T) { func TestPodResizePrepareForUpdate(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
oldPod *api.Pod oldPod *api.Pod
@ -2468,13 +2468,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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{ newPod: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2483,13 +2494,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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{ expected: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2498,13 +2520,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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{ newPod: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2531,12 +2575,8 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("2"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("2Gi"), api.ResourceMemory: resource.MustParse("1Gi"),
},
Limits: api.ResourceList{
api.ResourceCPU: resource.MustParse("4"),
api.ResourceMemory: resource.MustParse("4Gi"),
}, },
}, },
ResizePolicy: []api.ContainerResizePolicy{ 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{ expected: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2554,12 +2605,8 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("2"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("2Gi"), api.ResourceMemory: resource.MustParse("1Gi"),
},
Limits: api.ResourceList{
api.ResourceCPU: resource.MustParse("4"),
api.ResourceMemory: resource.MustParse("4Gi"),
}, },
}, },
ResizePolicy: []api.ContainerResizePolicy{ 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", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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{ newPod: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2595,7 +2664,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), api.ResourceMemory: resource.MustParse("1Gi"),
}, },
}, },
@ -2604,13 +2673,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container2", Name: "container2",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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{ expected: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2619,13 +2699,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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{ newPod: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2652,7 +2754,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("2Gi"), api.ResourceMemory: resource.MustParse("2Gi"),
}, },
}, },
@ -2661,13 +2763,24 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container2", Name: "container2",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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{ expected: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2676,13 +2789,25 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("2Gi"), 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", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), api.ResourceMemory: resource.MustParse("1Gi"),
}, },
}, },
@ -2703,13 +2828,31 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container2", Name: "container2",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("1"), api.ResourceCPU: resource.MustParse("100m"),
api.ResourceMemory: resource.MustParse("1Gi"), 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{ newPod: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2718,7 +2861,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container2", Name: "container2",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("2"), api.ResourceCPU: resource.MustParse("200m"),
api.ResourceMemory: resource.MustParse("2Gi"), api.ResourceMemory: resource.MustParse("2Gi"),
}, },
}, },
@ -2727,13 +2870,31 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("2"), api.ResourceCPU: resource.MustParse("200m"),
api.ResourceMemory: resource.MustParse("4Gi"), 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{ expected: &api.Pod{
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2742,7 +2903,7 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container1", Name: "container1",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("2"), api.ResourceCPU: resource.MustParse("200m"),
api.ResourceMemory: resource.MustParse("4Gi"), api.ResourceMemory: resource.MustParse("4Gi"),
}, },
}, },
@ -2751,19 +2912,39 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
Name: "container2", Name: "container2",
Resources: api.ResourceRequirements{ Resources: api.ResourceRequirements{
Requests: api.ResourceList{ Requests: api.ResourceList{
api.ResourceCPU: resource.MustParse("2"), api.ResourceCPU: resource.MustParse("200m"),
api.ResourceMemory: resource.MustParse("2Gi"), 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 { for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.InPlacePodVerticalScaling, true)
tc.newPod.Name = "test-pod" tc.newPod.Name = "test-pod"
tc.newPod.Namespace = "test-ns" tc.newPod.Namespace = "test-ns"
tc.newPod.ResourceVersion = "123" tc.newPod.ResourceVersion = "123"
@ -2772,9 +2953,10 @@ func TestDropNonPodResizeUpdates(t *testing.T) {
tc.expected.Namespace = "test-ns" tc.expected.Namespace = "test-ns"
tc.expected.ResourceVersion = "123" tc.expected.ResourceVersion = "123"
tc.expected.UID = "abc" tc.expected.UID = "abc"
got := dropNonPodResizeUpdates(tc.newPod, tc.oldPod) ctx := context.Background()
if !cmp.Equal(tc.expected, got) { ResizeStrategy.PrepareForUpdate(ctx, tc.newPod, tc.oldPod)
t.Errorf("dropNonPodResizeUpdates() diff = %v", cmp.Diff(tc.expected, got)) if !cmp.Equal(tc.expected, tc.newPod) {
t.Errorf("ResizeStrategy.PrepareForUpdate() diff = %v", cmp.Diff(tc.expected, tc.newPod))
} }
}) })
} }