Skip to content

Commit

Permalink
Update v3.0.0
Browse files Browse the repository at this point in the history
Update v3.0.0
  • Loading branch information
G-Lenz authored Aug 25, 2022
1 parent c30345c commit f616d63
Show file tree
Hide file tree
Showing 132 changed files with 20,926 additions and 9,630 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ assignees: ''
- [ ] Region: [e.g. us-east-1]
- [ ] Was the solution modified from the version published on this repository?
- [ ] If the answer to the previous question was yes, are the changes available on GitHub?
- [ ] Have you checked your [service quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) for the sevices this solution uses?
- [ ] Have you checked your [service quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) for the services this solution uses?
- [ ] Were there any errors in the CloudWatch Logs?

**Screenshots**
Expand Down
43 changes: 39 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,45 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.0.2] - 2022-03-31
## [3.0.0] - 2022-08-24

⚠ BREAKING CHANGES
Version 3.0.0 does not support upgrading from previous versions.

### Added

- Merge [#71](https://github.com/aws-solutions/distributed-load-testing-on-aws/pull/71) by [@pyranja](https://github.com/pyranja)
- Multi-region load test support
- Template for secondary regions
- Menu option for region management
- Region selection in test creation
- Results viewable by region
- Real time data on UI for running tests
- Upload bzt log, as well as jmeter log, out, and err logs to S3
- Link to S3 test results in the test details
- Logging for failed tasks

### Changed

- History moved to separate table
- History view moved to modal rather than separate link
- Updated to CDK V2

### Fixed

- Bug fix for long running containers by adding timeout to sockets
- Bug fix port issues by handing SIGTERM properly
- Bug fix for graceful failure when leader task fails
- Bug fix for tasks which launched but failed to provision

### Removed

- Sleep between runTask API calls

## [2.0.2] - 2022-03-31

### Added

- Enabled encryption in transit for the logging S3 bucket.

## [2.0.1] - 2021-12-13
Expand Down Expand Up @@ -109,9 +144,9 @@ Version 2.0.0 does not support upgrading from previous versions.
- JMeter input file support and plugins support
- JMeter input files should be zipped with the JMeter script file.
- Add `jetty-*.jar` files to the Amazon ECR to support JMeter HTTP/2 plugin:
- https://github.com/Blazemeter/jmeter-http2-plugin
- https://stackoverflow.com/questions/62714281/http-2-request-with-jmeter-fails-with-nullsession-jetty-alpn
- https://webtide.com/jetty-alpn-java-8u252/
- <https://github.com/Blazemeter/jmeter-http2-plugin>
- <https://stackoverflow.com/questions/62714281/http-2-request-with-jmeter-fails-with-nullsession-jetty-alpn>
- <https://webtide.com/jetty-alpn-java-8u252/>
- See the latest `jetty-*.jar` files in the [Maven repository](https://mvnrepository.com/):
- [jetty-alpn-client](https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-alpn-client)
- [jetty-alpn-openjdk8-client](https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-alpn-openjdk8-client)
Expand Down
25 changes: 19 additions & 6 deletions NOTICE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,45 @@ THIRD PARTY COMPONENTS
**********************
This software includes third party software subject to the following copyrights:

@fortawesome/fontawesome-svg-core under the Massachusetts Institute of Technology (MIT) license
@fortawesome/free-brands-svg-icons under the Creative Commons Attribution 4.0 International license and the Massachusetts Institute of Technology (MIT) license
@fortawesome/free-solid-svg-icons under the Creative Commons Attribution 4.0 International license and the Massachusetts Institute of Technology (MIT) license
@fortawesome/react-fontawesome under the Massachusetts Institute of Technology (MIT) license
aws-sdk under the Apache License Version 2.0
@aws-amplify/pubsub under the Apache License 2.0
@aws-amplify/ui-components under the Apache License 2.0
@aws-amplify/ui-react under the Apache License 2.0
@aws-cdk/assert under the Apache License 2.0
@aws-solutions-constructs/aws-cloudfront-s3 under the Apache License 2.0
@types/jest under the Massachusetts Institute of Technology (MIT) License
@types/node under the Massachusetts Institute of Technology (MIT) License
aws-amplify under the Apache License Version 2.0
aws-cdk under the Apache License Version 2.0
aws-cdk-lib under the Apache License 2.0
aws-sdk under the Apache License Version 2.0
axios under the Massachusetts Institute of Technology (MIT) license
axios-mock-adapter under the Massachusetts Institute of Technology (MIT) license
bootstrap under the Massachusetts Institute of Technology (MIT) license
bootstrap-icons under the Massachusetts Institute of Technology (MIT) license
brace under the Massachusetts Institute of Technology (MIT) license
chart.js under the Massachusetts Institute of Technology (MIT) license
chartjs-adapter-moment under the Massachusetts Institute of Technology (MIT) license
constructs under the Apache License 2.0
false under the Apache License Version 2.0
jest under the Massachusetts Institute of Technology (MIT) license
jetty-alpn-client under the Apache License Version 2.0 and the Eclipse Public License 1.0
jetty-alpn-openjdk8-client under the Apache License Version 2.0 and the Eclipse Public License 1.0
jetty-client under the Apache License Version 2.0 and the Eclipse Public License 1.0
jetty-http under the Apache License Version 2.0 and the Eclipse Public License 1.0
jetty-io under the Apache License Version 2.0 and the Eclipse Public License 1.0
jetty-util under the Apache License Version 2.0 and the Eclipse Public License 1.0
js-yaml under the Massachusetts Institute of Technology (MIT) license
moment under the Massachusetts Institute of Technology (MIT) license
react under the Massachusetts Institute of Technology (MIT) license
react-ace under the Massachusetts Institute of Technology (MIT) license
react-dom under the Massachusetts Institute of Technology (MIT) license
react-router-dom under the Massachusetts Institute of Technology (MIT) license
react-router-hash-link under the Massachusetts Institute of Technology (MIT) license
react-scripts under the Massachusetts Institute of Technology (MIT) license
reactstrap under the Massachusetts Institute of Technology (MIT) license
nanoid under the Massachusetts Institute of Technology (MIT) license
taurus under the Apache License Version 2.0
ts-jest under the Massachusetts Institute of Technology (MIT) License
ts-node under the Massachusetts Institute of Technology (MIT) License
typescript under the Apache License 2.0
uuid under the Massachusetts Institute of Technology (MIT) license
xml-js under the Massachusetts Institute of Technology (MIT) license
51 changes: 31 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Distributed Load Testing on AWS

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

## On this Page

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

## Deployment

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/)
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)

## Source Code

Expand All @@ -26,11 +26,22 @@ A NodeJS Lambda function for the API microservices. Integrated with Amazon API G
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.

**source/custom-resource**<br/>
A NodeJS Lambda function used as a CloudFormation custom resource for configuring Amazon S3 bucket notifications and to send anonymous metrics.
A NodeJS Lambda function used as a CloudFormation custom resource for sending anonymous metrics, configuration for regional testing infrastructure, and iot configuration.

**source/infrastructure**<br/>
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.

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.

**source/real-time-data-publisher**<br/>
A NodeJS Lambda function used to publish the real time load test data to an IoT topic.

**source/results-parser**<br/>
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.

**source/solution-utils**<br/>
A NodeJS package that contains commonly used functionality that is imported by other packages in this solution.

**source/task-canceler**<br/>
A NodeJS Lambda function used to stop tasks for a test that has been cancelled.

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

### Prerequisites

* Node.js 14.x or later
- Node.js 14.x or later
- 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.

### Running unit tests for customization

* Clone the repository and make the desired code changes.
- Clone the repository and make the desired code changes.

```bash
git clone https://github.com/aws-solutions/distributed-load-testing-on-aws.git
cd distributed-load-testing-on-aws
export BASE_DIRECTORY=$PWD
```

* Run unit tests to make sure the updates pass the tests.
- Run unit tests to make sure the updates pass the tests.

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

### Building distributable for customization

* Configure the environment variables.
- Configure the environment variables.

```bash
export DIST_BUCKET_PREFIX=my-bucket-name # bucket where customized code will reside
export REGION=aws-region-code # the AWS region to launch the solution (e.g. us-east-1)
export BUCKET_PREFIX=my-bucket-name # prefix of the bucket name without the region code
export BUCKET_NAME=$BUCKET_PREFIX-$REGION # full bucket name where the code will reside
export SOLUTION_NAME=my-solution-name
export VERSION=my-version # version number for the customized code
export REGION=aws-region-code # the AWS region to launch the solution (e.g. us-east-1)
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
export PUBLIC_ECR_TAG=v2.0 # replace with the container image tag if you want to use a different container image
export PUBLIC_ECR_TAG=v3.0.0 # replace with the container image tag if you want to use a different container image
```

> **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.
* Build the distributable.
- Build the distributable.

```bash
cd $BASE_DIRECTORY/deployment
chmod +x ./build-s3-dist.sh
./build-s3-dist.sh $DIST_BUCKET_PREFIX $SOLUTION_NAME $VERSION
./build-s3-dist.sh $BUCKET_PREFIX $SOLUTION_NAME $VERSION
```

> **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).
> **Note**: The _build-s3-dist_ script expects the bucket name **without the region suffix** as one of its parameters.
* Deploy the distributable to the Amazon S3 bucket in your account.
- Deploy the distributable to the Amazon S3 bucket in your account.
- Make sure you are uploading the files in `deployment/global-s3-assets` and `deployment/regional-s3-assets` to `$BUCKET_NAME/$SOLUTION_NAME/$VERSION`.

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

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

## Creating a custom container build

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

Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.<br />
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: Apache-2.0
Binary file modified architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit f616d63

Please sign in to comment.