Skip to content

Commit f616d63

Browse files
authored
Update v3.0.0
Update v3.0.0
1 parent c30345c commit f616d63

File tree

132 files changed

+20926
-9630
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+20926
-9630
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ assignees: ''
2121
- [ ] Region: [e.g. us-east-1]
2222
- [ ] Was the solution modified from the version published on this repository?
2323
- [ ] If the answer to the previous question was yes, are the changes available on GitHub?
24-
- [ ] Have you checked your [service quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) for the sevices this solution uses?
24+
- [ ] Have you checked your [service quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) for the services this solution uses?
2525
- [ ] Were there any errors in the CloudWatch Logs?
2626

2727
**Screenshots**

CHANGELOG.md

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,45 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [2.0.2] - 2022-03-31
8+
## [3.0.0] - 2022-08-24
9+
10+
⚠ BREAKING CHANGES
11+
Version 3.0.0 does not support upgrading from previous versions.
912

1013
### Added
1114

15+
- Merge [#71](https://github.com/aws-solutions/distributed-load-testing-on-aws/pull/71) by [@pyranja](https://github.com/pyranja)
16+
- Multi-region load test support
17+
- Template for secondary regions
18+
- Menu option for region management
19+
- Region selection in test creation
20+
- Results viewable by region
21+
- Real time data on UI for running tests
22+
- Upload bzt log, as well as jmeter log, out, and err logs to S3
23+
- Link to S3 test results in the test details
24+
- Logging for failed tasks
25+
26+
### Changed
27+
28+
- History moved to separate table
29+
- History view moved to modal rather than separate link
30+
- Updated to CDK V2
31+
32+
### Fixed
33+
34+
- Bug fix for long running containers by adding timeout to sockets
35+
- Bug fix port issues by handing SIGTERM properly
36+
- Bug fix for graceful failure when leader task fails
37+
- Bug fix for tasks which launched but failed to provision
38+
39+
### Removed
40+
41+
- Sleep between runTask API calls
42+
43+
## [2.0.2] - 2022-03-31
44+
45+
### Added
46+
1247
- Enabled encryption in transit for the logging S3 bucket.
1348

1449
## [2.0.1] - 2021-12-13
@@ -109,9 +144,9 @@ Version 2.0.0 does not support upgrading from previous versions.
109144
- JMeter input file support and plugins support
110145
- JMeter input files should be zipped with the JMeter script file.
111146
- Add `jetty-*.jar` files to the Amazon ECR to support JMeter HTTP/2 plugin:
112-
- https://github.com/Blazemeter/jmeter-http2-plugin
113-
- https://stackoverflow.com/questions/62714281/http-2-request-with-jmeter-fails-with-nullsession-jetty-alpn
114-
- https://webtide.com/jetty-alpn-java-8u252/
147+
- <https://github.com/Blazemeter/jmeter-http2-plugin>
148+
- <https://stackoverflow.com/questions/62714281/http-2-request-with-jmeter-fails-with-nullsession-jetty-alpn>
149+
- <https://webtide.com/jetty-alpn-java-8u252/>
115150
- See the latest `jetty-*.jar` files in the [Maven repository](https://mvnrepository.com/):
116151
- [jetty-alpn-client](https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-alpn-client)
117152
- [jetty-alpn-openjdk8-client](https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-alpn-openjdk8-client)

NOTICE.txt

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,45 @@ THIRD PARTY COMPONENTS
66
**********************
77
This software includes third party software subject to the following copyrights:
88

9-
@fortawesome/fontawesome-svg-core under the Massachusetts Institute of Technology (MIT) license
10-
@fortawesome/free-brands-svg-icons under the Creative Commons Attribution 4.0 International license and the Massachusetts Institute of Technology (MIT) license
11-
@fortawesome/free-solid-svg-icons under the Creative Commons Attribution 4.0 International license and the Massachusetts Institute of Technology (MIT) license
12-
@fortawesome/react-fontawesome under the Massachusetts Institute of Technology (MIT) license
13-
aws-sdk under the Apache License Version 2.0
9+
@aws-amplify/pubsub under the Apache License 2.0
10+
@aws-amplify/ui-components under the Apache License 2.0
11+
@aws-amplify/ui-react under the Apache License 2.0
12+
@aws-cdk/assert under the Apache License 2.0
13+
@aws-solutions-constructs/aws-cloudfront-s3 under the Apache License 2.0
14+
@types/jest under the Massachusetts Institute of Technology (MIT) License
15+
@types/node under the Massachusetts Institute of Technology (MIT) License
1416
aws-amplify under the Apache License Version 2.0
17+
aws-cdk under the Apache License Version 2.0
18+
aws-cdk-lib under the Apache License 2.0
19+
aws-sdk under the Apache License Version 2.0
1520
axios under the Massachusetts Institute of Technology (MIT) license
1621
axios-mock-adapter under the Massachusetts Institute of Technology (MIT) license
1722
bootstrap under the Massachusetts Institute of Technology (MIT) license
23+
bootstrap-icons under the Massachusetts Institute of Technology (MIT) license
1824
brace under the Massachusetts Institute of Technology (MIT) license
25+
chart.js under the Massachusetts Institute of Technology (MIT) license
26+
chartjs-adapter-moment under the Massachusetts Institute of Technology (MIT) license
27+
constructs under the Apache License 2.0
28+
false under the Apache License Version 2.0
1929
jest under the Massachusetts Institute of Technology (MIT) license
2030
jetty-alpn-client under the Apache License Version 2.0 and the Eclipse Public License 1.0
2131
jetty-alpn-openjdk8-client under the Apache License Version 2.0 and the Eclipse Public License 1.0
2232
jetty-client under the Apache License Version 2.0 and the Eclipse Public License 1.0
2333
jetty-http under the Apache License Version 2.0 and the Eclipse Public License 1.0
2434
jetty-io under the Apache License Version 2.0 and the Eclipse Public License 1.0
2535
jetty-util under the Apache License Version 2.0 and the Eclipse Public License 1.0
36+
js-yaml under the Massachusetts Institute of Technology (MIT) license
2637
moment under the Massachusetts Institute of Technology (MIT) license
2738
react under the Massachusetts Institute of Technology (MIT) license
2839
react-ace under the Massachusetts Institute of Technology (MIT) license
2940
react-dom under the Massachusetts Institute of Technology (MIT) license
3041
react-router-dom under the Massachusetts Institute of Technology (MIT) license
31-
react-router-hash-link under the Massachusetts Institute of Technology (MIT) license
3242
react-scripts under the Massachusetts Institute of Technology (MIT) license
3343
reactstrap under the Massachusetts Institute of Technology (MIT) license
3444
nanoid under the Massachusetts Institute of Technology (MIT) license
3545
taurus under the Apache License Version 2.0
46+
ts-jest under the Massachusetts Institute of Technology (MIT) License
47+
ts-node under the Massachusetts Institute of Technology (MIT) License
48+
typescript under the Apache License 2.0
3649
uuid under the Massachusetts Institute of Technology (MIT) license
3750
xml-js under the Massachusetts Institute of Technology (MIT) license

README.md

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Distributed Load Testing on AWS
22

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. 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.
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.
44

55
## On this Page
66

@@ -15,7 +15,7 @@ The Distributed Load Testing Solution leverages managed, highly available and hi
1515

1616
## Deployment
1717

18-
The solution is deployed using a CloudFormation template with a lambda backed custom resource. For details on deploying the solution please see the details on the solution home page: [Distributed Load Testing](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/)
18+
The solution is deployed using a CloudFormation template with a lambda backed custom resource. To simulate users from regions other than the region the solution is initially deployed in, a regional template must be deployed within the other desired regions. For details on deploying the solution please see the details on the solution implementation guide: [Distributed Load Testing](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/deployment.html)
1919

2020
## Source Code
2121

@@ -26,11 +26,22 @@ A NodeJS Lambda function for the API microservices. Integrated with Amazon API G
2626
ReactJS Single page application to provide a GUI to the solutions. Authenticated through Amazon Cognito this dashboard allows users to Create tests and view the final results.
2727

2828
**source/custom-resource**<br/>
29-
A NodeJS Lambda function used as a CloudFormation custom resource for configuring Amazon S3 bucket notifications and to send anonymous metrics.
29+
A NodeJS Lambda function used as a CloudFormation custom resource for sending anonymous metrics, configuration for regional testing infrastructure, and iot configuration.
30+
31+
**source/infrastructure**<br/>
32+
A Typescript [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/) [v2](https://docs.aws.amazon.com/cdk/v2/guide/home.html) package that defines the infrastructure resources to run the Distributed Load Testing on AWS solution.
33+
34+
It also uses the [AWS Solutions Constructs](https://aws.amazon.com/solutions/constructs/) [aws-cloudfront-s3](https://docs.aws.amazon.com/solutions/latest/constructs/aws-cloudfront-s3.html) package to define the CloudFront distribution and the S3 bucket that stores the content that makes up the UI.
35+
36+
**source/real-time-data-publisher**<br/>
37+
A NodeJS Lambda function used to publish the real time load test data to an IoT topic.
3038

3139
**source/results-parser**<br/>
3240
A NodeJS Lambda function used to write the xml output from the docker images to Amazon DynamoDB and generate the final results for each test.
3341

42+
**source/solution-utils**<br/>
43+
A NodeJS package that contains commonly used functionality that is imported by other packages in this solution.
44+
3445
**source/task-canceler**<br/>
3546
A NodeJS Lambda function used to stop tasks for a test that has been cancelled.
3647

@@ -48,19 +59,20 @@ To make changes to the solution, download or clone this repository, update the s
4859

4960
### Prerequisites
5061

51-
* Node.js 14.x or later
62+
- Node.js 14.x or later
63+
- S3 bucket that includes the AWS region as a suffix in the name. For example, `my-bucket-us-east-1`. The bucket and CloudFormation stack must be in the same region. The solution's CloudFormation template will expect the source code to be located in a bucket matching that name.
5264

5365
### Running unit tests for customization
5466

55-
* Clone the repository and make the desired code changes.
67+
- Clone the repository and make the desired code changes.
5668

5769
```bash
5870
git clone https://github.com/aws-solutions/distributed-load-testing-on-aws.git
5971
cd distributed-load-testing-on-aws
6072
export BASE_DIRECTORY=$PWD
6173
```
6274

63-
* Run unit tests to make sure the updates pass the tests.
75+
- Run unit tests to make sure the updates pass the tests.
6476

6577
```bash
6678
cd $BASE_DIRECTORY/deployment
@@ -70,35 +82,34 @@ chmod +x ./run-unit-tests.sh
7082

7183
### Building distributable for customization
7284

73-
* Configure the environment variables.
85+
- Configure the environment variables.
7486

7587
```bash
76-
export DIST_BUCKET_PREFIX=my-bucket-name # bucket where customized code will reside
88+
export REGION=aws-region-code # the AWS region to launch the solution (e.g. us-east-1)
89+
export BUCKET_PREFIX=my-bucket-name # prefix of the bucket name without the region code
90+
export BUCKET_NAME=$BUCKET_PREFIX-$REGION # full bucket name where the code will reside
7791
export SOLUTION_NAME=my-solution-name
7892
export VERSION=my-version # version number for the customized code
79-
export REGION=aws-region-code # the AWS region to launch the solution (e.g. us-east-1)
8093
export PUBLIC_ECR_REGISTRY=public.ecr.aws/awssolutions/distributed-load-testing-on-aws-load-tester # replace with the container registry and image if you want to use a different container image
81-
export PUBLIC_ECR_TAG=v2.0 # replace with the container image tag if you want to use a different container image
94+
export PUBLIC_ECR_TAG=v3.0.0 # replace with the container image tag if you want to use a different container image
8295
```
8396

84-
> **Note:** When you define `DIST_BUCKET_PREFIX`, a randomized value is recommended. You will need to create an S3 bucket where the name is `<DIST_BUCKET_PREFIX>-<REGION>`. The solution's CloudFormation template will expect the source code to be located in a bucket matching that name.
85-
86-
* Build the distributable.
97+
- Build the distributable.
8798

8899
```bash
89100
cd $BASE_DIRECTORY/deployment
90101
chmod +x ./build-s3-dist.sh
91-
./build-s3-dist.sh $DIST_BUCKET_PREFIX $SOLUTION_NAME $VERSION
102+
./build-s3-dist.sh $BUCKET_PREFIX $SOLUTION_NAME $VERSION
92103
```
93104

94-
> **Note**: The _build-s3-dist_ script expects the bucket name as one of its parameters, and this value should not include the region suffix. In addition to that, the version parameter will be used to tag the npm packages, and therefore should be in the [Semantic Versioning format](https://semver.org/spec/v2.0.0.html).
105+
> **Note**: The _build-s3-dist_ script expects the bucket name **without the region suffix** as one of its parameters.
95106
96-
* Deploy the distributable to the Amazon S3 bucket in your account.
107+
- Deploy the distributable to the Amazon S3 bucket in your account.
108+
- Make sure you are uploading the files in `deployment/global-s3-assets` and `deployment/regional-s3-assets` to `$BUCKET_NAME/$SOLUTION_NAME/$VERSION`.
97109

98-
* Make sure you are uploading the distributable to the `<DIST_BUCKET_PREFIX>-<REGION>` bucket.
99-
* Get the link of the solution template uploaded to your Amazon S3 bucket.
110+
- Get the link of the solution template uploaded to your Amazon S3 bucket.
100111

101-
* Deploy the solution to your account by launching a new AWS CloudFormation stack using the link of the solution template in Amazon S3.
112+
- Deploy the solution to your account by launching a new AWS CloudFormation stack using the link of the solution template in Amazon S3.
102113

103114
## Creating a custom container build
104115

@@ -111,4 +122,4 @@ This solution collects anonymous operational metrics to help AWS improve the qua
111122
***
112123

113124
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.<br />
114-
SPDX-License-Identifier: Apache-2.0
125+
SPDX-License-Identifier: Apache-2.0

architecture.png

-167 KB
Loading

0 commit comments

Comments
 (0)