Awesome
Load Effect
Description
Load Effect is a load testing API that allow you to write a custom script using the API-provided scripting language to simulate real user interactions up to scale.
Load Effect features script validation, domain validation through DNS TXT records and real-time analytics during load tests.
This application was built using React, Redux, Chartist.js, Node.js, express.js, sockets.io, MySQL, Zombie.js, docker, AWS, Digital Ocean, Travis CI, and Mocha/Chai.
Table of Contents
- Usage
- Getting Started
- API Documentation
- Deployment Documentation
- Master-Worker-Documentation
- Website Validation
- DNS Instructions
- How it works
- Core Team
- Contributing
- Licensing
Usage
-
Signup:
-
Create Scenario:
-
Scenarios Overview:
-
Verify website ownership with validation token:
-
Run Scenario:
Getting Started
Prerequisites
Installing Dependencies
From within the root directory:
npm install
Running The App
npm start
Testing
Run:
npm test
API Documentation
Deployment Documentation
Master-Worker Documentation
Master documentation
Worker documentation
Website Validation
DNS Instructions
In order to prevent using the API to perform DDOS attacks, you'll need to verify domain ownership through the use of DNS Text Records.
- Copy the validation token. It should start with "LoadEffect-""
- Log in to your domain, access your DNS settings, and look for an option to Add a New Record.
- Under the field Name/Host/Alias, enter '@'.
- Under Value/Answer/Destination, paste the validation token and save.
Here's an example of what it would look like for Namecheap:
Depending on your domain provider, it may take from 1 minute to a few days for the DNS Text record to provision. Once provisioned, click on the Unverified dropdown button and select Validate Your Site to run the validation check.
If the validation was successful, the button will turn green and you'll be able to run the test.
How The DNS Verification Works
Node has a DNS module built in, which has a number of helpful API's that can perform this lookup on the backend.
Example usage:
const dns = require('dns');
const app = require('express')();
const validateWebsite = (request, response) => {
dns.resolveTxt('anhtaihuynh.com', (err, results) => {
if (err) {
response.send(err);
throw err;
}
response.send(results); // Results is a 2D array of the DNS Text record values for the input url
});
}
app.get('/api/validate-site', validateWebsite);
Core Team
- Scrum Master: Felix Feng
- Product Owner: Tai Huynh
- Development Team Members: Bill Ramsey, Christian Haug, Felix Feng, Tai Huynh
Contributing
- Fork the repo.
- Clone it to your local computer
- Cut a namespaced feature branch from master and name it appropriately
- Make commits and prefix each commit with the type of work you were doing
- BEFORE PUSHING UP YOUR CHANGES, rebase upstream changes into your branch, fix any potential conflicts, and then push to your fork.
- Submit a pull request directly to the master
- Someone else will perform code review to keep codebase clean
- Fix any errors or issues raised by the reviewer and push the fixes as a single new commit
- Repeat until the pull request is merged.
See CONTRIBUTING.md for contribution guidelines in detail.
License
M.I.T