@@ -23,7 +23,7 @@ import (
23
23
"testing"
24
24
25
25
apps "k8s.io/api/apps/v1"
26
- "k8s.io/api/core/v1"
26
+ v1 "k8s.io/api/core/v1"
27
27
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28
28
"k8s.io/apimachinery/pkg/runtime"
29
29
"k8s.io/apimachinery/pkg/types"
@@ -42,7 +42,7 @@ func alwaysReady() bool { return true }
42
42
43
43
func TestStatefulSetControllerCreates (t * testing.T ) {
44
44
set := newStatefulSet (3 )
45
- ssc , spc := newFakeStatefulSetController (set )
45
+ ssc , spc , _ := newFakeStatefulSetController (set )
46
46
if err := scaleUpStatefulSetController (set , ssc , spc ); err != nil {
47
47
t .Errorf ("Failed to turn up StatefulSet : %s" , err )
48
48
}
@@ -58,7 +58,7 @@ func TestStatefulSetControllerCreates(t *testing.T) {
58
58
59
59
func TestStatefulSetControllerDeletes (t * testing.T ) {
60
60
set := newStatefulSet (3 )
61
- ssc , spc := newFakeStatefulSetController (set )
61
+ ssc , spc , _ := newFakeStatefulSetController (set )
62
62
if err := scaleUpStatefulSetController (set , ssc , spc ); err != nil {
63
63
t .Errorf ("Failed to turn up StatefulSet : %s" , err )
64
64
}
@@ -86,7 +86,7 @@ func TestStatefulSetControllerDeletes(t *testing.T) {
86
86
87
87
func TestStatefulSetControllerRespectsTermination (t * testing.T ) {
88
88
set := newStatefulSet (3 )
89
- ssc , spc := newFakeStatefulSetController (set )
89
+ ssc , spc , _ := newFakeStatefulSetController (set )
90
90
if err := scaleUpStatefulSetController (set , ssc , spc ); err != nil {
91
91
t .Errorf ("Failed to turn up StatefulSet : %s" , err )
92
92
}
@@ -137,7 +137,7 @@ func TestStatefulSetControllerRespectsTermination(t *testing.T) {
137
137
138
138
func TestStatefulSetControllerBlocksScaling (t * testing.T ) {
139
139
set := newStatefulSet (3 )
140
- ssc , spc := newFakeStatefulSetController (set )
140
+ ssc , spc , _ := newFakeStatefulSetController (set )
141
141
if err := scaleUpStatefulSetController (set , ssc , spc ); err != nil {
142
142
t .Errorf ("Failed to turn up StatefulSet : %s" , err )
143
143
}
@@ -185,7 +185,7 @@ func TestStatefulSetControllerBlocksScaling(t *testing.T) {
185
185
func TestStatefulSetControllerDeletionTimestamp (t * testing.T ) {
186
186
set := newStatefulSet (3 )
187
187
set .DeletionTimestamp = new (metav1.Time )
188
- ssc , spc := newFakeStatefulSetController (set )
188
+ ssc , spc , _ := newFakeStatefulSetController (set )
189
189
190
190
spc .setsIndexer .Add (set )
191
191
@@ -210,7 +210,7 @@ func TestStatefulSetControllerDeletionTimestampRace(t *testing.T) {
210
210
set := newStatefulSet (3 )
211
211
// The bare client says it IS deleted.
212
212
set .DeletionTimestamp = new (metav1.Time )
213
- ssc , spc := newFakeStatefulSetController (set )
213
+ ssc , spc , ssh := newFakeStatefulSetController (set )
214
214
215
215
// The lister (cache) says it's NOT deleted.
216
216
set2 := * set
@@ -221,6 +221,16 @@ func TestStatefulSetControllerDeletionTimestampRace(t *testing.T) {
221
221
pod := newStatefulSetPod (set , 1 )
222
222
pod .OwnerReferences = nil
223
223
spc .podsIndexer .Add (pod )
224
+ set .Status .CollisionCount = new (int32 )
225
+ revision , err := newRevision (set , 1 , set .Status .CollisionCount )
226
+ if err != nil {
227
+ t .Fatal (err )
228
+ }
229
+ revision .OwnerReferences = nil
230
+ revision , err = ssh .CreateControllerRevision (set , revision , set .Status .CollisionCount )
231
+ if err != nil {
232
+ t .Fatal (err )
233
+ }
224
234
225
235
// Force a sync. It should not try to create any Pods.
226
236
ssc .enqueueStatefulSet (set )
@@ -237,10 +247,31 @@ func TestStatefulSetControllerDeletionTimestampRace(t *testing.T) {
237
247
if got , want := len (pods ), 1 ; got != want {
238
248
t .Errorf ("len(pods) = %v, want %v" , got , want )
239
249
}
250
+
251
+ // It should not adopt pods.
252
+ for _ , pod := range pods {
253
+ if len (pod .OwnerReferences ) > 0 {
254
+ t .Errorf ("unexpect pod owner references: %v" , pod .OwnerReferences )
255
+ }
256
+ }
257
+
258
+ // It should not adopt revisions.
259
+ revisions , err := ssh .ListControllerRevisions (set , selector )
260
+ if err != nil {
261
+ t .Fatal (err )
262
+ }
263
+ if got , want := len (revisions ), 1 ; got != want {
264
+ t .Errorf ("len(revisions) = %v, want %v" , got , want )
265
+ }
266
+ for _ , revision := range revisions {
267
+ if len (revision .OwnerReferences ) > 0 {
268
+ t .Errorf ("unexpect revision owner references: %v" , revision .OwnerReferences )
269
+ }
270
+ }
240
271
}
241
272
242
273
func TestStatefulSetControllerAddPod (t * testing.T ) {
243
- ssc , spc := newFakeStatefulSetController ()
274
+ ssc , spc , _ := newFakeStatefulSetController ()
244
275
set1 := newStatefulSet (3 )
245
276
set2 := newStatefulSet (3 )
246
277
pod1 := newStatefulSetPod (set1 , 0 )
@@ -272,7 +303,7 @@ func TestStatefulSetControllerAddPod(t *testing.T) {
272
303
}
273
304
274
305
func TestStatefulSetControllerAddPodOrphan (t * testing.T ) {
275
- ssc , spc := newFakeStatefulSetController ()
306
+ ssc , spc , _ := newFakeStatefulSetController ()
276
307
set1 := newStatefulSet (3 )
277
308
set2 := newStatefulSet (3 )
278
309
set2 .Name = "foo2"
@@ -293,7 +324,7 @@ func TestStatefulSetControllerAddPodOrphan(t *testing.T) {
293
324
}
294
325
295
326
func TestStatefulSetControllerAddPodNoSet (t * testing.T ) {
296
- ssc , _ := newFakeStatefulSetController ()
327
+ ssc , _ , _ := newFakeStatefulSetController ()
297
328
set := newStatefulSet (3 )
298
329
pod := newStatefulSetPod (set , 0 )
299
330
ssc .addPod (pod )
@@ -305,7 +336,7 @@ func TestStatefulSetControllerAddPodNoSet(t *testing.T) {
305
336
}
306
337
307
338
func TestStatefulSetControllerUpdatePod (t * testing.T ) {
308
- ssc , spc := newFakeStatefulSetController ()
339
+ ssc , spc , _ := newFakeStatefulSetController ()
309
340
set1 := newStatefulSet (3 )
310
341
set2 := newStatefulSet (3 )
311
342
set2 .Name = "foo2"
@@ -340,7 +371,7 @@ func TestStatefulSetControllerUpdatePod(t *testing.T) {
340
371
}
341
372
342
373
func TestStatefulSetControllerUpdatePodWithNoSet (t * testing.T ) {
343
- ssc , _ := newFakeStatefulSetController ()
374
+ ssc , _ , _ := newFakeStatefulSetController ()
344
375
set := newStatefulSet (3 )
345
376
pod := newStatefulSetPod (set , 0 )
346
377
prev := * pod
@@ -354,7 +385,7 @@ func TestStatefulSetControllerUpdatePodWithNoSet(t *testing.T) {
354
385
}
355
386
356
387
func TestStatefulSetControllerUpdatePodWithSameVersion (t * testing.T ) {
357
- ssc , spc := newFakeStatefulSetController ()
388
+ ssc , spc , _ := newFakeStatefulSetController ()
358
389
set := newStatefulSet (3 )
359
390
pod := newStatefulSetPod (set , 0 )
360
391
spc .setsIndexer .Add (set )
@@ -367,7 +398,7 @@ func TestStatefulSetControllerUpdatePodWithSameVersion(t *testing.T) {
367
398
}
368
399
369
400
func TestStatefulSetControllerUpdatePodOrphanWithNewLabels (t * testing.T ) {
370
- ssc , spc := newFakeStatefulSetController ()
401
+ ssc , spc , _ := newFakeStatefulSetController ()
371
402
set := newStatefulSet (3 )
372
403
pod := newStatefulSetPod (set , 0 )
373
404
pod .OwnerReferences = nil
@@ -385,7 +416,7 @@ func TestStatefulSetControllerUpdatePodOrphanWithNewLabels(t *testing.T) {
385
416
}
386
417
387
418
func TestStatefulSetControllerUpdatePodChangeControllerRef (t * testing.T ) {
388
- ssc , spc := newFakeStatefulSetController ()
419
+ ssc , spc , _ := newFakeStatefulSetController ()
389
420
set := newStatefulSet (3 )
390
421
set2 := newStatefulSet (3 )
391
422
set2 .Name = "foo2"
@@ -403,7 +434,7 @@ func TestStatefulSetControllerUpdatePodChangeControllerRef(t *testing.T) {
403
434
}
404
435
405
436
func TestStatefulSetControllerUpdatePodRelease (t * testing.T ) {
406
- ssc , spc := newFakeStatefulSetController ()
437
+ ssc , spc , _ := newFakeStatefulSetController ()
407
438
set := newStatefulSet (3 )
408
439
set2 := newStatefulSet (3 )
409
440
set2 .Name = "foo2"
@@ -420,7 +451,7 @@ func TestStatefulSetControllerUpdatePodRelease(t *testing.T) {
420
451
}
421
452
422
453
func TestStatefulSetControllerDeletePod (t * testing.T ) {
423
- ssc , spc := newFakeStatefulSetController ()
454
+ ssc , spc , _ := newFakeStatefulSetController ()
424
455
set1 := newStatefulSet (3 )
425
456
set2 := newStatefulSet (3 )
426
457
set2 .Name = "foo2"
@@ -451,7 +482,7 @@ func TestStatefulSetControllerDeletePod(t *testing.T) {
451
482
}
452
483
453
484
func TestStatefulSetControllerDeletePodOrphan (t * testing.T ) {
454
- ssc , spc := newFakeStatefulSetController ()
485
+ ssc , spc , _ := newFakeStatefulSetController ()
455
486
set1 := newStatefulSet (3 )
456
487
set2 := newStatefulSet (3 )
457
488
set2 .Name = "foo2"
@@ -467,7 +498,7 @@ func TestStatefulSetControllerDeletePodOrphan(t *testing.T) {
467
498
}
468
499
469
500
func TestStatefulSetControllerDeletePodTombstone (t * testing.T ) {
470
- ssc , spc := newFakeStatefulSetController ()
501
+ ssc , spc , _ := newFakeStatefulSetController ()
471
502
set := newStatefulSet (3 )
472
503
pod := newStatefulSetPod (set , 0 )
473
504
spc .setsIndexer .Add (set )
@@ -485,7 +516,7 @@ func TestStatefulSetControllerDeletePodTombstone(t *testing.T) {
485
516
}
486
517
487
518
func TestStatefulSetControllerGetStatefulSetsForPod (t * testing.T ) {
488
- ssc , spc := newFakeStatefulSetController ()
519
+ ssc , spc , _ := newFakeStatefulSetController ()
489
520
set1 := newStatefulSet (3 )
490
521
set2 := newStatefulSet (3 )
491
522
set2 .Name = "foo2"
@@ -514,7 +545,7 @@ func TestGetPodsForStatefulSetAdopt(t *testing.T) {
514
545
pod4 .OwnerReferences = nil
515
546
pod4 .Name = "x" + pod4 .Name
516
547
517
- ssc , spc := newFakeStatefulSetController (set , pod1 , pod2 , pod3 , pod4 )
548
+ ssc , spc , _ := newFakeStatefulSetController (set , pod1 , pod2 , pod3 , pod4 )
518
549
519
550
spc .podsIndexer .Add (pod1 )
520
551
spc .podsIndexer .Add (pod2 )
@@ -556,7 +587,7 @@ func TestAdoptOrphanRevisions(t *testing.T) {
556
587
ss1Rev2 .Namespace = ss1 .Namespace
557
588
ss1Rev2 .OwnerReferences = []metav1.OwnerReference {}
558
589
559
- ssc , spc := newFakeStatefulSetController (ss1 , ss1Rev1 , ss1Rev2 )
590
+ ssc , spc , _ := newFakeStatefulSetController (ss1 , ss1Rev1 , ss1Rev2 )
560
591
561
592
spc .revisionsIndexer .Add (ss1Rev1 )
562
593
spc .revisionsIndexer .Add (ss1Rev2 )
@@ -583,7 +614,7 @@ func TestAdoptOrphanRevisions(t *testing.T) {
583
614
584
615
func TestGetPodsForStatefulSetRelease (t * testing.T ) {
585
616
set := newStatefulSet (3 )
586
- ssc , spc := newFakeStatefulSetController (set )
617
+ ssc , spc , _ := newFakeStatefulSetController (set )
587
618
pod1 := newStatefulSetPod (set , 1 )
588
619
// pod2 is owned but has wrong name.
589
620
pod2 := newStatefulSetPod (set , 2 )
@@ -619,7 +650,7 @@ func TestGetPodsForStatefulSetRelease(t *testing.T) {
619
650
}
620
651
}
621
652
622
- func newFakeStatefulSetController (initialObjects ... runtime.Object ) (* StatefulSetController , * fakeStatefulPodControl ) {
653
+ func newFakeStatefulSetController (initialObjects ... runtime.Object ) (* StatefulSetController , * fakeStatefulPodControl , history. Interface ) {
623
654
client := fake .NewSimpleClientset (initialObjects ... )
624
655
informerFactory := informers .NewSharedInformerFactory (client , controller .NoResyncPeriodFunc ())
625
656
fpc := newFakeStatefulPodControl (informerFactory .Core ().V1 ().Pods (), informerFactory .Apps ().V1 ().StatefulSets (), informerFactory .Apps ().V1 ().ControllerRevisions ())
@@ -637,7 +668,7 @@ func newFakeStatefulSetController(initialObjects ...runtime.Object) (*StatefulSe
637
668
recorder := record .NewFakeRecorder (10 )
638
669
ssc .control = NewDefaultStatefulSetControl (fpc , ssu , ssh , recorder )
639
670
640
- return ssc , fpc
671
+ return ssc , fpc , ssh
641
672
}
642
673
643
674
func fakeWorker (ssc * StatefulSetController ) {
0 commit comments