Skip to main content

Load test tool

Project description

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

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.4.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

aioload-0.4.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file aioload-0.4.0.tar.gz.

File metadata

  • Download URL: aioload-0.4.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.25.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.7

File hashes

Hashes for aioload-0.4.0.tar.gz
Algorithm Hash digest
SHA256 830f12d010dd8e103098fbc0d8caa77965c83fff35c8723045825b12ca059f19
MD5 565f9b9db32fa5aa5a2372a9beb3af0c
BLAKE2b-256 0363d276408882e7c550884434957cea9249b281fb7a574bb7011474b3c5f740

See more details on using hashes here.

File details

Details for the file aioload-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: aioload-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.25.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.7

File hashes

Hashes for aioload-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 83a2d155379644db7739589ee1bec446f027036c2711f6981881cdc76911ecb3
MD5 7e408e27fbd7790116276736cd862966
BLAKE2b-256 a257dd9694cd3231e6b8689dd5fde025e090fb9bdefb8ea7cebb7a1a6f7c3f19

See more details on using hashes here.

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