@@ -10,6 +10,7 @@ import { PublicHostedZone } from '@aws-cdk/aws-route53';
1010import * as cloudmap from '@aws-cdk/aws-servicediscovery' ;
1111import { testLegacyBehavior } from '@aws-cdk/cdk-build-tools' ;
1212import * as cdk from '@aws-cdk/core' ;
13+ import { Duration } from '@aws-cdk/core' ;
1314import * as cxapi from '@aws-cdk/cx-api' ;
1415import * as ecsPatterns from '../../lib' ;
1516
@@ -811,6 +812,121 @@ test('errors when setting HTTPS protocol but not domain name', () => {
811812 } ) . toThrow ( ) ;
812813} ) ;
813814
815+ test ( 'errors when idleTimeout is over 4000 seconds' , ( ) => {
816+ // GIVEN
817+ const stack = new cdk . Stack ( ) ;
818+ const vpc = new ec2 . Vpc ( stack , 'VPC' ) ;
819+ const cluster = new ecs . Cluster ( stack , 'Cluster' , { vpc } ) ;
820+
821+ // THEN
822+ expect ( ( ) => {
823+ new ecsPatterns . ApplicationLoadBalancedFargateService ( stack , 'Service' , {
824+ cluster,
825+ taskImageOptions : {
826+ image : ecs . ContainerImage . fromRegistry ( 'test' ) ,
827+ enableLogging : false ,
828+ environment : {
829+ TEST_ENVIRONMENT_VARIABLE1 : 'test environment variable 1 value' ,
830+ TEST_ENVIRONMENT_VARIABLE2 : 'test environment variable 2 value' ,
831+ } ,
832+ logDriver : new ecs . AwsLogDriver ( {
833+ streamPrefix : 'TestStream' ,
834+ } ) ,
835+ } ,
836+ idleTimeout : Duration . seconds ( 5000 ) ,
837+ desiredCount : 2 ,
838+ } ) ;
839+ } ) . toThrowError ( ) ;
840+ } ) ;
841+
842+ test ( 'errors when idleTimeout is under 1 seconds' , ( ) => {
843+ // GIVEN
844+ const stack = new cdk . Stack ( ) ;
845+ const vpc = new ec2 . Vpc ( stack , 'VPC' ) ;
846+ const cluster = new ecs . Cluster ( stack , 'Cluster' , { vpc } ) ;
847+
848+ // THEN
849+ expect ( ( ) => {
850+ new ecsPatterns . ApplicationLoadBalancedFargateService ( stack , 'Service' , {
851+ cluster,
852+ taskImageOptions : {
853+ image : ecs . ContainerImage . fromRegistry ( 'test' ) ,
854+ enableLogging : false ,
855+ environment : {
856+ TEST_ENVIRONMENT_VARIABLE1 : 'test environment variable 1 value' ,
857+ TEST_ENVIRONMENT_VARIABLE2 : 'test environment variable 2 value' ,
858+ } ,
859+ logDriver : new ecs . AwsLogDriver ( {
860+ streamPrefix : 'TestStream' ,
861+ } ) ,
862+ } ,
863+ idleTimeout : Duration . seconds ( 0 ) ,
864+ desiredCount : 2 ,
865+ } ) ;
866+ } ) . toThrowError ( ) ;
867+ } ) ;
868+
869+ test ( 'passes when idleTimeout is between 1 and 4000 seconds' , ( ) => {
870+ // GIVEN
871+ const stack = new cdk . Stack ( ) ;
872+ const vpc = new ec2 . Vpc ( stack , 'VPC' ) ;
873+ const cluster = new ecs . Cluster ( stack , 'Cluster' , { vpc } ) ;
874+
875+ // THEN
876+ expect ( ( ) => {
877+ new ecsPatterns . ApplicationLoadBalancedFargateService ( stack , 'Service' , {
878+ cluster,
879+ taskImageOptions : {
880+ image : ecs . ContainerImage . fromRegistry ( 'test' ) ,
881+ enableLogging : false ,
882+ environment : {
883+ TEST_ENVIRONMENT_VARIABLE1 : 'test environment variable 1 value' ,
884+ TEST_ENVIRONMENT_VARIABLE2 : 'test environment variable 2 value' ,
885+ } ,
886+ logDriver : new ecs . AwsLogDriver ( {
887+ streamPrefix : 'TestStream' ,
888+ } ) ,
889+ } ,
890+ idleTimeout : Duration . seconds ( 120 ) ,
891+ desiredCount : 2 ,
892+ } ) ;
893+ } ) . toBeTruthy ( ) ;
894+ } ) ;
895+
896+ test ( 'idletime is undefined when not set' , ( ) => {
897+ // GIVEN
898+ const stack = new cdk . Stack ( ) ;
899+ const vpc = new ec2 . Vpc ( stack , 'VPC' ) ;
900+ const cluster = new ecs . Cluster ( stack , 'Cluster' , { vpc } ) ;
901+
902+ // WHEN
903+ new ecsPatterns . ApplicationLoadBalancedFargateService ( stack , 'Service' , {
904+ cluster,
905+ taskImageOptions : {
906+ image : ecs . ContainerImage . fromRegistry ( 'test' ) ,
907+ enableLogging : false ,
908+ environment : {
909+ TEST_ENVIRONMENT_VARIABLE1 : 'test environment variable 1 value' ,
910+ TEST_ENVIRONMENT_VARIABLE2 : 'test environment variable 2 value' ,
911+ } ,
912+ logDriver : new ecs . AwsLogDriver ( {
913+ streamPrefix : 'TestStream' ,
914+ } ) ,
915+ } ,
916+ desiredCount : 2 ,
917+ } ) ;
918+
919+ // THEN - stack contains default LoadBalancer Attributes
920+ Template . fromStack ( stack ) . hasResourceProperties ( 'AWS::ElasticLoadBalancingV2::LoadBalancer' , {
921+ LoadBalancerAttributes : [
922+ {
923+ Key : 'deletion_protection.enabled' ,
924+ Value : 'false' ,
925+ } ,
926+ ] ,
927+ } ) ;
928+ } ) ;
929+
814930test ( 'test Fargate loadbalanced construct with optional log driver input' , ( ) => {
815931 // GIVEN
816932 const stack = new cdk . Stack ( ) ;
0 commit comments