You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+19Lines changed: 19 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [4.0.2] - 2025-12-09
9
+
10
+
### Changed
11
+
12
+
-`jetty-http` package has been reverted to a previous version to support [HTTP2](https://github.com/Blazemeter/jmeter-http2-plugin/blob/master/README.md) JMeter plugin.
13
+
- Improvements to cron-base scheduling with clarification between UTC and local time zones.
14
+
15
+
### Fixed
16
+
17
+
- Resolved issues related to zipped files when migrating from v3 for v4. Load tests created in v3 should now correctly reference the existing zip test script and be downloadable from the test scenario page.
18
+
- Fixed a bug where tags would not be saved when creating or updating a scheduled load test.
19
+
- Fixed a bug where non-integer http status code responses would fail to render in the results dashboard.
20
+
21
+
### Security
22
+
23
+
- Update to address vulnerability in [CVE-2025-66418](https://nvd.nist.gov/vuln/detail/CVE-2025-66418)
24
+
- Update to address vulnerability in [CVE-2025-66471](https://nvd.nist.gov/vuln/detail/CVE-2025-66471)
25
+
- Upgrade to the latest Amazon Linux base image SHA256 hash
Copy file name to clipboardExpand all lines: README.md
+40-15Lines changed: 40 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,14 @@
1
1
# Distributed Load Testing on AWS
2
2
3
-
The Distributed Load Testing Solution leverages managed, highly available and highly scalable AWS services to effortlessly create and simulate thousands of connected users generating a selected amount of transactions per second, originating from up to 5 simultaneous AWS regions. As a result, developers can understand the behavior of their applications at scale and at load to identify any bottleneck problems before they deploy to Production. [Launch in the AWS Console](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?&templateURL=https://solutions-reference.s3.amazonaws.com/distributed-load-testing-on-aws/latest/distributed-load-testing-on-aws.template&redirectId=GitHub)
3
+
Distributed Load Testing on AWS helps you automate performance testing of your software applications at scale to identify bottlenecks before you release your application. This solution simulates thousands of connected users generating HTTP requests at a sustained rate without the need to provision servers.
4
+
5
+
* Deploy Amazon ECS on AWS Fargate containers that run independently to test the load capacity of your application.
6
+
* Simulate tens of thousands of concurrent users across multiple AWS Regions generating requests at a continuous pace.
7
+
* Customize your application tests using [JMeter](https://jmeter.apache.org/), [K6](https://k6.io/), [Locust](https://locust.io/) test scripts, or simple HTTP endpoint configuration.
8
+
* Schedule load tests to run immediately, at a future date and time, or on a recurring schedule.
9
+
* Run multiple load tests concurrently across different scenarios and regions.
10
+
11
+
The intended audience for using this solution's features and capabilities in their environment includes IT infrastructure architects, administrators, and DevOps professionals who have practical experience architecting in the AWS Cloud. As a result, developers can understand the behavior of their applications at scale and at load to identify any bottleneck problems before they deploy to Production. [Launch in the AWS Console](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?&templateURL=https://solutions-reference.s3.amazonaws.com/distributed-load-testing-on-aws/latest/distributed-load-testing-on-aws.template&redirectId=GitHub)
4
12
5
13
## On this Page
6
14
@@ -15,35 +23,49 @@ The Distributed Load Testing Solution leverages managed, highly available and hi
15
23
16
24

17
25
18
-
The high-level process flow for the solution components deployed with the AWS CloudFormation template is as follows:
26
+
Deploying this solution with the default parameters deploys the following components in your AWS account.
27
+
28
+
> **Note**: AWS CloudFormation resources are created from AWS Cloud Development Kit (AWS CDK) constructs.
19
29
20
-
1. A distributed load tester API, which leverages [Amazon API Gateway](https://aws.amazon.com/api-gateway) to invoke the solution's microservices ([AWS Lambda](https://aws.amazon.com/lambda) functions).
30
+
The high-level process flow for the solution components deployed with the AWS CloudFormation template is as follows:
31
+
32
+
1. A distributed load tester API leverages [Amazon API Gateway](https://aws.amazon.com/api-gateway) to invoke the solution's microservices ([AWS Lambda](https://aws.amazon.com/lambda) functions).
21
33
22
34
2. The microservices provide the business logic to manage test data and run the tests.
23
35
24
-
3. These microservices interact with [Amazon Simple Storage Service](https://aws.amazon.com/s3) (Amazon S3), [Amazon DynamoDB](https://aws.amazon.com/dynamodb), and [AWS Step Functions](https://aws.amazon.com/step-functions) to provide storage for the test scenario details and results and run test scenarios.
36
+
3. These microservices interact with [Amazon Simple Storage Service](https://aws.amazon.com/s3) (Amazon S3), [Amazon DynamoDB](https://aws.amazon.com/dynamodb), and [AWS Step Functions](https://aws.amazon.com/step-functions) to store test scenario details and results and to orchestrate test execution.
37
+
38
+
4. An [Amazon Virtual Private Cloud](https://aws.amazon.com/vpc) (Amazon VPC) network topology deploys containing the solution's [Amazon Elastic Container Service](https://aws.amazon.com/ecs) (Amazon ECS) containers running on [AWS Fargate](https://aws.amazon.com/fargate).
25
39
26
-
4. An [Amazon Virtual Private Cloud](https://aws.amazon.com/vpc) (Amazon VPC) network topology is deployed containing the solution\'s [Amazon Elastic Container Service](https://aws.amazon.com/ecs) (Amazon ECS) containers running on [AWS Fargate](https://aws.amazon.com/fargate).
40
+
5. The containers use an [Amazon Linux 2023](https://aws.amazon.com/linux/amazon-linux-2023/) base image with the [Taurus](https://gettaurus.org/) load testing framework installed. Taurus is an open-source test automation framework that supports JMeter, K6, Locust, and other testing tools. The container image is [Open Container Initiative](https://opencontainers.org/) (OCI) compliant and hosted by AWS in an [Amazon Elastic Container Registry](https://aws.amazon.com/ecr) (Amazon ECR) public repository. For more information, refer to [Container image customization](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/container-image.html).
27
41
28
-
5. The containers include the [Amazon Linux 2023](https://aws.amazon.com/linux/amazon-linux-2023/) based [Open Container Initiative](https://opencontainers.org/) (OCI) compliant container image with the Taurus open-source test automation framework installed, which orchestrates load generation using Apache JMeter (default), K6, or Locust. The container image is hosted by AWS in an [Amazon Elastic Container Registry](https://aws.amazon.com/ecr) (Amazon ECR) public repository. For more information about the ECR image repository, refer to [Container image customization](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/container-image.html).
42
+
6. A web console powered by [AWS Amplify](https://aws.amazon.com/amplify) deploys into an S3 bucket configured for static web hosting.
29
43
30
-
6. A web console powered by [AWS Amplify](https://aws.amazon.com/amplify) is deployed it into an Amazon S3 bucket configured for static web hosting.
44
+
7.[Amazon CloudFront](https://aws.amazon.com/cloudfront) provides secure, public access to the solution's website bucket contents.
31
45
32
-
7.[Amazon CloudFront](https://aws.amazon.com/cloudfront) provides secure, public access to the solution\'s website bucket contents.
46
+
8. During initial configuration, the solution creates a default administrator role (IAM role) and sends an access invite to a customer-specified user email address.
33
47
34
-
8. During initial configuration, this solution also creates a default solution administrator role (IAM role) and sends an access invite to a customer-specified user email address.
48
+
9. An [Amazon Cognito](https://aws.amazon.com/cognito) user pool manages user access to the console, the distributed load tester API, and the MCP Server.
35
49
36
-
9. An [Amazon Cognito](https://aws.amazon.com/cognito) user pool manages user access to the console and the distributed load tester API.
50
+
10. After you deploy this solution, you can use the web console or APIs to create and run test scenarios that define a series of tasks.
37
51
38
-
10. After you deploy this solution, you can use the web console to create a test scenario that defines a series of tasks.
52
+
11. The microservices use this test scenario to run ECS tasks on Fargate in the specified Regions.
39
53
40
-
11. The microservices use this test scenario to run Amazon ECS on AWS Fargate tasks in the Regions specified.
54
+
12. When the test completes, the solution stores results in S3 and DynamoDB and logs output in [Amazon CloudWatch](https://aws.amazon.com/cloudwatch).
41
55
42
-
12. In addition to storing the results in Amazon S3 and DynamoDB, once the test is complete the output is logged in [Amazon CloudWatch](https://aws.amazon.com/cloudwatch).
56
+
13. If you enable the live data option, the solution sends CloudWatch logs from the Fargate tasks to a Lambda function during the test for each Region where the test runs.
43
57
44
-
13. If you select the live data option, the solution sends the Amazon CloudWatch logs for the AWS Fargate tasks to a Lambda function during the test, for each Region in which the test was run.
58
+
14. The Lambda function publishes the data to the corresponding topic in [AWS IoT Core](https://aws.amazon.com/iot-core) in the Region where the main stack was deployed. The web console subscribes to the topic and displays real-time data while the test runs.
45
59
46
-
14. The Lambda function then publishes the data to the corresponding topic in [AWS IoT Core](https://aws.amazon.com/iot-core) in the Region where the main stack was deployed. The web console subscribes to the topic, and you can see the data while the test runs in the web console.
60
+
### MCP Server Integration (Optional)
61
+
62
+
> **Note**: The following steps describe the optional MCP Server integration for AI-assisted load testing analysis. This component is only deployed if you select the MCP Server option during solution deployment.
63
+
64
+
15. An MCP client (AI development tool) connects to the [AWS AgentCore Gateway](https://aws.amazon.com/bedrock/agentcore/) endpoint to access the Distributed Load Testing solution's data through the Model Context Protocol. AgentCore Gateway validates the user's Cognito authentication token to ensure authorized access to the MCP server.
65
+
66
+
16. Upon successful authentication, AgentCore Gateway forwards the MCP tool request to the DLT MCP Server Lambda function. The Lambda function returns the structured data to AgentCore Gateway, which sends it back to the MCP client for AI-assisted analysis and insights.
67
+
68
+
17. The Lambda function processes the request and queries the appropriate AWS resources (DynamoDB tables, S3 buckets, or CloudWatch logs) to retrieve the requested load testing data.
47
69
48
70
## Deployment
49
71
@@ -96,6 +118,9 @@ A NodeJS Lambda function that checks if the Amazon ECS tasks are running or not.
96
118
**source/webui**<br/>
97
119
React-based single page application that provides the web console interface for the solution. Built with Cloudscape Design System, Redux for state management, and AWS Amplify for authentication. Authenticated through Amazon Cognito, this dashboard allows users to create tests and view results.
98
120
121
+
**source/mcp-server**<br/>
122
+
A TypeScript package that implements the Model Context Protocol (MCP) server for AI-assisted load testing analysis. Provides structured access to DLT data through AWS AgentCore Gateway.
123
+
99
124
## Local Development
100
125
101
126
For developers working on the solution locally, this section provides step-by-step instructions for setting up and deploying DLT from source code.
Copy file name to clipboardExpand all lines: deployment/ecr/distributed-load-testing-on-aws-load-tester/load-test.sh
+5-1Lines changed: 5 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -106,7 +106,11 @@ if [ "$TEST_TYPE" != "simple" ]; then
106
106
exit 1
107
107
fi
108
108
109
-
sed -i -e "s|$TEST_ID.zip|$TEST_SCRIPT|g" test.json
109
+
# Update test.json to reference the test script extracted from the zip.
110
+
# Prior to v4.0, zipped test scripts were stored with their framework's expected extension (e.g. JMeter zip would be ABCDE12345.jmx instead of ABCDE12345.zip).
111
+
# test.json may reference $TEST_ID.$EXT (legacy to support .jmx) or $TEST_ID.zip (current).
112
+
# The two sed replacements ensure either file name is correctly updated to the actual test script value.
113
+
sed -i -e "s|$TEST_ID.$EXT|$TEST_SCRIPT|g" -e "s|$TEST_ID.zip|$TEST_SCRIPT|g" test.json
110
114
111
115
# copy bundled plugin jars to jmeter extension folder to make them available to jmeter
112
116
BUNDLED_PLUGIN_DIR=`find $PWD -type d -name "plugins"| head -n 1`
0 commit comments