Skip to content
This repository has been archived by the owner on Sep 10, 2024. It is now read-only.

Latest commit

 

History

History
73 lines (54 loc) · 2.76 KB

readme.md

File metadata and controls

73 lines (54 loc) · 2.76 KB

Mistress - load testing tool for server-side applications

Feature highlights

  • Scenario scripting in Lua
  • Live-updated statistic plots viewable through web interaface
  • Persistent test history with project grouping and ACL
  • HTTP support - keep-alive, chunked, gzip, automatic cookie management, basic-auth, file upload
  • Parallel requests from one virtual user (e.g. like browsers act)
  • Special proxy for recording HTTP requests and generating test scripts
  • Scales with cores and nodes
  • Extension system
  • (planned) Monitoring integration

Goals

  • Simple and powerful scenario scripting
  • Accurate informative statistics
  • High performance

Current status

Under active development but is already working. Stay tuned for docs appearance.

Near-future roadmap

  1. Some high-priority features/improvements
  2. Docs
  3. Refactoring (i was coding in a real hurry)
  4. Tests

Supported platforms

Currently I test on Debian and Ubuntu. Mistress should work on other popular Linux distributions, FreeBSD and Mac OS as well, please drop me any feedback (especially if something doesn't work smoothly, or non-platform-optimal event notification mechanism gets used).

Setup

Prepare

#ubuntu:
sudo apt-get install lua-socket lua-logging
#older debian-based:
sudo apt-get install liblua5.1-socket2 liblua5.1-logging

sudo apt-get install zlib1g-dev screen

sudo apt-get install git
git clone https://github.com/fillest/mistress_load.git
cd mistress_load

sudo apt-get install python-virtualenv
virtualenv --no-site-packages venv
source venv/bin/activate
pip install --upgrade pip  #debian?
pip install bold==0.3
pip install argparse #for debian

bold

Usage

First, start statistics server (or use no_stat_server = true in script).

...Set up ssh keys (for localhost-only - just cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys)

build/dev/mistress -s <your-test-script-name>

Chech report at http://localhost:7777/report/list

Feedback

Any feedback or help (especially with tests, docs and spreading the word) is highly appreciated!

Design

Written in C(C99) and Lua/LuaJIT using libev and HTTP Parser libs

Non-blocking io + libev + lua coroutines; coroutines yield on issuing io and resume on result, so end-user code is simple and natural (threading-style), without ugly callback boilerplate.

Metrics are accumulated and periodically sent to stand-alone statictics server.

##License The MIT License