1
1
package generator
2
2
3
3
import (
4
+ "github.com/hashicorp/go-multierror"
4
5
"github.com/stretchr/testify/assert"
5
6
"path/filepath"
6
7
"reflect"
@@ -162,31 +163,47 @@ func TestConvertPorts(t *testing.T) {
162
163
}
163
164
164
165
func TestGetResourceReqs (t * testing.T ) {
165
- limit := "1024Mi"
166
- quantity , err := resource .ParseQuantity (limit )
166
+ memoryLimit := "1024Mi"
167
+ memoryRequest := "1Gi"
168
+ cpuRequest := "1m"
169
+ cpuLimit := "1m"
170
+
171
+ memoryLimitQuantity , err := resource .ParseQuantity (memoryLimit )
172
+ memoryRequestQuantity , err := resource .ParseQuantity (memoryRequest )
173
+ cpuRequestQuantity , err := resource .ParseQuantity (cpuRequest )
174
+ cpuLimitQuantity , err := resource .ParseQuantity (cpuLimit )
167
175
if err != nil {
168
176
t .Errorf ("TestGetResourceReqs() unexpected error: %v" , err )
169
177
}
170
178
tests := []struct {
171
179
name string
172
180
component v1.Component
173
181
want corev1.ResourceRequirements
182
+ wantErr []string
174
183
}{
175
184
{
176
- name : "One Endpoint " ,
185
+ name : "generate resource limit " ,
177
186
component : v1.Component {
178
187
Name : "testcomponent" ,
179
188
ComponentUnion : v1.ComponentUnion {
180
189
Container : & v1.ContainerComponent {
181
190
Container : v1.Container {
182
- MemoryLimit : "1024Mi" ,
191
+ MemoryLimit : memoryLimit ,
192
+ MemoryRequest : memoryRequest ,
193
+ CpuRequest : cpuRequest ,
194
+ CpuLimit : cpuLimit ,
183
195
},
184
196
},
185
197
},
186
198
},
187
199
want : corev1.ResourceRequirements {
188
200
Limits : corev1.ResourceList {
189
- corev1 .ResourceMemory : quantity ,
201
+ corev1 .ResourceMemory : memoryLimitQuantity ,
202
+ corev1 .ResourceCPU : cpuLimitQuantity ,
203
+ },
204
+ Requests : corev1.ResourceList {
205
+ corev1 .ResourceMemory : memoryRequestQuantity ,
206
+ corev1 .ResourceCPU : cpuRequestQuantity ,
190
207
},
191
208
},
192
209
},
@@ -209,13 +226,40 @@ func TestGetResourceReqs(t *testing.T) {
209
226
},
210
227
want : corev1.ResourceRequirements {},
211
228
},
229
+ {
230
+ name : "test error case" ,
231
+ component : v1.Component {
232
+ Name : "testcomponent" ,
233
+ ComponentUnion : v1.ComponentUnion {
234
+ Container : & v1.ContainerComponent {
235
+ Container : v1.Container {
236
+ MemoryLimit : "invalid" ,
237
+ MemoryRequest : "invalid" ,
238
+ CpuRequest : "invalid" ,
239
+ CpuLimit : "invalid" ,
240
+ },
241
+ },
242
+ },
243
+ },
244
+ wantErr : []string {
245
+ "error parsing memoryLimit requirement.*" ,
246
+ "error parsing cpuLimit requirement.*" ,
247
+ "error parsing memoryRequest requirement.*" ,
248
+ "error parsing cpuRequest requirement.*" ,
249
+ },
250
+ },
212
251
}
213
252
214
253
for _ , tt := range tests {
215
254
t .Run (tt .name , func (t * testing.T ) {
216
- req := getResourceReqs (tt .component )
217
- if ! reflect .DeepEqual (tt .want , req ) {
218
- t .Errorf ("TestGetResourceReqs() error: expected %v, wanted %v" , req , tt .want )
255
+ req , err := getResourceReqs (tt .component )
256
+ if merr , ok := err .(* multierror.Error ); ok && tt .wantErr != nil {
257
+ assert .Equal (t , len (tt .wantErr ), len (merr .Errors ), "Error list length should match" )
258
+ for i := 0 ; i < len (merr .Errors ); i ++ {
259
+ assert .Regexp (t , tt .wantErr [i ], merr .Errors [i ].Error (), "Error message should match" )
260
+ }
261
+ } else if ! reflect .DeepEqual (tt .want , req ) {
262
+ assert .Equal (t , tt .want , req , "TestGetResourceReqs(): The two values should be the same." )
219
263
}
220
264
})
221
265
}
0 commit comments