@@ -22,12 +22,17 @@ import (
22
22
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
23
23
)
24
24
25
+ func mockCheckerFactory (checker Checker ) CheckerFactory {
26
+ return func (_ ctrlclient.Client , _ * clusterv1.Cluster ) Checker {
27
+ return checker
28
+ }
29
+ }
30
+
25
31
type mockChecker struct {
26
- name string
27
32
checks []Check
28
33
}
29
34
30
- func (m * mockChecker ) Init (_ context.Context , _ ctrlclient. Client , _ * clusterv1. Cluster ) []Check {
35
+ func (m * mockChecker ) Init (_ context.Context ) []Check {
31
36
return m .checks
32
37
}
33
38
@@ -349,7 +354,11 @@ func TestHandle(t *testing.T) {
349
354
decoder = tt .decoder
350
355
}
351
356
352
- handler := New (fake .NewClientBuilder ().Build (), decoder , tt .checkers ... )
357
+ factories := make ([]CheckerFactory , len (tt .checkers ))
358
+ for i , checker := range tt .checkers {
359
+ factories [i ] = mockCheckerFactory (checker )
360
+ }
361
+ handler := New (fake .NewClientBuilder ().Build (), decoder , factories ... )
353
362
354
363
ctx := context .TODO ()
355
364
@@ -473,7 +482,7 @@ func TestHandleCancelledContext(t *testing.T) {
473
482
},
474
483
}
475
484
476
- handler := New (fake .NewClientBuilder ().Build (), decoder , checker )
485
+ handler := New (fake .NewClientBuilder ().Build (), decoder , mockCheckerFactory ( checker ) )
477
486
478
487
ctx := context .Background ()
479
488
ctx , cancel := context .WithCancel (ctx )
@@ -523,14 +532,14 @@ func TestRun_NoCheckers(t *testing.T) {
523
532
func TestRun_SingleCheckerSingleCheck (t * testing.T ) {
524
533
ctx := context .Background ()
525
534
checker := & mockChecker {
526
- name : "checker1" ,
527
535
checks : []Check {
528
536
func (ctx context.Context ) CheckResult {
529
537
return CheckResult {Name : "check1" , Allowed : true }
530
538
},
531
539
},
532
540
}
533
- resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []Checker {checker })
541
+ factory := mockCheckerFactory (checker )
542
+ resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []CheckerFactory {factory })
534
543
if len (resultsOrderedByCheckerAndCheck ) != 1 {
535
544
t .Fatalf ("expected results for 1 checker, got %d" , len (resultsOrderedByCheckerAndCheck ))
536
545
}
@@ -546,7 +555,6 @@ func TestRun_SingleCheckerSingleCheck(t *testing.T) {
546
555
func TestRun_MultipleCheckersMultipleChecks (t * testing.T ) {
547
556
ctx := context .Background ()
548
557
checker1 := & mockChecker {
549
- name : "checker1" ,
550
558
checks : []Check {
551
559
func (ctx context.Context ) CheckResult {
552
560
return CheckResult {Name : "c1-check1" , Allowed : true }
@@ -557,14 +565,17 @@ func TestRun_MultipleCheckersMultipleChecks(t *testing.T) {
557
565
},
558
566
}
559
567
checker2 := & mockChecker {
560
- name : "checker2" ,
561
568
checks : []Check {
562
569
func (ctx context.Context ) CheckResult {
563
570
return CheckResult {Name : "c2-check1" , Error : true }
564
571
},
565
572
},
566
573
}
567
- resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []Checker {checker1 , checker2 })
574
+ factories := []CheckerFactory {
575
+ mockCheckerFactory (checker1 ),
576
+ mockCheckerFactory (checker2 ),
577
+ }
578
+ resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , factories )
568
579
if len (resultsOrderedByCheckerAndCheck ) != 2 {
569
580
t .Fatalf ("expected results for 2 checkers, got %d" , len (resultsOrderedByCheckerAndCheck ))
570
581
}
@@ -586,7 +597,6 @@ func TestRun_ChecksRunInParallel(t *testing.T) {
586
597
var mu sync.Mutex
587
598
order := []string {}
588
599
checker := & mockChecker {
589
- name : "checker" ,
590
600
checks : []Check {
591
601
func (ctx context.Context ) CheckResult {
592
602
time .Sleep (50 * time .Millisecond )
@@ -603,7 +613,8 @@ func TestRun_ChecksRunInParallel(t *testing.T) {
603
613
},
604
614
},
605
615
}
606
- resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []Checker {checker })
616
+ factory := mockCheckerFactory (checker )
617
+ resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []CheckerFactory {factory })
607
618
608
619
results := resultsOrderedByCheckerAndCheck [0 ]
609
620
if len (results ) != 2 {
@@ -620,7 +631,6 @@ func TestRun_CheckersRunInParallel(t *testing.T) {
620
631
var mu sync.Mutex
621
632
order := []string {}
622
633
checker1 := & mockChecker {
623
- name : "checker1" ,
624
634
checks : []Check {
625
635
func (ctx context.Context ) CheckResult {
626
636
time .Sleep (50 * time .Millisecond )
@@ -632,7 +642,6 @@ func TestRun_CheckersRunInParallel(t *testing.T) {
632
642
},
633
643
}
634
644
checker2 := & mockChecker {
635
- name : "checker2" ,
636
645
checks : []Check {
637
646
func (ctx context.Context ) CheckResult {
638
647
mu .Lock ()
@@ -642,7 +651,11 @@ func TestRun_CheckersRunInParallel(t *testing.T) {
642
651
},
643
652
},
644
653
}
645
- results := run (ctx , nil , nil , []Checker {checker1 , checker2 })
654
+ factories := []CheckerFactory {
655
+ mockCheckerFactory (checker1 ),
656
+ mockCheckerFactory (checker2 ),
657
+ }
658
+ results := run (ctx , nil , nil , factories )
646
659
if len (results ) != 2 {
647
660
t .Fatalf ("expected 2 results, got %d" , len (results ))
648
661
}
@@ -660,7 +673,6 @@ func TestRun_ContextCancellation(t *testing.T) {
660
673
completed := make (chan struct {})
661
674
662
675
checker := & mockChecker {
663
- name : "checker" ,
664
676
checks : []Check {
665
677
func (ctx context.Context ) CheckResult {
666
678
close (started )
@@ -680,7 +692,8 @@ func TestRun_ContextCancellation(t *testing.T) {
680
692
cancel ()
681
693
}()
682
694
683
- resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []Checker {checker })
695
+ factory := mockCheckerFactory (checker )
696
+ resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []CheckerFactory {factory })
684
697
if len (resultsOrderedByCheckerAndCheck ) != 1 {
685
698
t .Fatalf ("expected results for 1 checker, got %d" , len (resultsOrderedByCheckerAndCheck ))
686
699
}
@@ -705,7 +718,6 @@ func TestRun_OrderOfResults(t *testing.T) {
705
718
ctx := context .Background ()
706
719
707
720
checker1 := & mockChecker {
708
- name : "checker1" ,
709
721
checks : []Check {
710
722
func (ctx context.Context ) CheckResult {
711
723
time .Sleep (30 * time .Millisecond )
@@ -719,7 +731,6 @@ func TestRun_OrderOfResults(t *testing.T) {
719
731
}
720
732
721
733
checker2 := & mockChecker {
722
- name : "checker2" ,
723
734
checks : []Check {
724
735
func (ctx context.Context ) CheckResult {
725
736
return CheckResult {Name : "c2-check1" }
@@ -731,7 +742,11 @@ func TestRun_OrderOfResults(t *testing.T) {
731
742
},
732
743
}
733
744
734
- resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []Checker {checker1 , checker2 })
745
+ factories := []CheckerFactory {
746
+ mockCheckerFactory (checker1 ),
747
+ mockCheckerFactory (checker2 ),
748
+ }
749
+ resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , factories )
735
750
if len (resultsOrderedByCheckerAndCheck ) != 2 {
736
751
t .Fatalf ("expected results for 2 checkers, got %d" , len (resultsOrderedByCheckerAndCheck ))
737
752
}
@@ -772,13 +787,17 @@ func TestRun_LargeNumberOfCheckersAndChecks(t *testing.T) {
772
787
}
773
788
}
774
789
checkers [i ] = & mockChecker {
775
- name : fmt .Sprintf ("checker%d" , i ),
776
790
checks : checks ,
777
791
}
778
792
}
779
793
794
+ factories := make ([]CheckerFactory , checkerCount )
795
+ for i , checker := range checkers {
796
+ factories [i ] = mockCheckerFactory (checker )
797
+ }
798
+
780
799
start := time .Now ()
781
- resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , checkers )
800
+ resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , factories )
782
801
duration := time .Since (start )
783
802
784
803
resultTotal := 0
@@ -812,7 +831,6 @@ func TestRun_ErrorHandlingInChecks(t *testing.T) {
812
831
}
813
832
814
833
checker := & mockChecker {
815
- name : "error-checker" ,
816
834
checks : []Check {
817
835
safeCheck ,
818
836
func (ctx context.Context ) CheckResult {
@@ -821,7 +839,8 @@ func TestRun_ErrorHandlingInChecks(t *testing.T) {
821
839
},
822
840
}
823
841
824
- resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []Checker {checker })
842
+ factory := mockCheckerFactory (checker )
843
+ resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []CheckerFactory {factory })
825
844
826
845
if len (resultsOrderedByCheckerAndCheck ) != 1 {
827
846
t .Fatalf ("expected results for 1 checker, got %d" , len (resultsOrderedByCheckerAndCheck ))
@@ -853,21 +872,23 @@ func TestRun_ZeroChecksFromChecker(t *testing.T) {
853
872
854
873
// Checker that returns no checks
855
874
emptyChecker := & mockChecker {
856
- name : "empty-checker" ,
857
875
checks : []Check {},
858
876
}
859
877
860
878
// Checker that returns some checks
861
879
normalChecker := & mockChecker {
862
- name : "normal-checker" ,
863
880
checks : []Check {
864
881
func (ctx context.Context ) CheckResult {
865
882
return CheckResult {Name : "check1" , Allowed : true }
866
883
},
867
884
},
868
885
}
869
886
870
- resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , []Checker {emptyChecker , normalChecker })
887
+ factories := []CheckerFactory {
888
+ mockCheckerFactory (emptyChecker ),
889
+ mockCheckerFactory (normalChecker ),
890
+ }
891
+ resultsOrderedByCheckerAndCheck := run (ctx , nil , nil , factories )
871
892
872
893
if len (resultsOrderedByCheckerAndCheck ) != 2 {
873
894
t .Fatalf ("expected results for 2 checkers, got %d" , len (resultsOrderedByCheckerAndCheck ))
0 commit comments