

GitHub - ddosify/ddosify: High-performance load testing tool, written in Golang.
source link: https://github.com/ddosify/ddosify
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Ddosify - High-performance load testing tool
Features
Protocol Agnostic - Currently supporting HTTP, HTTPS, HTTP/2. Other protocols are on the way.
Scenario-Based - Create your flow in a JSON file. Without a line of code!
Different Load Types - Test your system's limits across different load types.
Installation
ddosify
is available via Docker, Homebrew Tap, and downloadable pre-compiled binaries from the releases page for macOS, Linux and Windows.
Docker
docker run -it --rm ddosify/ddosify
Homebrew Tap (macOS and Linux)
brew install ddosify/tap/ddosify
apk, deb, rpm packages
# For Redhat based (Fedora, CentOS, RHEL, etc.) rpm -i https://github.com/ddosify/ddosify/releases/download/v0.1.1/ddosify_amd64.rpm # For Debian based (Ubuntu, Linux Mint, etc.) wget https://github.com/ddosify/ddosify/releases/download/v0.1.1/ddosify_amd64.deb dpkg -i ddosify_amd64.deb # For Alpine wget https://github.com/ddosify/ddosify/releases/download/v0.1.1/ddosify_amd64.apk apk add --allow-untrusted ddosify_amd64.apk
Using the convenience script (macOS and Linux)
- The script requires root or sudo privileges to move ddosify binary to
/usr/local/bin
. - The script attempts to detect your operating system (macOS or Linux) and architecture (arm64, x86, amd64) to download the appropriate binary from the releases page.
- By default, the script installs the latest version of
ddosify
. - If you have problems, check common issues
- Required packages:
curl
andsudo
curl -sSfL https://raw.githubusercontent.com/ddosify/ddosify/master/scripts/install.sh | sh
Go install from source (macOS, Linux, Windows)
go install -v go.ddosify.com/ddosify@latest
Easy Start
This section aims to show you how to use Ddosify without deep dive into its details easily.
-
Simple load test
ddosify -t target_site.com
The above command runs a load test with the default value that is 100 requests in 10 seconds.
-
Using some of the features
ddosify -t target_site.com -n 1000 -d 20 -p HTTPS -m PUT -T 7 -P http://proxy_server.com:80
Ddosify sends a total of 1000 PUT requests to https://target_site.com over proxy http://proxy_server.com:80 in 20 seconds with a timeout of 7 seconds per request.
-
Scenario based load test
ddosify -config config_examples/config.json
Ddosify first sends HTTP/2 POST request to https://test_site1.com/endpoint_1 using basic auth credentials test_user:12345 over proxy http://proxy_host.com:proxy_port and with a timeout of 3 seconds. Once the response is received, HTTPS GET request will be sent to https://test_site1.com/endpoint_2 along with the payload included in config_examples/payload.txt file with a timeout of 2 seconds. This flow will be repeated 20 times in 5 seconds and response will be written to stdout.
Details
You can configure your load test by the CLI options or a config file. Config file supports more features than the CLI. For example, you can't create a scenario-based load test with CLI options.
CLI Flags
ddosify [FLAG]
-t
Target website URL. Example: https://ddosify.com
string
-
Yes
-n
Total request count
int
100
No
-d
Test duration in seconds.
int
10
No
-p
Protocol of the request. Supported protocols are HTTP, HTTPS. HTTP/2 support is only available by using a config file as described. More protocols will be added.
string
HTTPS
No
-m
Request method. Available methods for HTTP(s) are GET, POST, PUT, DELETE, UPDATE, PATCH
string
GET
No
-b
The payload of the network packet. AKA body for the HTTP.
string
-
No
-a
Basic authentication. Usage: -a username:password
string
-
No
-h
Headers of the request. You can provide multiple headers with multiple -h
flag.
string
-
No
-T
Timeout of the request in seconds.
int
5
No
-P
Proxy address as host:port. -P http://user:pass@proxy_host.com:port'
string
-
No
-o
Test result output destination. Other output types will be added.
string
stdout
No
-l
Type of the load test. Ddosify supports 3 load types.
string
linear
No
-config
Config File of the load test.
string
-
No
-version
Prints version, git commit, built date (utc), go information and quit
-
-
No
Load Types
Linear
ddosify -t target_site.com -l linear
Result:
Note: If the request count is too low for the given duration, the test might be finished earlier than you expect.
Incremental
ddosify -t target_site.com -l incremental
Result:
Waved
ddosify -t target_site.com -l waved
Result:
Config File
Config file lets you use all capabilities of Ddosify.
The features you can use by config file;
- Scenario creation
- Payload from a file
- Extra connection configuration, like keep-alive enable/disable logic
- HTTP2 support
Usage;
ddosify -config <json_config_path>
There is an example config file at config_examples/config.json. This file contains all of the parameters you can use. Details of each parameter;
-
request_count
optionalThis is the equivalent of the
-n
flag. The difference is that if you have multiple steps in your scenario, this value represents the iteration count of the steps. -
load_type
optionalThis is the equivalent of the
-l
flag. -
duration
optionalThis is the equivalent of the
-d
flag. -
proxy
optionalThis is the equivalent of the
-P
flag. -
output
optionalThis is the equivalent of the
-o
flag. -
steps
mandatoryThis parameter lets you create your scenario. Ddosify runs the provided steps, respectively. For the given example file step id: 2 will be executed immediately after the response of step id: 1 is received. The order of the execution is the same as the order of the steps in the config file.
Details of each parameter for a step;
-
id
mandatoryEach step must have a unique integer id.
-
url
mandatoryThis is the equivalent of the
-t
flag. -
protocol
optionalThis is the equivalent of the
-p
flag. -
method
optionalThis is the equivalent of the
-m
flag. -
headers
optionalList of headers with key:value format.
-
payload
optionalThis is the equivalent of the
-b
flag. -
payload_file
optionalIf you need a long payload, we suggest using this parameter instead of
payload
. -
auth
optionalBasic authentication.
"auth": { "username": "test_user", "password": "12345" }
-
others
optionalThis parameter accepts dynamic key: value pairs to configure connection details of the protocol in use.
"others": { "keep-alive": true, // Default false "disable-compression": false, // Default true "h2": true, // Enables HTTP/2. Default false. "disable-redirect": true // Default false }
-
Common Issues
macOS Security Issue
"ddosify" can’t be opened because Apple cannot check it for malicious software.
- Open
/usr/local/bin
- Right click
ddosify
and select Open - Select Open
- Close the opened terminal
This repository includes the single-node version of the Ddosify Loader. Ddosify Cloud will be available soon. It will support multi-location based distributed load testing and more features.
Join the waitlist: https://ddosify.com
License
Licensed under the AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html
Recommend
-
146
Gin Web Framework Gin is a web framework written in Go (Golang). It features a martini-like API with performance that is up to 40 times faster thanks to httprouter....
-
43
README.md Cigar
-
75
README.md Goofys is a high-perfo...
-
12
Join GitHub today GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
-
13
Scalable,High Performance,Responsive API Gateways https://dromara.org/ English | 简体中文 ...
-
17
Scalable, High Performance, Responsive API Gateway Solution for all MicroSerivces https://dromara.org/ English |
-
6
Ddosify: High-performance Load Testing Tool There are ove...
-
8
Das.Test An opinionated unit testing library written in F# for F#. Goals The unit testing library should work and should not exit giving some obscure error. The library should not expect us...
-
9
Opossum Web Browser Basic portable Web browser; only needs a Go compiler to compile. Optimized for use on 9front and 9legacy, supports plan9port and 9pi as well. The UI is built with
-
9
richox/orz: a high performance, general purpose data compressor written in the crab-lang master
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK