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

server load testing tool

Notifications You must be signed in to change notification settings

fillest/mistress_load

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

server load testing tool

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published