Skip to main content

A large-scale stress testing framework.

Project description

# Stresser

Stresser is a large-scale stress testing framework consists of one
**Commander** (client) and an arbitrary number of **Soldiers** (servers).

By broadcasting a pre-defined **task**, the Commander can trigger all Soldiers
to generate workloads concurrently.

A task can be:

* [Sikuli](http://www.sikuli.org/) - Great for tests based on GUI operations.
* script - e.g. `script.sh` on Unix-like systems or `batch.bat` on Windows.
* bin - Binary executables.

To generate more stress, just add more Soldiers.

## Installation

You can install Stresser by `pip`:

```bash
pip install stresser
```

## Quick Start

Once you've got Stresser installed, prepare config files for the Commander and
Soldiers. Then run `stress-commander` and `stress-soldier` respectively.

### Start Soldiers

A sample configuration file for Soldiers:

```INI
[amqp]
# The AMQP server for message broker
server = 5.5.6.6

[bin]
# Path for Java binary
java_bin = C:\Program Files (x86)\Java\jre6\bin\java.exe
# Path for Sikuli IDE
sikuli_ide = C:\Program Files (x86)\Sikuli X\sikuli-ide.jar
# Path for Shell (*nix systems only)
shell = /bin/zsh
```

Start listening tasks:

```
$ stress-soldier soldier.conf
[x] Soldier bd88148e-fa36-4017-ac5b-099ba83570fe is awaiting RPC requests
...
```

### Start the Commander

A sample configuration file (with a Sikuli task defined) for the Commander:

```INI
[amqp]
# The AMQP server for message broker
server = 5.5.6.6

[task]
# Task name
name = The First Task
# Task type, e.g. sikuli, script, bin.
type = sikuli
# URL for executable which will be downloaded by Soldiers
url = http://5.5.6.6:8000/first.skl
# The number of Soldiers. Commander will stop when the specified number of
# results have got.
count = 32
```

Start broadcasting task:

```
$ stress-commander commander.conf
[x] Broadcasting task: 'The First Task'...
```

### Soldiers performing task

After the Commander broadcasting a task, Soldiers are wake up to download and
perform that task. You may see following messages on the Soldiers's console:

```
[x] Soldier bd88148e-fa36-4017-ac5b-099ba83570fe is awaiting RPC requests
[.] Discoverd task: 'The First Task'
[.] Downloading task executable from http://5.5.6.6:8000/first.skl
[.] Running task: 'The First Task'
... (some outputs for task)
[.] Task: 'The First Task' is completed
```

### The Commander stops after all results from Soldiers are collected

On the Commander's console:

```
[.] Solider dfbe093d-54e0-4b6d-adb3-6935f3c6a31e took 0:12:02 to complete.
[.] Solider 1bcfb3e2-dd69-4957-ab6d-be91422c44f7 took 0:12:03 to complete.
... (skipped)
[.] Soldier bd88148e-fa36-4017-ac5b-099ba83570fe took 0:11:59 to complete.
```

The Commander will stop when the task is done on each Soldier, but Soldiers are
still running, hence you can submit another task over and over again.

## Requirements

You only have to deploy a message broker which speaks
[AMQP](http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol).

## Versioning
Stresser follows [Semantic Versioning](http://semver.org/), both SemVer and
SemVerTag.

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

stresser-0.1.0.tar.gz (5.2 kB view details)

Uploaded Source

File details

Details for the file stresser-0.1.0.tar.gz.

File metadata

  • Download URL: stresser-0.1.0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for stresser-0.1.0.tar.gz
Algorithm Hash digest
SHA256 046a329f73d40acf2e0476a24cb7b0790c2a51868aa50d4300fd7dde19455fbe
MD5 af0af5a44aed95cefea303710cda0709
BLAKE2b-256 1c235e20056eac2cd1366eeb2c760ebf3379e33f91fdf2014ec041980806ab2a

See more details on using hashes here.

Supported by

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