@@ -70,10 +70,11 @@ func TestResourceConfigForPod(t *testing.T) {
70
70
cpuNoLimit := int64 (- 1 )
71
71
guaranteedMemory := memoryQuantity .Value ()
72
72
testCases := map [string ]struct {
73
- pod * v1.Pod
74
- expected * ResourceConfig
75
- enforceCPULimits bool
76
- quotaPeriod uint64 // in microseconds
73
+ pod * v1.Pod
74
+ expected * ResourceConfig
75
+ enforceCPULimits bool
76
+ quotaPeriod uint64 // in microseconds
77
+ podLevelResourcesEnabled bool
77
78
}{
78
79
"besteffort" : {
79
80
pod : & v1.Pod {
@@ -274,20 +275,134 @@ func TestResourceConfigForPod(t *testing.T) {
274
275
quotaPeriod : tunedQuotaPeriod ,
275
276
expected : & ResourceConfig {CPUShares : & burstablePartialShares },
276
277
},
278
+ "burstable-with-pod-level-requests" : {
279
+ pod : & v1.Pod {
280
+ Spec : v1.PodSpec {
281
+ Resources : & v1.ResourceRequirements {
282
+ Requests : getResourceList ("100m" , "100Mi" ),
283
+ },
284
+ Containers : []v1.Container {
285
+ {
286
+ Name : "Container with no resources" ,
287
+ },
288
+ },
289
+ },
290
+ },
291
+ podLevelResourcesEnabled : true ,
292
+ enforceCPULimits : true ,
293
+ quotaPeriod : defaultQuotaPeriod ,
294
+ expected : & ResourceConfig {CPUShares : & burstableShares },
295
+ },
296
+ "burstable-with-pod-and-container-level-requests" : {
297
+ pod : & v1.Pod {
298
+ Spec : v1.PodSpec {
299
+ Resources : & v1.ResourceRequirements {
300
+ Requests : getResourceList ("100m" , "100Mi" ),
301
+ },
302
+ Containers : []v1.Container {
303
+ {
304
+ Name : "Container with resources" ,
305
+ Resources : getResourceRequirements (getResourceList ("10m" , "50Mi" ), getResourceList ("" , "" )),
306
+ },
307
+ },
308
+ },
309
+ },
310
+ podLevelResourcesEnabled : true ,
311
+ enforceCPULimits : true ,
312
+ quotaPeriod : defaultQuotaPeriod ,
313
+ expected : & ResourceConfig {CPUShares : & burstableShares },
314
+ },
315
+ "burstable-with-pod-level-resources" : {
316
+ pod : & v1.Pod {
317
+ Spec : v1.PodSpec {
318
+ Resources : & v1.ResourceRequirements {
319
+ Requests : getResourceList ("100m" , "100Mi" ),
320
+ Limits : getResourceList ("200m" , "200Mi" ),
321
+ },
322
+ Containers : []v1.Container {
323
+ {
324
+ Name : "Container with no resources" ,
325
+ },
326
+ },
327
+ },
328
+ },
329
+ podLevelResourcesEnabled : true ,
330
+ enforceCPULimits : true ,
331
+ quotaPeriod : defaultQuotaPeriod ,
332
+ expected : & ResourceConfig {CPUShares : & burstableShares , CPUQuota : & burstableQuota , CPUPeriod : & defaultQuotaPeriod , Memory : & burstableMemory },
333
+ },
334
+ "burstable-with-pod-and-container-level-resources" : {
335
+ pod : & v1.Pod {
336
+ Spec : v1.PodSpec {
337
+ Resources : & v1.ResourceRequirements {
338
+ Requests : getResourceList ("100m" , "100Mi" ),
339
+ Limits : getResourceList ("200m" , "200Mi" ),
340
+ },
341
+ Containers : []v1.Container {
342
+ {
343
+ Name : "Container with resources" ,
344
+ Resources : getResourceRequirements (getResourceList ("10m" , "50Mi" ), getResourceList ("50m" , "100Mi" )),
345
+ },
346
+ },
347
+ },
348
+ },
349
+ podLevelResourcesEnabled : true ,
350
+ enforceCPULimits : true ,
351
+ quotaPeriod : defaultQuotaPeriod ,
352
+ expected : & ResourceConfig {CPUShares : & burstableShares , CPUQuota : & burstableQuota , CPUPeriod : & defaultQuotaPeriod , Memory : & burstableMemory },
353
+ },
354
+ "guaranteed-with-pod-level-resources" : {
355
+ pod : & v1.Pod {
356
+ Spec : v1.PodSpec {
357
+ Resources : & v1.ResourceRequirements {
358
+ Requests : getResourceList ("100m" , "100Mi" ),
359
+ Limits : getResourceList ("100m" , "100Mi" ),
360
+ },
361
+ Containers : []v1.Container {
362
+ {
363
+ Name : "Container with no resources" ,
364
+ },
365
+ },
366
+ },
367
+ },
368
+ podLevelResourcesEnabled : true ,
369
+ enforceCPULimits : true ,
370
+ quotaPeriod : defaultQuotaPeriod ,
371
+ expected : & ResourceConfig {CPUShares : & guaranteedShares , CPUQuota : & guaranteedQuota , CPUPeriod : & defaultQuotaPeriod , Memory : & guaranteedMemory },
372
+ },
373
+ "guaranteed-with-pod-and-container-level-resources" : {
374
+ pod : & v1.Pod {
375
+ Spec : v1.PodSpec {
376
+ Resources : & v1.ResourceRequirements {
377
+ Requests : getResourceList ("100m" , "100Mi" ),
378
+ Limits : getResourceList ("100m" , "100Mi" ),
379
+ },
380
+ Containers : []v1.Container {
381
+ {
382
+ Name : "Container with resources" ,
383
+ Resources : getResourceRequirements (getResourceList ("10m" , "50Mi" ), getResourceList ("50m" , "100Mi" )),
384
+ },
385
+ },
386
+ },
387
+ },
388
+ podLevelResourcesEnabled : true ,
389
+ enforceCPULimits : true ,
390
+ quotaPeriod : defaultQuotaPeriod ,
391
+ expected : & ResourceConfig {CPUShares : & guaranteedShares , CPUQuota : & guaranteedQuota , CPUPeriod : & defaultQuotaPeriod , Memory : & guaranteedMemory },
392
+ },
277
393
}
278
394
279
395
for testName , testCase := range testCases {
280
-
396
+ featuregatetesting . SetFeatureGateDuringTest ( t , utilfeature . DefaultFeatureGate , pkgfeatures . PodLevelResources , testCase . podLevelResourcesEnabled )
281
397
actual := ResourceConfigForPod (testCase .pod , testCase .enforceCPULimits , testCase .quotaPeriod , false )
282
-
283
398
if ! reflect .DeepEqual (actual .CPUPeriod , testCase .expected .CPUPeriod ) {
284
399
t .Errorf ("unexpected result, test: %v, cpu period not as expected. Expected: %v, Actual:%v" , testName , * testCase .expected .CPUPeriod , * actual .CPUPeriod )
285
400
}
286
401
if ! reflect .DeepEqual (actual .CPUQuota , testCase .expected .CPUQuota ) {
287
402
t .Errorf ("unexpected result, test: %v, cpu quota not as expected. Expected: %v, Actual:%v" , testName , * testCase .expected .CPUQuota , * actual .CPUQuota )
288
403
}
289
404
if ! reflect .DeepEqual (actual .CPUShares , testCase .expected .CPUShares ) {
290
- t .Errorf ("unexpected result, test: %v, cpu shares not as expected. Expected: %v, Actual:%v" , testName , * testCase .expected .CPUShares , & actual .CPUShares )
405
+ t .Errorf ("unexpected result, test: %v, cpu shares not as expected. Expected: %v, Actual:%v" , testName , * testCase .expected .CPUShares , * actual .CPUShares )
291
406
}
292
407
if ! reflect .DeepEqual (actual .Memory , testCase .expected .Memory ) {
293
408
t .Errorf ("unexpected result, test: %v, memory not as expected. Expected: %v, Actual:%v" , testName , * testCase .expected .Memory , * actual .Memory )
0 commit comments