@@ -24,6 +24,12 @@ type TGReconcileCall struct {
24
24
Err error
25
25
}
26
26
27
+ type GetTargetGroupsByLoadBalancerCall struct {
28
+ LbArn string
29
+ TargetGroups []* elbv2.TargetGroup
30
+ Err error
31
+ }
32
+
27
33
type DeleteTargetGroupByArnCall struct {
28
34
Arn string
29
35
Err error
@@ -527,12 +533,13 @@ func TestDefaultGroupController_Reconcile(t *testing.T) {
527
533
}
528
534
529
535
func TestDefaultGroupController_GC (t * testing.T ) {
536
+ lbArn := "lbArn"
530
537
for _ , tc := range []struct {
531
- Name string
532
- TGGroup TargetGroupGroup
533
- CurrentTargetGroups [] * elbv2. TargetGroup
534
- DeleteTargetGroupByArnCalls []DeleteTargetGroupByArnCall
535
- ExpectedError error
538
+ Name string
539
+ TGGroup TargetGroupGroup
540
+ GetTargetGroupsByLoadBalancerCall * GetTargetGroupsByLoadBalancerCall
541
+ DeleteTargetGroupByArnCalls []DeleteTargetGroupByArnCall
542
+ ExpectedError error
536
543
}{
537
544
{
538
545
Name : "GC succeeds" ,
@@ -544,10 +551,13 @@ func TestDefaultGroupController_GC(t *testing.T) {
544
551
}: {Arn : "arn1" },
545
552
},
546
553
},
547
- CurrentTargetGroups : []* elbv2.TargetGroup {
548
- {TargetGroupArn : aws .String ("arn1" )},
549
- {TargetGroupArn : aws .String ("arn2" )},
550
- {TargetGroupArn : aws .String ("arn3" )},
554
+ GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
555
+ LbArn : lbArn ,
556
+ TargetGroups : []* elbv2.TargetGroup {
557
+ {TargetGroupArn : aws .String ("arn1" )},
558
+ {TargetGroupArn : aws .String ("arn2" )},
559
+ {TargetGroupArn : aws .String ("arn3" )},
560
+ },
551
561
},
552
562
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
553
563
{
@@ -569,17 +579,36 @@ func TestDefaultGroupController_GC(t *testing.T) {
569
579
},
570
580
externalTGARNs : []string {"arn3" },
571
581
},
572
- CurrentTargetGroups : []* elbv2.TargetGroup {
573
- {TargetGroupArn : aws .String ("arn1" )},
574
- {TargetGroupArn : aws .String ("arn2" )},
575
- {TargetGroupArn : aws .String ("arn3" )},
582
+ GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
583
+ LbArn : lbArn ,
584
+ TargetGroups : []* elbv2.TargetGroup {
585
+ {TargetGroupArn : aws .String ("arn1" )},
586
+ {TargetGroupArn : aws .String ("arn2" )},
587
+ {TargetGroupArn : aws .String ("arn3" )},
588
+ },
576
589
},
577
590
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
578
591
{
579
592
Arn : "arn2" ,
580
593
},
581
594
},
582
595
},
596
+ {
597
+ Name : "GC failed when fetch current targetGroups" ,
598
+ TGGroup : TargetGroupGroup {
599
+ TGByBackend : map [extensions.IngressBackend ]TargetGroup {
600
+ {
601
+ ServiceName : "service1" ,
602
+ ServicePort : intstr .FromInt (80 ),
603
+ }: {Arn : "arn1" },
604
+ },
605
+ },
606
+ GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
607
+ LbArn : lbArn ,
608
+ Err : errors .New ("GetTargetGroupsByLbArn" ),
609
+ },
610
+ ExpectedError : errors .New ("failed to get targetGroups due to GetTargetGroupsByLbArn" ),
611
+ },
583
612
{
584
613
Name : "GC failed when deleting targetGroup" ,
585
614
TGGroup : TargetGroupGroup {
@@ -590,10 +619,13 @@ func TestDefaultGroupController_GC(t *testing.T) {
590
619
}: {Arn : "arn1" },
591
620
},
592
621
},
593
- CurrentTargetGroups : []* elbv2.TargetGroup {
594
- {TargetGroupArn : aws .String ("arn1" )},
595
- {TargetGroupArn : aws .String ("arn2" )},
596
- {TargetGroupArn : aws .String ("arn3" )},
622
+ GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
623
+ LbArn : lbArn ,
624
+ TargetGroups : []* elbv2.TargetGroup {
625
+ {TargetGroupArn : aws .String ("arn1" )},
626
+ {TargetGroupArn : aws .String ("arn2" )},
627
+ {TargetGroupArn : aws .String ("arn3" )},
628
+ },
597
629
},
598
630
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
599
631
{
@@ -606,6 +638,9 @@ func TestDefaultGroupController_GC(t *testing.T) {
606
638
} {
607
639
ctx := context .Background ()
608
640
cloud := & mocks.CloudAPI {}
641
+ if tc .GetTargetGroupsByLoadBalancerCall != nil {
642
+ cloud .On ("GetTargetGroupsByLbArn" , ctx , lbArn ).Return (tc .GetTargetGroupsByLoadBalancerCall .TargetGroups , tc .GetTargetGroupsByLoadBalancerCall .Err )
643
+ }
609
644
610
645
for _ , call := range tc .DeleteTargetGroupByArnCalls {
611
646
cloud .On ("DeleteTargetGroupByArn" , ctx , call .Arn ).Return (call .Err )
@@ -622,7 +657,7 @@ func TestDefaultGroupController_GC(t *testing.T) {
622
657
tgController : mockTGController ,
623
658
}
624
659
625
- err := controller .GC (context .Background (), tc . CurrentTargetGroups , tc .TGGroup )
660
+ err := controller .GC (context .Background (), lbArn , tc .TGGroup )
626
661
assert .Equal (t , tc .ExpectedError , err )
627
662
cloud .AssertExpectations (t )
628
663
mockNameTagGen .AssertExpectations (t )
@@ -631,18 +666,22 @@ func TestDefaultGroupController_GC(t *testing.T) {
631
666
}
632
667
633
668
func TestDefaultGroupController_Delete (t * testing.T ) {
669
+ lbArn := "lbArn"
634
670
for _ , tc := range []struct {
635
- Name string
636
- CurrentTargetGroups [] * elbv2. TargetGroup
637
- DeleteTargetGroupByArnCalls []DeleteTargetGroupByArnCall
638
- ExpectedError error
671
+ Name string
672
+ GetTargetGroupsByLoadBalancerCall * GetTargetGroupsByLoadBalancerCall
673
+ DeleteTargetGroupByArnCalls []DeleteTargetGroupByArnCall
674
+ ExpectedError error
639
675
}{
640
676
{
641
677
Name : "DELETE succeeds" ,
642
- CurrentTargetGroups : []* elbv2.TargetGroup {
643
- {TargetGroupArn : aws .String ("arn1" )},
644
- {TargetGroupArn : aws .String ("arn2" )},
645
- {TargetGroupArn : aws .String ("arn3" )},
678
+ GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
679
+ LbArn : lbArn ,
680
+ TargetGroups : []* elbv2.TargetGroup {
681
+ {TargetGroupArn : aws .String ("arn1" )},
682
+ {TargetGroupArn : aws .String ("arn2" )},
683
+ {TargetGroupArn : aws .String ("arn3" )},
684
+ },
646
685
},
647
686
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
648
687
{
@@ -656,12 +695,23 @@ func TestDefaultGroupController_Delete(t *testing.T) {
656
695
},
657
696
},
658
697
},
698
+ {
699
+ Name : "DELETE failed when fetch current targetGroups" ,
700
+ GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
701
+ LbArn : lbArn ,
702
+ Err : errors .New ("GetTargetGroupsByLbArn" ),
703
+ },
704
+ ExpectedError : errors .New ("failed to get targetGroups due to GetTargetGroupsByLbArn" ),
705
+ },
659
706
{
660
707
Name : "DELETE failed when deleting targetGroup" ,
661
- CurrentTargetGroups : []* elbv2.TargetGroup {
662
- {TargetGroupArn : aws .String ("arn1" )},
663
- {TargetGroupArn : aws .String ("arn2" )},
664
- {TargetGroupArn : aws .String ("arn3" )},
708
+ GetTargetGroupsByLoadBalancerCall : & GetTargetGroupsByLoadBalancerCall {
709
+ LbArn : lbArn ,
710
+ TargetGroups : []* elbv2.TargetGroup {
711
+ {TargetGroupArn : aws .String ("arn1" )},
712
+ {TargetGroupArn : aws .String ("arn2" )},
713
+ {TargetGroupArn : aws .String ("arn3" )},
714
+ },
665
715
},
666
716
DeleteTargetGroupByArnCalls : []DeleteTargetGroupByArnCall {
667
717
{
@@ -674,6 +724,9 @@ func TestDefaultGroupController_Delete(t *testing.T) {
674
724
} {
675
725
ctx := context .Background ()
676
726
cloud := & mocks.CloudAPI {}
727
+ if tc .GetTargetGroupsByLoadBalancerCall != nil {
728
+ cloud .On ("GetTargetGroupsByLbArn" , ctx , lbArn ).Return (tc .GetTargetGroupsByLoadBalancerCall .TargetGroups , tc .GetTargetGroupsByLoadBalancerCall .Err )
729
+ }
677
730
for _ , call := range tc .DeleteTargetGroupByArnCalls {
678
731
cloud .On ("DeleteTargetGroupByArn" , ctx , call .Arn ).Return (call .Err )
679
732
}
@@ -689,7 +742,7 @@ func TestDefaultGroupController_Delete(t *testing.T) {
689
742
tgController : mockTGController ,
690
743
}
691
744
692
- err := controller .Delete (context .Background (), tc . CurrentTargetGroups )
745
+ err := controller .Delete (context .Background (), lbArn )
693
746
assert .Equal (t , tc .ExpectedError , err )
694
747
cloud .AssertExpectations (t )
695
748
mockNameTagGen .AssertExpectations (t )
0 commit comments