mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 01:40:13 +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"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
corev1 "k8s.io/kubernetes/pkg/apis/core/v1"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
utilpointer "k8s.io/utils/pointer"
|
||||
|
||||
// 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