mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 02:41:25 +00:00
Add missing unit test for resource resize policy defaulting
This commit is contained in:
parent
8b2dae57d4
commit
07c567a848
@ -33,6 +33,7 @@ import (
|
|||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
corev1 "k8s.io/kubernetes/pkg/apis/core/v1"
|
corev1 "k8s.io/kubernetes/pkg/apis/core/v1"
|
||||||
|
"k8s.io/kubernetes/pkg/features"
|
||||||
utilpointer "k8s.io/utils/pointer"
|
utilpointer "k8s.io/utils/pointer"
|
||||||
|
|
||||||
// ensure types are installed
|
// ensure types are installed
|
||||||
@ -1906,3 +1907,162 @@ func TestSetDefaultServiceInternalTrafficPolicy(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetDefaultResizePolicy(t *testing.T) {
|
||||||
|
// verify we default to NotRequired restart policy for resize when resources are specified
|
||||||
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.InPlacePodVerticalScaling, true)()
|
||||||
|
|
||||||
|
for desc, tc := range map[string]struct {
|
||||||
|
testContainer v1.Container
|
||||||
|
expectedResizePolicy []v1.ContainerResizePolicy
|
||||||
|
}{
|
||||||
|
"CPU and memory limits are specified": {
|
||||||
|
testContainer: v1.Container{
|
||||||
|
Resources: v1.ResourceRequirements{
|
||||||
|
Limits: v1.ResourceList{
|
||||||
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
|
v1.ResourceMemory: resource.MustParse("200Mi"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceCPU,
|
||||||
|
RestartPolicy: v1.NotRequired,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceMemory,
|
||||||
|
RestartPolicy: v1.NotRequired,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"CPU requests are specified": {
|
||||||
|
testContainer: v1.Container{
|
||||||
|
Resources: v1.ResourceRequirements{
|
||||||
|
Requests: v1.ResourceList{
|
||||||
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceCPU,
|
||||||
|
RestartPolicy: v1.NotRequired,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Memory limits are specified": {
|
||||||
|
testContainer: v1.Container{
|
||||||
|
Resources: v1.ResourceRequirements{
|
||||||
|
Limits: v1.ResourceList{
|
||||||
|
v1.ResourceMemory: resource.MustParse("200Mi"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceMemory,
|
||||||
|
RestartPolicy: v1.NotRequired,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"No resources are specified": {
|
||||||
|
testContainer: v1.Container{Name: "besteffort"},
|
||||||
|
expectedResizePolicy: nil,
|
||||||
|
},
|
||||||
|
"CPU and memory limits are specified with restartContainer resize policy for memory": {
|
||||||
|
testContainer: v1.Container{
|
||||||
|
Resources: v1.ResourceRequirements{
|
||||||
|
Limits: v1.ResourceList{
|
||||||
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
|
v1.ResourceMemory: resource.MustParse("200Mi"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceMemory,
|
||||||
|
RestartPolicy: v1.RestartContainer,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceMemory,
|
||||||
|
RestartPolicy: v1.RestartContainer,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceCPU,
|
||||||
|
RestartPolicy: v1.NotRequired,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"CPU requests and memory limits are specified with restartContainer resize policy for CPU": {
|
||||||
|
testContainer: v1.Container{
|
||||||
|
Resources: v1.ResourceRequirements{
|
||||||
|
Limits: v1.ResourceList{
|
||||||
|
v1.ResourceMemory: resource.MustParse("200Mi"),
|
||||||
|
},
|
||||||
|
Requests: v1.ResourceList{
|
||||||
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceCPU,
|
||||||
|
RestartPolicy: v1.RestartContainer,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceCPU,
|
||||||
|
RestartPolicy: v1.RestartContainer,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceMemory,
|
||||||
|
RestartPolicy: v1.NotRequired,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"CPU and memory requests are specified with restartContainer resize policy for both": {
|
||||||
|
testContainer: v1.Container{
|
||||||
|
Resources: v1.ResourceRequirements{
|
||||||
|
Requests: v1.ResourceList{
|
||||||
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
|
v1.ResourceMemory: resource.MustParse("200Mi"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceCPU,
|
||||||
|
RestartPolicy: v1.RestartContainer,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceMemory,
|
||||||
|
RestartPolicy: v1.RestartContainer,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedResizePolicy: []v1.ContainerResizePolicy{
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceCPU,
|
||||||
|
RestartPolicy: v1.RestartContainer,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ResourceName: v1.ResourceMemory,
|
||||||
|
RestartPolicy: v1.RestartContainer,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
t.Run(desc, func(t *testing.T) {
|
||||||
|
testPod := v1.Pod{}
|
||||||
|
testPod.Spec.Containers = append(testPod.Spec.Containers, tc.testContainer)
|
||||||
|
output := roundTrip(t, runtime.Object(&testPod))
|
||||||
|
pod2 := output.(*v1.Pod)
|
||||||
|
if diff.ObjectDiff(pod2.Spec.Containers[0].ResizePolicy, tc.expectedResizePolicy) != "" {
|
||||||
|
t.Errorf("expected resize policy %+v, but got %+v", tc.expectedResizePolicy, pod2.Spec.Containers[0].ResizePolicy)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user