@@ -30,6 +30,7 @@ import (
30
30
utilerrors "k8s.io/apimachinery/pkg/util/errors"
31
31
helpers "k8s.io/component-helpers/resource"
32
32
kubecm "k8s.io/kubernetes/pkg/kubelet/cm"
33
+ kubeqos "k8s.io/kubernetes/pkg/kubelet/qos"
33
34
"k8s.io/kubernetes/test/e2e/framework"
34
35
imageutils "k8s.io/kubernetes/test/utils/image"
35
36
@@ -359,22 +360,22 @@ func VerifyPodContainersCgroupValues(ctx context.Context, f *framework.Framework
359
360
return utilerrors .NewAggregate (errs )
360
361
}
361
362
362
- func verifyPodRestarts (pod * v1.Pod , wantInfo []ResizableContainerInfo ) error {
363
+ func verifyPodRestarts (f * framework. Framework , pod * v1.Pod , wantInfo []ResizableContainerInfo ) error {
363
364
ginkgo .GinkgoHelper ()
364
365
365
366
initCtrStatuses , ctrStatuses := separateContainerStatuses (wantInfo )
366
367
errs := []error {}
367
- if err := verifyContainerRestarts (pod .Status .InitContainerStatuses , initCtrStatuses ); err != nil {
368
+ if err := verifyContainerRestarts (f , pod , pod .Status .InitContainerStatuses , initCtrStatuses ); err != nil {
368
369
errs = append (errs , err )
369
370
}
370
- if err := verifyContainerRestarts (pod .Status .ContainerStatuses , ctrStatuses ); err != nil {
371
+ if err := verifyContainerRestarts (f , pod , pod .Status .ContainerStatuses , ctrStatuses ); err != nil {
371
372
errs = append (errs , err )
372
373
}
373
374
374
375
return utilerrors .NewAggregate (errs )
375
376
}
376
377
377
- func verifyContainerRestarts (gotStatuses []v1.ContainerStatus , wantStatuses []v1.ContainerStatus ) error {
378
+ func verifyContainerRestarts (f * framework. Framework , pod * v1. Pod , gotStatuses []v1.ContainerStatus , wantStatuses []v1.ContainerStatus ) error {
378
379
ginkgo .GinkgoHelper ()
379
380
380
381
if len (gotStatuses ) != len (wantStatuses ) {
@@ -386,11 +387,34 @@ func verifyContainerRestarts(gotStatuses []v1.ContainerStatus, wantStatuses []v1
386
387
for i , gotStatus := range gotStatuses {
387
388
if gotStatus .RestartCount != wantStatuses [i ].RestartCount {
388
389
errs = append (errs , fmt .Errorf ("unexpected number of restarts for container %s: got %d, want %d" , gotStatus .Name , gotStatus .RestartCount , wantStatuses [i ].RestartCount ))
390
+ } else if gotStatus .RestartCount > 0 {
391
+ err := verifyOomScoreAdj (f , pod , gotStatus .Name )
392
+ if err != nil {
393
+ errs = append (errs , err )
394
+ }
389
395
}
390
396
}
391
397
return utilerrors .NewAggregate (errs )
392
398
}
393
399
400
+ func verifyOomScoreAdj (f * framework.Framework , pod * v1.Pod , containerName string ) error {
401
+ container := FindContainerInPod (pod , containerName )
402
+ if container == nil {
403
+ return fmt .Errorf ("failed to find container %s in pod %s" , containerName , pod .Name )
404
+ }
405
+
406
+ node , err := f .ClientSet .CoreV1 ().Nodes ().Get (context .Background (), pod .Spec .NodeName , metav1.GetOptions {})
407
+ if err != nil {
408
+ return err
409
+ }
410
+
411
+ nodeMemoryCapacity := node .Status .Capacity [v1 .ResourceMemory ]
412
+ oomScoreAdj := kubeqos .GetContainerOOMScoreAdjust (pod , container , int64 (nodeMemoryCapacity .Value ()))
413
+ expectedOomScoreAdj := strconv .FormatInt (int64 (oomScoreAdj ), 10 )
414
+
415
+ return VerifyOomScoreAdjValue (f , pod , container .Name , expectedOomScoreAdj )
416
+ }
417
+
394
418
func WaitForPodResizeActuation (ctx context.Context , f * framework.Framework , podClient * PodClient , pod * v1.Pod , expectedContainers []ResizableContainerInfo ) * v1.Pod {
395
419
ginkgo .GinkgoHelper ()
396
420
// Wait for resize to complete.
@@ -440,7 +464,7 @@ func ExpectPodResized(ctx context.Context, f *framework.Framework, resizedPod *v
440
464
if resourceErrs := VerifyPodStatusResources (resizedPod , expectedContainers ); resourceErrs != nil {
441
465
errs = append (errs , fmt .Errorf ("container status resources don't match expected: %w" , formatErrors (resourceErrs )))
442
466
}
443
- if restartErrs := verifyPodRestarts (resizedPod , expectedContainers ); restartErrs != nil {
467
+ if restartErrs := verifyPodRestarts (f , resizedPod , expectedContainers ); restartErrs != nil {
444
468
errs = append (errs , fmt .Errorf ("container restart counts don't match expected: %w" , formatErrors (restartErrs )))
445
469
}
446
470
0 commit comments