A Performance test solution covering -
- A performance test framework built using Gatling with Java programming language and Maven build tool
- Enables distributed load testing by using Dockers on AWS ECS Clusters
- aws-cli
- Docker
- Maven >= 3.5
- Java >= 8
- Node >= 10.3.0
AWS SDK project for running the loadtest on AWS.
See README.md in project.
Contains AWS CDK project for creating needed infra for running loadtest on AWS.
See README.md in project.
Maven Gatling project containing loadtest code.
Contains Dockerfile to build image to run on AWS.
See README.md in project.
Build the gatling-tests
project, so it creates the required jars needed for the Docker image.
Build the gatling-infra
project before calling cdk deploy
. The cdk tooling will not compile the code.
Now deploy the infra from the gatling-infra
project:
VPC_ID=<id> REPORT_BUCKET=<bucket> cdk deploy GatlingMonitoringEcsStack --profile <profile>
VPC_ID=<id> REPORT_BUCKET=<bucket> cdk deploy GatlingRunnerEcsStack --profile <profile>
Now run the loadtest on AWS using the gatling-aws-test-runner
project:
AWS_PROFILE=<profile> VPC_ID=<id> REPORT_BUCKET=<bucket> CLUSTER=gatling-performance-test-cluster TASK_DEFINITION=gatling-tests SIMULATION=simulations.PostCode.PostCodeSimulation CONTAINERS=10 USERS=10 mvn clean compile exec:exec
When done with loadtesting the loadtest infra can easily be destroyed, saving on costs:
VPC_ID=<id> REPORT_BUCKET=<bucket> cdk destroy GatlingEcsStack --profile <profile>
Make sure the S3 bucket is empty before running cdk destroy
or it will fail since CloudFormation cannot delete S3 buckets that aren't empty.
When making changes to the Gatling code in the gatling-tests
project, don't forget to:
- build your
gatling-tests
project using Maven - and re-deploy your
GatlingEcsStack
fromgatling-infra
so AWS CDK will update your Docker image containing the Gatling code