@@ -53,11 +53,14 @@ func TestResourceConfigForPod(t *testing.T) {
53
53
memoryQuantity := resource .MustParse ("200Mi" )
54
54
burstableMemory := memoryQuantity .Value ()
55
55
burstablePartialShares := MilliCPUToShares (200 )
56
- burstableQuota , burstablePeriod := MilliCPUToQuota (200 )
56
+ burstablePeriod := DefaultQuotaPeriod
57
+ burstableQuota := MilliCPUToQuota (200 , burstablePeriod )
57
58
guaranteedShares := MilliCPUToShares (100 )
58
- guaranteedQuota , guaranteedPeriod := MilliCPUToQuota (100 )
59
+ guaranteedPeriod := int64 (10000 )
60
+ guaranteedQuota := MilliCPUToQuota (100 , guaranteedPeriod )
59
61
memoryQuantity = resource .MustParse ("100Mi" )
60
62
guaranteedMemory := memoryQuantity .Value ()
63
+
61
64
testCases := map [string ]struct {
62
65
pod * v1.Pod
63
66
expected * ResourceConfig
@@ -67,19 +70,30 @@ func TestResourceConfigForPod(t *testing.T) {
67
70
Spec : v1.PodSpec {
68
71
Containers : []v1.Container {
69
72
{
70
- Resources : getResourceRequirements (getResourceList ("" , "" ), getResourceList ("" , "" )),
73
+ Resources : v1.ResourceRequirements {
74
+ Requests : v1.ResourceList {},
75
+ Limits : v1.ResourceList {},
76
+ },
71
77
},
72
78
},
73
79
},
74
80
},
75
- expected : & ResourceConfig {CpuShares : & minShares },
81
+ expected : & ResourceConfig {
82
+ CpuShares : & minShares ,
83
+ },
76
84
},
77
85
"burstable-no-limits" : {
78
86
pod : & v1.Pod {
79
87
Spec : v1.PodSpec {
80
88
Containers : []v1.Container {
81
89
{
82
- Resources : getResourceRequirements (getResourceList ("100m" , "100Mi" ), getResourceList ("" , "" )),
90
+ Resources : v1.ResourceRequirements {
91
+ Requests : v1.ResourceList {
92
+ v1 .ResourceCPU : resource .MustParse ("100m" ),
93
+ v1 .ResourceMemory : resource .MustParse ("100Mi" ),
94
+ },
95
+ Limits : v1.ResourceList {},
96
+ },
83
97
},
84
98
},
85
99
},
@@ -91,39 +105,86 @@ func TestResourceConfigForPod(t *testing.T) {
91
105
Spec : v1.PodSpec {
92
106
Containers : []v1.Container {
93
107
{
94
- Resources : getResourceRequirements (getResourceList ("100m" , "100Mi" ), getResourceList ("200m" , "200Mi" )),
108
+ Resources : v1.ResourceRequirements {
109
+ Requests : v1.ResourceList {
110
+ v1 .ResourceCPU : resource .MustParse ("100m" ),
111
+ v1 .ResourceMemory : resource .MustParse ("100Mi" ),
112
+ },
113
+ Limits : v1.ResourceList {
114
+ v1 .ResourceCPU : resource .MustParse ("200m" ),
115
+ v1 .ResourceMemory : resource .MustParse ("200Mi" ),
116
+ },
117
+ },
95
118
},
96
119
},
97
120
},
98
121
},
99
- expected : & ResourceConfig {CpuShares : & burstableShares , CpuQuota : & burstableQuota , CpuPeriod : & burstablePeriod , Memory : & burstableMemory },
122
+ expected : & ResourceConfig {
123
+ CpuShares : & burstableShares ,
124
+ CpuQuota : & burstableQuota ,
125
+ CpuPeriod : & burstablePeriod ,
126
+ Memory : & burstableMemory ,
127
+ },
100
128
},
101
129
"burstable-partial-limits" : {
102
130
pod : & v1.Pod {
103
131
Spec : v1.PodSpec {
104
132
Containers : []v1.Container {
105
133
{
106
- Resources : getResourceRequirements (getResourceList ("100m" , "100Mi" ), getResourceList ("200m" , "200Mi" )),
134
+ Resources : v1.ResourceRequirements {
135
+ Requests : v1.ResourceList {
136
+ v1 .ResourceCPU : resource .MustParse ("100m" ),
137
+ v1 .ResourceMemory : resource .MustParse ("100Mi" ),
138
+ },
139
+ Limits : v1.ResourceList {
140
+ v1 .ResourceCPU : resource .MustParse ("200m" ),
141
+ v1 .ResourceMemory : resource .MustParse ("200Mi" ),
142
+ },
143
+ },
107
144
},
108
145
{
109
- Resources : getResourceRequirements (getResourceList ("100m" , "100Mi" ), getResourceList ("" , "" )),
146
+ Resources : v1.ResourceRequirements {
147
+ Requests : v1.ResourceList {
148
+ v1 .ResourceCPU : resource .MustParse ("100m" ),
149
+ v1 .ResourceMemory : resource .MustParse ("100Mi" ),
150
+ },
151
+ Limits : v1.ResourceList {},
152
+ },
110
153
},
111
154
},
112
155
},
113
156
},
114
- expected : & ResourceConfig {CpuShares : & burstablePartialShares },
157
+ expected : & ResourceConfig {
158
+ CpuShares : & burstablePartialShares ,
159
+ },
115
160
},
116
161
"guaranteed" : {
117
162
pod : & v1.Pod {
118
163
Spec : v1.PodSpec {
119
164
Containers : []v1.Container {
120
165
{
121
- Resources : getResourceRequirements (getResourceList ("100m" , "100Mi" ), getResourceList ("100m" , "100Mi" )),
166
+ Resources : v1.ResourceRequirements {
167
+ Requests : v1.ResourceList {
168
+ v1 .ResourceCPU : resource .MustParse ("100m" ),
169
+ v1 .ResourceMemory : resource .MustParse ("100Mi" ),
170
+ v1 .ResourceCPUPeriodUsec : resource .MustParse ("10000" ),
171
+ },
172
+ Limits : v1.ResourceList {
173
+ v1 .ResourceCPU : resource .MustParse ("100m" ),
174
+ v1 .ResourceMemory : resource .MustParse ("100Mi" ),
175
+ v1 .ResourceCPUPeriodUsec : resource .MustParse ("10000" ),
176
+ },
177
+ },
122
178
},
123
179
},
124
180
},
125
181
},
126
- expected : & ResourceConfig {CpuShares : & guaranteedShares , CpuQuota : & guaranteedQuota , CpuPeriod : & guaranteedPeriod , Memory : & guaranteedMemory },
182
+ expected : & ResourceConfig {
183
+ CpuShares : & guaranteedShares ,
184
+ CpuQuota : & guaranteedQuota ,
185
+ CpuPeriod : & guaranteedPeriod ,
186
+ Memory : & guaranteedMemory ,
187
+ },
127
188
},
128
189
}
129
190
for testName , testCase := range testCases {
@@ -145,55 +206,65 @@ func TestResourceConfigForPod(t *testing.T) {
145
206
146
207
func TestMilliCPUToQuota (t * testing.T ) {
147
208
testCases := []struct {
148
- input int64
149
- quota int64
209
+ cpu int64
150
210
period int64
211
+ quota int64
151
212
}{
152
213
{
153
- input : int64 (0 ),
214
+ cpu : int64 (0 ),
215
+ period : int64 (100000 ),
154
216
quota : int64 (0 ),
155
- period : int64 (0 ),
156
217
},
157
218
{
158
- input : int64 (5 ),
159
- quota : int64 (1000 ),
219
+ cpu : int64 (5 ),
160
220
period : int64 (100000 ),
221
+ quota : int64 (1000 ),
161
222
},
162
223
{
163
- input : int64 (9 ),
164
- quota : int64 (1000 ),
224
+ cpu : int64 (9 ),
165
225
period : int64 (100000 ),
226
+ quota : int64 (1000 ),
166
227
},
167
228
{
168
- input : int64 (10 ),
169
- quota : int64 (1000 ),
229
+ cpu : int64 (10 ),
170
230
period : int64 (100000 ),
231
+ quota : int64 (1000 ),
171
232
},
172
233
{
173
- input : int64 (200 ),
174
- quota : int64 (20000 ),
234
+ cpu : int64 (200 ),
175
235
period : int64 (100000 ),
236
+ quota : int64 (20000 ),
176
237
},
177
238
{
178
- input : int64 (500 ),
179
- quota : int64 (50000 ),
239
+ cpu : int64 (500 ),
180
240
period : int64 (100000 ),
241
+ quota : int64 (50000 ),
181
242
},
182
243
{
183
- input : int64 (1000 ),
184
- quota : int64 (100000 ),
244
+ cpu : int64 (1000 ),
185
245
period : int64 (100000 ),
246
+ quota : int64 (100000 ),
186
247
},
187
248
{
188
- input : int64 (1500 ),
189
- quota : int64 (150000 ),
249
+ cpu : int64 (1500 ),
190
250
period : int64 (100000 ),
251
+ quota : int64 (150000 ),
252
+ },
253
+ {
254
+ cpu : int64 (1500 ),
255
+ period : int64 (10000 ),
256
+ quota : int64 (15000 ),
257
+ },
258
+ {
259
+ cpu : int64 (250 ),
260
+ period : int64 (5000 ),
261
+ quota : int64 (1250 ),
191
262
},
192
263
}
193
264
for _ , testCase := range testCases {
194
- quota , period := MilliCPUToQuota (testCase .input )
195
- if quota != testCase .quota || period != testCase . period {
196
- t .Errorf ("Input %v, expected quota %v period %v, but got quota %v period %v " , testCase .input , testCase .quota , testCase .period , quota , period )
265
+ quota := MilliCPUToQuota (testCase .cpu , testCase . period )
266
+ if quota != testCase .quota {
267
+ t .Errorf ("Input (cpu=%d, period=%d), expected quota=%d but got quota=%d " , testCase .cpu , testCase .period , testCase .quota , quota )
197
268
}
198
269
}
199
270
}
0 commit comments