Sign inSign up

ddosify/ddosify

Verified Publisher

By Ddosify Inc.

•Updated almost 3 years ago

No-code, high-performance load testing tool, written in Golang. Ddosify Engine.

Image
Security
Integration & delivery
Monitoring & observability
17

1M+

ddosify/ddosify repository overview

Anteon logo light

⁠Ddosify: High-performance load testing tool

go coverage  go report  ddosify license ddosify discord server ddosify docker image

Ddosify - High-performance load testing tool quick start

GitHub: https://github.com/getanteon/anteon⁠

⁠Features

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

✅ Parameterization⁠ - Use dynamic variables just like on Postman.

✅ Correlation⁠ - Extract variables from earlier phases and pass them on to the following ones.

✅ Test Data⁠ - Import test data from CSV and use it in the scenario.

✅ Assertion⁠ - Verify that the response matches your expectations.

✅ Success Criteria⁠ - Set the success criteria for your test.

✅ Cookies⁠ - Pass cookies through steps and set initial cookies if you want.

✅ Widely Used Protocols - Currently supporting HTTP, HTTPS, HTTP/2. Other protocols are on the way.

⁠Installation

ddosify is available via Docker⁠, Docker Extension⁠, Homebrew Tap⁠, and downloadable pre-compiled binaries from the releases page⁠ for macOS, Linux and Windows. For auto-completion, see: Ddosify Completions⁠.

⁠Docker
docker run -it --rm ddosify/ddosify
⁠Docker Extension

Run Ddosify open-source on Docker Desktop with Ddosify Docker extension. More: https://hub.docker.com/extensions/ddosify/ddosify-docker-extension⁠

⁠Homebrew Tap (macOS and Linux)
brew install ddosify/tap/ddosify
⁠apk, deb, rpm, Arch Linux, FreeBSD packages
  • For arm architectures change ddosify_amd64 to ddosify_arm64 or ddosify_armv6.
  • Superuser privilege is required.
# For Redhat based (Fedora, CentOS, RHEL, etc.)
rpm -i https://github.com/ddosify/ddosify/releases/download/v1.0.6/ddosify_amd64.rpm

# For Debian based (Ubuntu, Linux Mint, etc.)
wget https://github.com/ddosify/ddosify/releases/download/v1.0.6/ddosify_amd64.deb
dpkg -i ddosify_amd64.deb

# For Alpine
wget https://github.com/ddosify/ddosify/releases/download/v1.0.6/ddosify_amd64.apk
apk add --allow-untrusted ddosify_amd64.apk

# For FreeBSD
pkg install ddosify
⁠Windows exe from the releases page⁠
  • Download *.zip file for your architecture. For example download ddosify version vx.x.x with amd64 architecture: ddosify_x.x.x.zip_windows_amd64
  • Unzip ddosify_x.x.x_windows_amd64.zip
  • Open Powershell or CMD (Command Prompt) and change directory to unzipped folder: ddosify_x.x.x_windows_amd64
  • Run ddosify:
.\ddosify.exe -t https://getanteon.com
⁠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 and sudo
curl -sSfL https://raw.githubusercontent.com/getanteon/anteon/master/scripts/install.sh | sh
⁠Go install from source (macOS, FreeBSD, Linux, Windows)

Minimum supported Go version is 1.18

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.

  1. ⁠Simple load test

    ddosify -t https://getanteon.com

    The above command runs a load test with the default value that is 100 requests in 10 seconds.

  2. ⁠Using some of the features

    ddosify -t https://getanteon.com -n 1000 -d 20 -m PUT -T 7 -P http://proxy_server.com:80

    Ddosify sends a total of 1000 PUT requests to https://getanteon.com⁠ over proxy http://proxy_server.com:80 in 20 seconds with a timeout of 7 seconds per request.

  3. ⁠Usage for CI/CD pipelines (JSON output)

    ddosify -t https://getanteon.com -o stdout-json | jq .avg_duration

    Ddosify outputs the result in JSON format. Then jq (or any other command-line JSON processor) fetches the avg_duration. The rest depends on your CI/CD flow logic.

  4. ⁠Scenario based load test

    ddosify -config config_examples/config.json

    Ddosify first sends HTTP/2 POST request to https://getanteon.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://getanteon.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.

  5. ⁠Load test with Dynamic Variables (Parameterization)

    ddosify -t https://getanteon.com/{{_randomInt}} -d 10 -n 100 -h 'User-Agent: {{_randomUserAgent}}' -b '{"city": "{{_randomCity}}"}'

    Ddosify sends a total of 100 GET requests to https://getanteon.com/{{_randomInt}}⁠ in 10 seconds. {{_randomInt}} path generates random integers between 1 and 1000 in every request. Dynamic variables can be used in URL, headers, payload (body) and basic authentication. In this example, Ddosify generates a random user agent in the header and a random city in the body. The full list of the dynamic variables can be found in the docs⁠.

  6. ⁠Correlation (Captured Variables)

    ddosify -config ddosify_config_correlation.json

    Ddosify allows you to specify variables at the global level and use them throughout the scenario, as well as extract variables from previous steps and inject them to the next steps in each iteration individually. You can inject those variables in requests url, headers and payload(body). The example config can be found in correlation-config-example⁠.

  7. ⁠Test Data

    ddosify -config ddosify_data_csv.json

    Ddosify allows you to load test data from a file, tag specific columns for later use. You can inject those variables in requests url, headers and payload(body). The example config can be found in test-data-example⁠.

⁠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]
FlagDescriptionTypeDefaultRequired?
-tTarget website URL. Example: https://getanteon.com⁠string-Yes
-nTotal iteration countint100No
-dTest duration in seconds.int10No
-mRequest method. Available methods for HTTP(s) are GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONSstringGETNo
-bThe payload of the network packet. AKA body for the HTTP.string-No
-aBasic authentication. Usage: -a username:passwordstring-No
-hHeaders of the request. You can provide multiple headers with multiple -h flag. Usage: -h 'Accept: text/html'string-No
-TTimeout of the request in seconds.int5No
-PProxy address as host:port. -P 'http://user:pass@proxy_host.com:port'string-No
-oTest result output destination. Supported outputs are [stdout, stdout-json] Other output types will be added.stringstdoutNo
-lType⁠ of the load test. Ddosify supports 3 load types.stringlinearNo
--configConfig File⁠ of the load test.string-No
--versionPrints version, git commit, built date (utc), go information and quit--No
--cert_pathA path to a certificate file (usually called 'cert.pem')--No
--cert_key_pathA path to a certificate key file (usually called 'key.pem')--No
--debugIterates the scenario once and prints curl-like verbose result. Note that this flag overrides json config.boolfalseNo
⁠Load Types
⁠Linear
ddosify -t https://getanteon.com -l linear

Result:

linear load

Note: If the iteration count is too low for the given duration, the test might be finished earlier than you expect.

⁠Incremental
ddosify -t https://getanteon.com -l incremental

Result:

incremental load

⁠Waved
ddosify -t https://getanteon.com -l waved

Result:

waved load

Tag summary

Content type

Image

Digest

sha256:74c6c128b…

Size

6.3 MB

Last updated

almost 3 years ago

docker pull ddosify/ddosify

This week's pulls

Pulls:

163

Last week