@@ -286,15 +286,15 @@ func TestPodRequestsAndLimitsWithoutOverhead(t *testing.T) {
286
286
func TestPodResourceRequests (t * testing.T ) {
287
287
restartAlways := v1 .ContainerRestartPolicyAlways
288
288
testCases := []struct {
289
- description string
290
- options PodResourcesOptions
291
- overhead v1.ResourceList
292
- podResizeStatus v1.PodResizeStatus
293
- initContainers []v1.Container
294
- initContainerStatus []v1.ContainerStatus
295
- containers []v1.Container
296
- containerStatus []v1.ContainerStatus
297
- expectedRequests v1.ResourceList
289
+ description string
290
+ options PodResourcesOptions
291
+ overhead v1.ResourceList
292
+ podResizeStatus v1.PodResizeStatus
293
+ initContainers []v1.Container
294
+ initContainerStatuses []v1.ContainerStatus
295
+ containers []v1.Container
296
+ containerStatus []v1.ContainerStatus
297
+ expectedRequests v1.ResourceList
298
298
}{
299
299
{
300
300
description : "nil options, larger init container" ,
@@ -481,14 +481,6 @@ func TestPodResourceRequests(t *testing.T) {
481
481
},
482
482
},
483
483
},
484
- initContainerStatus : []v1.ContainerStatus {
485
- {
486
- Name : "restartable-init-1" ,
487
- AllocatedResources : v1.ResourceList {
488
- v1 .ResourceCPU : resource .MustParse ("2" ),
489
- },
490
- },
491
- },
492
484
},
493
485
{
494
486
description : "resized, infeasible, but don't use status" ,
@@ -518,6 +510,92 @@ func TestPodResourceRequests(t *testing.T) {
518
510
},
519
511
},
520
512
},
513
+ {
514
+ description : "resized, restartable init container, infeasible" ,
515
+ expectedRequests : v1.ResourceList {
516
+ v1 .ResourceCPU : resource .MustParse ("2" ),
517
+ },
518
+ podResizeStatus : v1 .PodResizeStatusInfeasible ,
519
+ options : PodResourcesOptions {UseStatusResources : true },
520
+ initContainers : []v1.Container {
521
+ {
522
+ Name : "restartable-init-1" ,
523
+ RestartPolicy : & restartAlways ,
524
+ Resources : v1.ResourceRequirements {
525
+ Requests : v1.ResourceList {
526
+ v1 .ResourceCPU : resource .MustParse ("4" ),
527
+ },
528
+ },
529
+ },
530
+ },
531
+ initContainerStatuses : []v1.ContainerStatus {
532
+ {
533
+ Name : "restartable-init-1" ,
534
+ Resources : & v1.ResourceRequirements {
535
+ Requests : v1.ResourceList {
536
+ v1 .ResourceCPU : resource .MustParse ("2" ),
537
+ },
538
+ },
539
+ },
540
+ },
541
+ },
542
+ {
543
+ description : "resized, restartable init container, no resize status" ,
544
+ expectedRequests : v1.ResourceList {
545
+ v1 .ResourceCPU : resource .MustParse ("4" ),
546
+ },
547
+ options : PodResourcesOptions {UseStatusResources : true },
548
+ initContainers : []v1.Container {
549
+ {
550
+ Name : "restartable-init-1" ,
551
+ RestartPolicy : & restartAlways ,
552
+ Resources : v1.ResourceRequirements {
553
+ Requests : v1.ResourceList {
554
+ v1 .ResourceCPU : resource .MustParse ("4" ),
555
+ },
556
+ },
557
+ },
558
+ },
559
+ initContainerStatuses : []v1.ContainerStatus {
560
+ {
561
+ Name : "restartable-init-1" ,
562
+ Resources : & v1.ResourceRequirements {
563
+ Requests : v1.ResourceList {
564
+ v1 .ResourceCPU : resource .MustParse ("2" ),
565
+ },
566
+ },
567
+ },
568
+ },
569
+ },
570
+ {
571
+ description : "resized, restartable init container, infeasible, but don't use status" ,
572
+ expectedRequests : v1.ResourceList {
573
+ v1 .ResourceCPU : resource .MustParse ("4" ),
574
+ },
575
+ podResizeStatus : v1 .PodResizeStatusInfeasible ,
576
+ options : PodResourcesOptions {UseStatusResources : false },
577
+ initContainers : []v1.Container {
578
+ {
579
+ Name : "restartable-init-1" ,
580
+ RestartPolicy : & restartAlways ,
581
+ Resources : v1.ResourceRequirements {
582
+ Requests : v1.ResourceList {
583
+ v1 .ResourceCPU : resource .MustParse ("4" ),
584
+ },
585
+ },
586
+ },
587
+ },
588
+ initContainerStatuses : []v1.ContainerStatus {
589
+ {
590
+ Name : "restartable-init-1" ,
591
+ Resources : & v1.ResourceRequirements {
592
+ Requests : v1.ResourceList {
593
+ v1 .ResourceCPU : resource .MustParse ("2" ),
594
+ },
595
+ },
596
+ },
597
+ },
598
+ },
521
599
{
522
600
description : "restartable init container" ,
523
601
expectedRequests : v1.ResourceList {
@@ -710,7 +788,7 @@ func TestPodResourceRequests(t *testing.T) {
710
788
},
711
789
Status : v1.PodStatus {
712
790
ContainerStatuses : tc .containerStatus ,
713
- InitContainerStatuses : tc .initContainerStatus ,
791
+ InitContainerStatuses : tc .initContainerStatuses ,
714
792
Resize : tc .podResizeStatus ,
715
793
},
716
794
}
@@ -758,13 +836,14 @@ func TestPodResourceRequestsReuse(t *testing.T) {
758
836
func TestPodResourceLimits (t * testing.T ) {
759
837
restartAlways := v1 .ContainerRestartPolicyAlways
760
838
testCases := []struct {
761
- description string
762
- options PodResourcesOptions
763
- overhead v1.ResourceList
764
- initContainers []v1.Container
765
- containers []v1.Container
766
- containerStatuses []v1.ContainerStatus
767
- expectedLimits v1.ResourceList
839
+ description string
840
+ options PodResourcesOptions
841
+ overhead v1.ResourceList
842
+ initContainers []v1.Container
843
+ initContainerStatuses []v1.ContainerStatus
844
+ containers []v1.Container
845
+ containerStatuses []v1.ContainerStatus
846
+ expectedLimits v1.ResourceList
768
847
}{
769
848
{
770
849
description : "nil options, larger init container" ,
@@ -1217,6 +1296,90 @@ func TestPodResourceLimits(t *testing.T) {
1217
1296
},
1218
1297
},
1219
1298
},
1299
+ {
1300
+ description : "pod scaled up with restartable init containers" ,
1301
+ expectedLimits : v1.ResourceList {
1302
+ v1 .ResourceMemory : resource .MustParse ("2Gi" ),
1303
+ },
1304
+ options : PodResourcesOptions {UseStatusResources : true },
1305
+ initContainers : []v1.Container {
1306
+ {
1307
+ Name : "restartable-init-1" ,
1308
+ RestartPolicy : & restartAlways ,
1309
+ Resources : v1.ResourceRequirements {
1310
+ Limits : v1.ResourceList {
1311
+ v1 .ResourceMemory : resource .MustParse ("2Gi" ),
1312
+ },
1313
+ },
1314
+ },
1315
+ },
1316
+ initContainerStatuses : []v1.ContainerStatus {
1317
+ {
1318
+ Name : "restartable-init-1" ,
1319
+ Resources : & v1.ResourceRequirements {
1320
+ Limits : v1.ResourceList {
1321
+ v1 .ResourceMemory : resource .MustParse ("1Gi" ),
1322
+ },
1323
+ },
1324
+ },
1325
+ },
1326
+ },
1327
+ {
1328
+ description : "pod scaled down with restartable init containers" ,
1329
+ expectedLimits : v1.ResourceList {
1330
+ v1 .ResourceMemory : resource .MustParse ("2Gi" ),
1331
+ },
1332
+ options : PodResourcesOptions {UseStatusResources : true },
1333
+ initContainers : []v1.Container {
1334
+ {
1335
+ Name : "restartable-init-1" ,
1336
+ RestartPolicy : & restartAlways ,
1337
+ Resources : v1.ResourceRequirements {
1338
+ Limits : v1.ResourceList {
1339
+ v1 .ResourceMemory : resource .MustParse ("1Gi" ),
1340
+ },
1341
+ },
1342
+ },
1343
+ },
1344
+ initContainerStatuses : []v1.ContainerStatus {
1345
+ {
1346
+ Name : "restartable-init-1" ,
1347
+ Resources : & v1.ResourceRequirements {
1348
+ Limits : v1.ResourceList {
1349
+ v1 .ResourceMemory : resource .MustParse ("2Gi" ),
1350
+ },
1351
+ },
1352
+ },
1353
+ },
1354
+ },
1355
+ {
1356
+ description : "pod scaled down with restartable init containers, don't use status" ,
1357
+ expectedLimits : v1.ResourceList {
1358
+ v1 .ResourceMemory : resource .MustParse ("1Gi" ),
1359
+ },
1360
+ options : PodResourcesOptions {UseStatusResources : false },
1361
+ initContainers : []v1.Container {
1362
+ {
1363
+ Name : "restartable-init-1" ,
1364
+ RestartPolicy : & restartAlways ,
1365
+ Resources : v1.ResourceRequirements {
1366
+ Limits : v1.ResourceList {
1367
+ v1 .ResourceMemory : resource .MustParse ("1Gi" ),
1368
+ },
1369
+ },
1370
+ },
1371
+ },
1372
+ initContainerStatuses : []v1.ContainerStatus {
1373
+ {
1374
+ Name : "restartable-init-1" ,
1375
+ Resources : & v1.ResourceRequirements {
1376
+ Limits : v1.ResourceList {
1377
+ v1 .ResourceMemory : resource .MustParse ("2Gi" ),
1378
+ },
1379
+ },
1380
+ },
1381
+ },
1382
+ },
1220
1383
}
1221
1384
for _ , tc := range testCases {
1222
1385
t .Run (tc .description , func (t * testing.T ) {
@@ -1227,7 +1390,8 @@ func TestPodResourceLimits(t *testing.T) {
1227
1390
Overhead : tc .overhead ,
1228
1391
},
1229
1392
Status : v1.PodStatus {
1230
- ContainerStatuses : tc .containerStatuses ,
1393
+ ContainerStatuses : tc .containerStatuses ,
1394
+ InitContainerStatuses : tc .initContainerStatuses ,
1231
1395
},
1232
1396
}
1233
1397
limits := PodLimits (p , tc .options )
0 commit comments