@@ -2,7 +2,6 @@ package softtainter
2
2
3
3
import (
4
4
"context"
5
- "errors"
6
5
"os"
7
6
"path"
8
7
"strings"
@@ -75,7 +74,7 @@ func TestReconcile(t *testing.T) {
75
74
nodes []* corev1.Node
76
75
expectednodes []* corev1.Node
77
76
nodeUtilization MockNodeUtilization
78
- expectedErr error
77
+ expectedErr string
79
78
kubedescheduler deschedulerv1.KubeDescheduler
80
79
testfilename string
81
80
}{
@@ -99,7 +98,6 @@ func TestReconcile(t *testing.T) {
99
98
},
100
99
mockErrors : nil ,
101
100
},
102
- expectedErr : nil ,
103
101
kubedescheduler : deschedulerv1.KubeDescheduler {
104
102
ObjectMeta : metav1.ObjectMeta {
105
103
Namespace : operatorclient .OperatorNamespace ,
@@ -135,7 +133,6 @@ func TestReconcile(t *testing.T) {
135
133
},
136
134
mockErrors : nil ,
137
135
},
138
- expectedErr : nil ,
139
136
kubedescheduler : deschedulerv1.KubeDescheduler {
140
137
ObjectMeta : metav1.ObjectMeta {
141
138
Namespace : operatorclient .OperatorNamespace ,
@@ -171,7 +168,6 @@ func TestReconcile(t *testing.T) {
171
168
},
172
169
mockErrors : nil ,
173
170
},
174
- expectedErr : nil ,
175
171
kubedescheduler : deschedulerv1.KubeDescheduler {
176
172
ObjectMeta : metav1.ObjectMeta {
177
173
Namespace : operatorclient .OperatorNamespace ,
@@ -213,7 +209,6 @@ func TestReconcile(t *testing.T) {
213
209
},
214
210
mockErrors : nil ,
215
211
},
216
- expectedErr : nil ,
217
212
kubedescheduler : deschedulerv1.KubeDescheduler {
218
213
ObjectMeta : metav1.ObjectMeta {
219
214
Namespace : operatorclient .OperatorNamespace ,
@@ -249,7 +244,6 @@ func TestReconcile(t *testing.T) {
249
244
},
250
245
mockErrors : nil ,
251
246
},
252
- expectedErr : nil ,
253
247
kubedescheduler : deschedulerv1.KubeDescheduler {
254
248
ObjectMeta : metav1.ObjectMeta {
255
249
Namespace : operatorclient .OperatorNamespace ,
@@ -285,7 +279,6 @@ func TestReconcile(t *testing.T) {
285
279
},
286
280
mockErrors : nil ,
287
281
},
288
- expectedErr : nil ,
289
282
kubedescheduler : deschedulerv1.KubeDescheduler {
290
283
ObjectMeta : metav1.ObjectMeta {
291
284
Namespace : operatorclient .OperatorNamespace ,
@@ -321,7 +314,6 @@ func TestReconcile(t *testing.T) {
321
314
},
322
315
mockErrors : nil ,
323
316
},
324
- expectedErr : nil ,
325
317
kubedescheduler : deschedulerv1.KubeDescheduler {
326
318
ObjectMeta : metav1.ObjectMeta {
327
319
Namespace : operatorclient .OperatorNamespace ,
@@ -357,7 +349,6 @@ func TestReconcile(t *testing.T) {
357
349
},
358
350
mockErrors : nil ,
359
351
},
360
- expectedErr : nil ,
361
352
kubedescheduler : deschedulerv1.KubeDescheduler {
362
353
ObjectMeta : metav1.ObjectMeta {
363
354
Namespace : operatorclient .OperatorNamespace ,
@@ -373,6 +364,22 @@ func TestReconcile(t *testing.T) {
373
364
},
374
365
testfilename : "policyNoRelieveAndMigrate.yaml" ,
375
366
},
367
+ {
368
+ description : "zeroed out descheduling interval" ,
369
+ nodes : []* corev1.Node {},
370
+ expectedErr : "descheduler should have an interval set and it should be greater than 0" ,
371
+ kubedescheduler : deschedulerv1.KubeDescheduler {
372
+ ObjectMeta : metav1.ObjectMeta {
373
+ Namespace : operatorclient .OperatorNamespace ,
374
+ Name : operatorclient .OperatorConfigName ,
375
+ },
376
+ Spec : deschedulerv1.KubeDeschedulerSpec {
377
+ DeschedulingIntervalSeconds : pointer .Int32 (0 ),
378
+ Mode : deschedulerv1 .Automatic ,
379
+ },
380
+ },
381
+ testfilename : "policy.yaml" ,
382
+ },
376
383
}
377
384
for _ , tc := range tests {
378
385
t .Run (tc .description , func (t * testing.T ) {
@@ -389,8 +396,14 @@ func TestReconcile(t *testing.T) {
389
396
nodeUtilizationFactory : tc .nodeUtilization .newNodeUtilizationFactory ,
390
397
}
391
398
result , err := st .Reconcile (ctx , reconcile.Request {})
392
- if ! errors .Is (err , tc .expectedErr ) {
393
- t .Errorf ("Test %#v failed, test case error: %v, expected error: %v" , tc .description , err , tc .expectedErr )
399
+ if err != nil {
400
+ if tc .expectedErr == "" {
401
+ t .Errorf ("Test %#v failed, unexpected error: %v" , tc .description , err )
402
+ } else if ! strings .Contains (err .Error (), tc .expectedErr ) {
403
+ t .Errorf ("Test %#v failed, test case error: %v, expected error to contain: %v" , tc .description , err , tc .expectedErr )
404
+ }
405
+ } else if tc .expectedErr != "" {
406
+ t .Errorf ("Test %#v failed, expected error: %v, but got no error" , tc .description , tc .expectedErr )
394
407
}
395
408
396
409
if tc .kubedescheduler .Spec .DeschedulingIntervalSeconds == nil || result .RequeueAfter != time .Duration (* tc .kubedescheduler .Spec .DeschedulingIntervalSeconds )* time .Second {
0 commit comments