Skip to main content

Load test tool

Project description

build status coverage status pypi package

AIOload

Load test tool using aiohttp, cchardet and aiodns. for drawing charts we use matplotlib and pandas.

Requirements

  • python>=3.5.3

Installation

pip install aioload

Usage

you need to specify your request in a settings file like config.ini

[http]
sock_read = 30
sock_connect = 3


[test]
# target url for test
url = http://localhost:8080/api/v1/something
# methods: get, post, put, delete
method = post
#
# use body for send body in request
# if body is json, indicate correct header in headers section
# comment body line if you're doing a get request
body = '{"foo": "bar"}'

# query params if needed, this will transform url
# in something like http://localhost:8080/api/v1/something?token=something
[params]
token = something

# headers if needed
[headers]
content-type = application/json

usage example

> aioload -h
usage: aioload [-h] [-d] [-v] [-n NUMBER_OF_REQUESTS] [-c CONCURRENCY]
               [--plot]
               testfile

positional arguments:
  testfile              Test file to be executed

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           true if present
  -v, --verbose         true if present
  -n NUMBER_OF_REQUESTS, --number_of_requests NUMBER_OF_REQUESTS
                        number of requests to be done, default: 100
  -c CONCURRENCY, --concurrency CONCURRENCY
                        concurrency (requests at the same time), default: 10
  --plot                draw charts if present

> aioload config.ini -n 3000 -c 100 --plot -v
2019-05-29 17:20:51,662 - __init__:135 - info - 8cf56ded860f41d8a86dab2aed05218f - starting script... -
2019-05-29 17:20:55,301 - __init__:102 - info - 8cf56ded860f41d8a86dab2aed05218f - done - min=14.54ms; max=212.21ms; mean=109.36ms; req/s=600.0; req/q_std=333.7; stdev=24.65; codes.200=3000; concurrency=100; requests=3000;
./charts.jpg

You can override aioload runner methods, here is an example. Then you should execute the script you made, in this example: python sample/dynamic_test.py conf.ini -v

Note

Python has limits, if your applications is crazy fast like this crystal server, the test will be limited by aiohttp’s client speed.

Contribute

  1. fork

  2. create a branch feature/your_feature

  3. commit - push - pull request

Dependencies are handled with pip-tools

thanks :)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aioload-0.2.1.tar.gz (7.0 kB view hashes)

Uploaded Source

Built Distribution

aioload-0.2.1-py3-none-any.whl (6.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page