Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/debugtalk/stormer

Wrappers for making load test with locust more convienient.
https://github.com/debugtalk/stormer

http-requests locust performance-testing remote-machine ssh-client wrapper

Last synced: about 1 month ago
JSON representation

Wrappers for making load test with locust more convienient.

Awesome Lists containing this project

README

        

# Stormer

Wrappers for making load test with [`locust`](https://github.com/locustio/locust) more convienient.

## Features

- Start locust master and specified number of slaves at once.
- Overwrite test scripts on all remote machines with ease.
- Download remote file/directory to local path.

## Dependencies

Stormer is mainly based on [`locustio`](https://github.com/locustio/locust) and [`paramiko`](https://github.com/paramiko/paramiko/), you can install all dependencies through `requirements.txt`.

```bash
$ pip install -r requirements.txt --upgrade
```

## Usages

Currently, Stormer supports two subcommands.

```text
$ python main.py -h
usage: main.py [-h] {locust,sput} ...

Wrappers for making load test with locust more convienient.

positional arguments:
{locust,sput} sub-command help
locust locust wrapper.
sput scp wrapper for putting files.

optional arguments:
-h, --help show this help message and exit
```

`locust` usage: Start locust master and specified number of slaves with one command.

```text
$ usage: main.py locust [-h] [-f LOCUSTFILE] [-P PORT] [--slaves-num SLAVES-NUM]

Start locust master and specified number of slaves with one command.

optional arguments:
-h, --help show this help message and exit
-f LOCUSTFILE, --locustfile LOCUSTFILE
Specify locust file to run test.
-P PORT, --port PORT, --web-port PORT
Port on which to run web host, default is 8089.
--slave-only Only start locust slaves.
--master-host MASTER_HOST
Host or IP address of locust master for distributed
load testing.
--slaves-num SLAVES_NUM
Specify number of locust slaves, default to machine's
cpu count.
```

`sput` usage: Copy local file/directory to remote machines and overwrite.

```text
$ python main.py sput -h
usage: main.py sput [-h] [--hostsfile HOSTSFILE] [--localpath LOCALPATH] [--remotepath REMOTEPATH]

Copy local file/directory to remote machines and overwrite.

optional arguments:
-h, --help show this help message and exit
--hostsfile HOSTSFILE
Specify hosts file to handle.
--localpath LOCALPATH
Specify localpath of file or directory to transfer.
--remotepath REMOTEPATH
Specify remotepath of file or directory to transfer.
```

## Examples

Start locust master and locust slaves, the slaves number is equal to the machine's cpu count.

```text
$ python main.py locust -f examples/demo_task.py
[2017-02-26 10:52:04,875] Leos-MacBook-Air.local/INFO/logger: Starting Locust 0.8a2
[2017-02-26 10:52:04,897] Leos-MacBook-Air.local/INFO/logger: Starting web monitor at *:8089
[2017-02-26 01:32:15,757] Leos-MacBook-Air.local/INFO/locust.runners: Client 'Leos-MacBook-Air.local_9cfcb5acf942af4b52063c138952a999' reported as ready. Current
ly 1 clients ready to swarm.
[2017-02-26 01:32:15,757] Leos-MacBook-Air.local/INFO/locust.runners: Client 'Leos-MacBook-Air.local_0dba26cc993de413436db0f854342b9f' reported as ready. Current
ly 2 clients ready to swarm.
[2017-02-26 01:32:15,758] Leos-MacBook-Air.local/INFO/locust.runners: Client 'Leos-MacBook-Air.local_2d49585a20f6bcdca33b8c6179fa0efb' reported as ready. Current
ly 3 clients ready to swarm.
[2017-02-26 01:32:15,782] Leos-MacBook-Air.local/INFO/locust.runners: Client 'Leos-MacBook-Air.local_cc9d414341823d0e9421679b5f9dd4c4' reported as ready. Current
ly 4 clients ready to swarm.
```

Only start 4 locust slaves and connect to locust master.

```text
$ python main.py locust -f examples/demo_task.py --slaves-only --master-host --slaves-num 4
```

Copy local directory to all remote hosts.

```text
$ python main.py sput --hostsfile examples/hosts.yml --localpath examples --remotepath /root/examples
```