@@ -17,7 +17,8 @@ import (
1717
1818var _ = Describe ("Overcommit" , func () {
1919 var (
20- pod * corev1.Pod
20+ pod * corev1.Pod
21+
2122 expectedRequests = corev1.ResourceList {
2223 corev1 .ResourceCPU : * resource .NewMilliQuantity (500 , resource .DecimalSI ),
2324 corev1 .ResourceMemory : * resource .NewQuantity (536870912 , resource .BinarySI ),
@@ -51,6 +52,7 @@ var _ = Describe("Overcommit", func() {
5152 })
5253
5354 Describe ("mutateContainers" , func () {
55+
5456 It ("should mutate container requests based on overcommit values" , func () {
5557 mutateContainers (pod .Spec .Containers , pod , 0.5 , 0.5 )
5658
@@ -59,10 +61,32 @@ var _ = Describe("Overcommit", func() {
5961
6062 It ("should not mutate containers if limits are nil" , func () {
6163 pod .Spec .Containers [0 ].Resources .Limits = nil
64+
6265 mutateContainers (pod .Spec .Containers , pod , 0.5 , 0.5 )
6366
6467 Expect (pod .Spec .Containers [0 ].Resources .Requests ).To (BeEmpty ())
6568 })
69+
70+ It ("should initialize requests if requests is nil" , func () {
71+ pod .Spec .Containers [0 ].Resources .Requests = nil
72+
73+ mutateContainers (pod .Spec .Containers , pod , 0.5 , 0.5 )
74+
75+ Expect (pod .Spec .Containers [0 ].Resources .Requests ).To (Equal (expectedRequests ))
76+ })
77+
78+ It ("should be idempotent when applied multiple times" , func () {
79+ mutateContainers (pod .Spec .Containers , pod , 0.5 , 0.5 )
80+
81+ first := pod .Spec .Containers [0 ].Resources .Requests .Cpu ().MilliValue ()
82+
83+ mutateContainers (pod .Spec .Containers , pod , 0.5 , 0.5 )
84+
85+ second := pod .Spec .Containers [0 ].Resources .Requests .Cpu ().MilliValue ()
86+
87+ Expect (first ).To (Equal (second ))
88+ })
89+
6690 })
6791
6892 Describe ("makeOvercommit" , func () {
@@ -74,6 +98,7 @@ var _ = Describe("Overcommit", func() {
7498 })
7599
76100 Describe ("Overcommit" , func () {
101+
77102 BeforeEach (func () {
78103 os .Setenv ("OVERCOMMIT_CLASS_NAME" , "test-class" )
79104 })
@@ -86,7 +111,27 @@ var _ = Describe("Overcommit", func() {
86111 Overcommit (pod , recorder , k8sClient )
87112
88113 Expect (pod .Spec .Containers [0 ].Resources .Requests ).To (Equal (expectedRequests ))
114+ })
115+
116+ })
117+
118+ Describe ("Resize behaviour" , func () {
119+
120+ It ("should recompute requests when limits change" , func () {
121+
122+ mutateContainers (pod .Spec .Containers , pod , 0.5 , 0.5 )
123+
124+ Expect (pod .Spec .Containers [0 ].Resources .Requests ).To (Equal (expectedRequests ))
125+
126+ pod .Spec .Containers [0 ].Resources .Limits [corev1 .ResourceCPU ] = resource .MustParse ("2" )
89127
128+ mutateContainers (pod .Spec .Containers , pod , 0.5 , 0.5 )
129+
130+ Expect (
131+ pod .Spec .Containers [0 ].Resources .Requests .Cpu ().MilliValue (),
132+ ).To (Equal (int64 (1000 )))
90133 })
134+
91135 })
136+
92137})
0 commit comments