@@ -806,6 +806,85 @@ func TestGetMountOpts(t *testing.T) {
806806 }
807807}
808808
809+ func TestGetOverrides (t * testing.T ) {
810+ var (
811+ g = gomega .NewGomegaWithT (t )
812+ k = MockKubernetesClientSet ()
813+ ig = MockInstanceGroup ()
814+ configuration = ig .GetEKSConfiguration ()
815+ asgMock = NewAutoScalingMocker ()
816+ iamMock = NewIamMocker ()
817+ eksMock = NewEksMocker ()
818+ ec2Mock = NewEc2Mocker ()
819+ ssmMock = NewSsmMocker ()
820+ )
821+
822+ w := MockAwsWorker (asgMock , iamMock , eksMock , ec2Mock , ssmMock )
823+ ctx := MockContext (ig , k , w )
824+ state := ctx .GetDiscoveredState ()
825+
826+ instancePool := "SubFamilyFlexible"
827+
828+ tests := []struct {
829+ primaryType string
830+ scalingGroup * autoscaling.Group
831+ mixedInstancesSpec * v1alpha1.MixedInstancesPolicySpec
832+ expectedOverrides []* autoscaling.LaunchTemplateOverrides
833+ }{
834+ {
835+ primaryType : "m5.xlarge" ,
836+ scalingGroup : MockScalingGroup ("asg-1" , true ),
837+ mixedInstancesSpec : & v1alpha1.MixedInstancesPolicySpec {
838+ InstanceTypes : []* v1alpha1.InstanceTypeSpec {
839+ {
840+ Type : "m5a.xlarge" ,
841+ Weight : 1 ,
842+ },
843+ {
844+ Type : "m5g.xlarge" ,
845+ Weight : 1 ,
846+ },
847+ },
848+ },
849+ expectedOverrides : MockTemplateOverrides ("1" , "m5a.xlarge" , "m5g.xlarge" , "m5.xlarge" ),
850+ },
851+ {
852+ primaryType : "m5.xlarge" ,
853+ scalingGroup : MockScalingGroup ("asg-1" , true ),
854+ mixedInstancesSpec : & v1alpha1.MixedInstancesPolicySpec {
855+ InstancePool : & instancePool ,
856+ },
857+ expectedOverrides : MockTemplateOverrides ("1" , "m5.xlarge" ),
858+ },
859+ {
860+ primaryType : "t2.xlarge" ,
861+ scalingGroup : MockScalingGroup ("asg-1" , true ),
862+ mixedInstancesSpec : & v1alpha1.MixedInstancesPolicySpec {
863+ InstanceTypes : []* v1alpha1.InstanceTypeSpec {
864+ {
865+ Type : "t2a.xlarge" ,
866+ Weight : 1 ,
867+ },
868+ {
869+ Type : "t2g.xlarge" ,
870+ Weight : 1 ,
871+ },
872+ },
873+ },
874+ expectedOverrides : MockTemplateOverrides ("1" , "t2a.xlarge" , "t2g.xlarge" , "t2.xlarge" , "m5.xlarge" ),
875+ },
876+ }
877+
878+ for i , tc := range tests {
879+ t .Logf ("Test #%v - %+v" , i , tc .expectedOverrides )
880+ configuration .MixedInstancesPolicy = tc .mixedInstancesSpec
881+ state .ScalingGroup = tc .scalingGroup
882+ ig .Spec .EKSSpec .EKSConfiguration .InstanceType = tc .primaryType
883+ overrides := ctx .GetOverrides ()
884+ g .Expect (overrides ).To (gomega .ConsistOf (tc .expectedOverrides ))
885+ }
886+ }
887+
809888func TestGetUserDataStages (t * testing.T ) {
810889 var (
811890 g = gomega .NewGomegaWithT (t )
0 commit comments