Skip to content

sonic182/aioload

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8edecd1 · Dec 15, 2020
Sep 25, 2020
Dec 8, 2020
Jul 9, 2019
Jul 8, 2019
Dec 8, 2020
Jun 4, 2019
May 28, 2019
Jul 20, 2019
Aug 4, 2019
Dec 8, 2020
Jul 18, 2019
Jan 22, 2020
Jan 22, 2020
Dec 8, 2020
Jan 21, 2020
May 30, 2019
Jul 20, 2019
Jan 21, 2020
Dec 15, 2020
Jun 4, 2019
Jun 4, 2019
Jan 21, 2020
Jan 21, 2020
Dec 8, 2020
May 28, 2019

Repository files navigation

Azure Build Status build status coverage status pypi package

AIOload

https://blog.mogollon.com.ve/2020/01/10/load-testing-with-python/

Load test tool using aiosonic http client. For drawing charts we use matplotlib and pandas.

Usage of uvloop is highly recommended.

Requirements

  • python>=3.6

Installation

pip install aioload
# optional, highly recommended, doesn't work on Windows
pip install uvloop

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 aiosonic'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 :)