mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-14 13:45:06 +00:00
Merge pull request #125103 from hjet/kuberuntime-testcov
[FG:InPlacePodVerticalScaling] Expand coverage for TestGenerateLinuxContainerResources
This commit is contained in:
@@ -809,12 +809,13 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range []struct {
|
for _, tc := range []struct {
|
||||||
name string
|
name string
|
||||||
scalingFg bool
|
scalingFg bool
|
||||||
limits v1.ResourceList
|
limits v1.ResourceList
|
||||||
requests v1.ResourceList
|
requests v1.ResourceList
|
||||||
cStatus []v1.ContainerStatus
|
cStatus []v1.ContainerStatus
|
||||||
expected *runtimeapi.LinuxContainerResources
|
expected *runtimeapi.LinuxContainerResources
|
||||||
|
cgroupVersion CgroupVersion
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, guaranteed qos - no container status",
|
"requests & limits, cpu & memory, guaranteed qos - no container status",
|
||||||
@@ -823,6 +824,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
[]v1.ContainerStatus{},
|
[]v1.ContainerStatus{},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, burstable qos - no container status",
|
"requests & limits, cpu & memory, burstable qos - no container status",
|
||||||
@@ -831,6 +833,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
[]v1.ContainerStatus{},
|
[]v1.ContainerStatus{},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970},
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"best-effort qos - no container status",
|
"best-effort qos - no container status",
|
||||||
@@ -839,6 +842,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
nil,
|
nil,
|
||||||
[]v1.ContainerStatus{},
|
[]v1.ContainerStatus{},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000},
|
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, guaranteed qos - empty resources container status",
|
"requests & limits, cpu & memory, guaranteed qos - empty resources container status",
|
||||||
@@ -847,6 +851,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
[]v1.ContainerStatus{{Name: "c1"}},
|
[]v1.ContainerStatus{{Name: "c1"}},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, burstable qos - empty resources container status",
|
"requests & limits, cpu & memory, burstable qos - empty resources container status",
|
||||||
@@ -855,6 +860,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
[]v1.ContainerStatus{{Name: "c1"}},
|
[]v1.ContainerStatus{{Name: "c1"}},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 999},
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 999},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"best-effort qos - empty resources container status",
|
"best-effort qos - empty resources container status",
|
||||||
@@ -863,6 +869,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
nil,
|
nil,
|
||||||
[]v1.ContainerStatus{{Name: "c1"}},
|
[]v1.ContainerStatus{{Name: "c1"}},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000},
|
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, guaranteed qos - container status with allocatedResources",
|
"requests & limits, cpu & memory, guaranteed qos - container status with allocatedResources",
|
||||||
@@ -876,6 +883,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 204, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
&runtimeapi.LinuxContainerResources{CpuShares: 204, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, burstable qos - container status with allocatedResources",
|
"requests & limits, cpu & memory, burstable qos - container status with allocatedResources",
|
||||||
@@ -889,6 +897,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970},
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, guaranteed qos - no container status",
|
"requests & limits, cpu & memory, guaranteed qos - no container status",
|
||||||
@@ -897,6 +906,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
[]v1.ContainerStatus{},
|
[]v1.ContainerStatus{},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, burstable qos - container status with allocatedResources",
|
"requests & limits, cpu & memory, burstable qos - container status with allocatedResources",
|
||||||
@@ -910,6 +920,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970},
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"requests & limits, cpu & memory, guaranteed qos - container status with allocatedResources",
|
"requests & limits, cpu & memory, guaranteed qos - container status with allocatedResources",
|
||||||
@@ -923,6 +934,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 204, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
&runtimeapi.LinuxContainerResources{CpuShares: 204, MemoryLimitInBytes: 524288000, OomScoreAdj: -997},
|
||||||
|
cgroupV1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"best-effort qos - no container status",
|
"best-effort qos - no container status",
|
||||||
@@ -931,6 +943,135 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
nil,
|
nil,
|
||||||
[]v1.ContainerStatus{},
|
[]v1.ContainerStatus{},
|
||||||
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000},
|
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000},
|
||||||
|
cgroupV1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, guaranteed qos - no container status",
|
||||||
|
true,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, burstable qos - no container status",
|
||||||
|
true,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("500m"), v1.ResourceMemory: resource.MustParse("750Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"best-effort qos - no container status",
|
||||||
|
true,
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
[]v1.ContainerStatus{},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, guaranteed qos - empty resources container status",
|
||||||
|
true,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{{Name: "c1"}},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, burstable qos - empty resources container status",
|
||||||
|
true,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("500m"), v1.ResourceMemory: resource.MustParse("750Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{{Name: "c1"}},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 999, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"best-effort qos - empty resources container status",
|
||||||
|
true,
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
[]v1.ContainerStatus{{Name: "c1"}},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, guaranteed qos - container status with allocatedResources",
|
||||||
|
true,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("200m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("200m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{
|
||||||
|
{
|
||||||
|
Name: "c1",
|
||||||
|
AllocatedResources: v1.ResourceList{v1.ResourceCPU: resource.MustParse("200m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 204, MemoryLimitInBytes: 524288000, OomScoreAdj: -997, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, burstable qos - container status with allocatedResources",
|
||||||
|
true,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("500m"), v1.ResourceMemory: resource.MustParse("750Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{
|
||||||
|
{
|
||||||
|
Name: "c1",
|
||||||
|
AllocatedResources: v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, guaranteed qos - no container status",
|
||||||
|
false,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 524288000, OomScoreAdj: -997, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, burstable qos - container status with allocatedResources",
|
||||||
|
false,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("500m"), v1.ResourceMemory: resource.MustParse("750Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{
|
||||||
|
{
|
||||||
|
Name: "c1",
|
||||||
|
AllocatedResources: v1.ResourceList{v1.ResourceCPU: resource.MustParse("250m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 256, MemoryLimitInBytes: 786432000, OomScoreAdj: 970, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"requests & limits, cpu & memory, guaranteed qos - container status with allocatedResources",
|
||||||
|
false,
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("200m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
v1.ResourceList{v1.ResourceCPU: resource.MustParse("200m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
[]v1.ContainerStatus{
|
||||||
|
{
|
||||||
|
Name: "c1",
|
||||||
|
AllocatedResources: v1.ResourceList{v1.ResourceCPU: resource.MustParse("200m"), v1.ResourceMemory: resource.MustParse("500Mi")},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 204, MemoryLimitInBytes: 524288000, OomScoreAdj: -997, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"best-effort qos - no container status",
|
||||||
|
false,
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
[]v1.ContainerStatus{},
|
||||||
|
&runtimeapi.LinuxContainerResources{CpuShares: 2, OomScoreAdj: 1000, Unified: map[string]string{"memory.oom.group": "1"}},
|
||||||
|
cgroupV2,
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
@@ -938,8 +1079,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
if tc.scalingFg {
|
if tc.scalingFg {
|
||||||
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.InPlacePodVerticalScaling, true)
|
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.InPlacePodVerticalScaling, true)
|
||||||
}
|
}
|
||||||
|
setCgroupVersionDuringTest(tc.cgroupVersion)
|
||||||
setCgroupVersionDuringTest(cgroupV1)
|
|
||||||
|
|
||||||
pod.Spec.Containers[0].Resources = v1.ResourceRequirements{Limits: tc.limits, Requests: tc.requests}
|
pod.Spec.Containers[0].Resources = v1.ResourceRequirements{Limits: tc.limits, Requests: tc.requests}
|
||||||
if len(tc.cStatus) > 0 {
|
if len(tc.cStatus) > 0 {
|
||||||
@@ -952,7 +1092,6 @@ func TestGenerateLinuxContainerResources(t *testing.T) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
//TODO(vinaykul,InPlacePodVerticalScaling): Add unit tests for cgroup v1 & v2
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGenerateLinuxContainerResourcesWithSwap(t *testing.T) {
|
func TestGenerateLinuxContainerResourcesWithSwap(t *testing.T) {
|
||||||
|
Reference in New Issue
Block a user