From 1eb966cb4556422be1d7ac2707739f0e2bdacbe1 Mon Sep 17 00:00:00 2001 From: vivzbansal Date: Fri, 8 Nov 2024 04:40:08 +0000 Subject: [PATCH] Added unit test for sidecar containers in TestValidatePodResize --- pkg/apis/core/validation/validation_test.go | 71 +++++++++++++++++++-- 1 file changed, 67 insertions(+), 4 deletions(-) diff --git a/pkg/apis/core/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go index 0e84aa66020..30c68a56635 100644 --- a/pkg/apis/core/validation/validation_test.go +++ b/pkg/apis/core/validation/validation_test.go @@ -25601,6 +25601,24 @@ func TestValidatePodResize(t *testing.T) { ), )...) } + mkPodWithInitCtrs := func(req, lim core.ResourceList, tweaks ...podtest.TweakContainer) *core.Pod { + tweaks = append(tweaks, podtest.SetContainerRestartPolicy(containerRestartPolicyAlways)) + return podtest.MakePod("pod", + podtest.SetInitContainers( + podtest.MakeContainer( + "restartable-init", + append(tweaks, + podtest.SetContainerResources( + core.ResourceRequirements{ + Requests: req, + Limits: lim, + }, + ), + )..., + ), + ), + ) + } mkPodWithInitContainers := func(req, lim core.ResourceList, restartPolicy core.ContainerRestartPolicy, tweaks ...podtest.Tweak) *core.Pod { return podtest.MakePod("pod", append(tweaks, @@ -25620,10 +25638,11 @@ func TestValidatePodResize(t *testing.T) { } tests := []struct { - test string - old *core.Pod - new *core.Pod - err string + test string + old *core.Pod + new *core.Pod + isSideCarCtr bool + err string }{ { test: "pod-level resources with container cpu limit change", @@ -25981,9 +26000,47 @@ func TestValidatePodResize(t *testing.T) { new: mkPod(core.ResourceList{}, getResources("200m", "0", "1Gi", "")), err: "", }, + { + test: "cpu limit change for sidecar containers", + old: mkPodWithInitCtrs(core.ResourceList{}, getResources("100m", "0", "1Gi", "")), + new: mkPodWithInitCtrs(core.ResourceList{}, getResources("200m", "0", "1Gi", "")), + isSideCarCtr: true, + err: "", + }, { + test: "memory limit change for sidecar containers", + old: mkPodWithInitCtrs(core.ResourceList{}, getResources("100m", "200Mi", "", "")), + new: mkPodWithInitCtrs(core.ResourceList{}, getResources("100m", "100Mi", "", "")), + isSideCarCtr: true, + err: "", + }, { + test: "storage limit change for sidecar containers", + old: mkPodWithInitCtrs(core.ResourceList{}, getResources("100m", "100Mi", "2Gi", "")), + new: mkPodWithInitCtrs(core.ResourceList{}, getResources("100m", "100Mi", "1Gi", "")), + isSideCarCtr: true, + err: "spec: Forbidden: cpu and memory resources for only sidecar containers are mutable", + }, { + test: "cpu request change for sidecar containers", + old: mkPodWithInitCtrs(getResources("200m", "0", "", ""), core.ResourceList{}), + new: mkPodWithInitCtrs(getResources("100m", "0", "", ""), core.ResourceList{}), + isSideCarCtr: true, + err: "", + }, { + test: "memory request change for sidecar containers", + old: mkPodWithInitCtrs(getResources("0", "100Mi", "", ""), core.ResourceList{}), + new: mkPodWithInitCtrs(getResources("0", "200Mi", "", ""), core.ResourceList{}), + isSideCarCtr: true, + err: "", + }, { + test: "storage request change for sidecar containers", + old: mkPodWithInitCtrs(getResources("100m", "0", "1Gi", ""), core.ResourceList{}), + new: mkPodWithInitCtrs(getResources("100m", "0", "2Gi", ""), core.ResourceList{}), + isSideCarCtr: true, + err: "spec: Forbidden: cpu and memory resources for only sidecar containers are mutable", + }, } for _, test := range tests { + featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SidecarContainers, test.isSideCarCtr) test.new.ObjectMeta.ResourceVersion = "1" test.old.ObjectMeta.ResourceVersion = "1" @@ -25996,6 +26053,12 @@ func TestValidatePodResize(t *testing.T) { test.new.Namespace = "namespace" test.old.Namespace = "namespace" } + if test.isSideCarCtr { + if test.new.Spec.InitContainers == nil && test.old.Spec.InitContainers == nil { + test.new.Spec.InitContainers = []core.Container{{Name: "autoadded", Image: "image", TerminationMessagePolicy: "File", ImagePullPolicy: "Always"}} + test.old.Spec.InitContainers = []core.Container{{Name: "autoadded", Image: "image", TerminationMessagePolicy: "File", ImagePullPolicy: "Always"}} + } + } if test.new.Spec.Containers == nil && test.old.Spec.Containers == nil { test.new.Spec.Containers = []core.Container{{Name: "autoadded", Image: "image", TerminationMessagePolicy: "File", ImagePullPolicy: "Always"}} test.old.Spec.Containers = []core.Container{{Name: "autoadded", Image: "image", TerminationMessagePolicy: "File", ImagePullPolicy: "Always"}}