SIP load test tool originally built with support from AT&T Foundry.
Test Runs are the focal point of SIP Treadmill. When a Test Run is started, SIP traffic is sent via SIPp and analyzed by SIPp and an RTCP listener. Each Test Run is comprised of one or more Scenarios, a Profile, and a Target.
Scenarios describe how the calls in a Test Run behave. Call duration, DTMF input, and the beginning and end of the call are all described in the Scenario. Scenarios may be specified in either the SIPp or SippyCup formats.
The profile describes the call volume produced by the Test Run. The profile has three main fields: calls per second (how many calls are generated each second), concurrent calls (the number of calls that can occur at one time), and total number of calls for the test run.
The target describes the server on which the SIP application being tested is running. Each target has a name, an IP address, and an optional SSH username. If the user has SSH access to the target machine, system performance metrics can be gathered and analyzed by SIP Treadmill.
Optionally:
- A GitHub account.
- A GitHub application with user access & credentials for such. Callback URL is
http://yourdomain.com/users/auth/github
. - Amazon S3 bucket and credentials for file uploads.
The preferred method of installation of SIP Treadmill is to Ubuntu 14.04 via a package:
wget -qO - https://deb.packager.io/key | sudo apt-key add -
echo "deb https://deb.packager.io/gh/adhearsion/SIPtreadmill trusty master" | sudo tee /etc/apt/sources.list.d/SIPtreadmill.list
sudo apt-get -y update
sudo apt-get -y install siptreadmill
After installing the application, you will be requested to run sudo siptreadmill configure
to complete installation and setup of the database, Redis, SIPp, and a front-end webserver (Apache2), as well as to configure some essential settings of the application.
SIP Treadmill should then be running on port 80.
The majority of configuration for SIP Treadmill is done via environment variables. These environment variables are:
- COOKIE_SECRET
- A secret token used to sign cookies. Should be at least 30 random characters long.
- OMNIAUTH_TYPE
- The omniauth method to use. Valid options are 'github', and 'none'
- GITHUB_KEY
- The Client ID of your GitHub application
- GITHUB_SECRET
- The Client secret for your GitHub application
- STORAGE_TYPE
- Storage for uploaded files. Valid options are 's3' and 'file'.
- AWS_ACCESS_KEY_ID
- The access key ID for your Amazon S3
- AWS_SECRET_ACCESS_KEY
- The access key secret for your Amazon S3
- AWS_S3_BUCKET
- The name of the Amazon S3 bucket for storage
- FILE_PATH
- Location of uploaded files on local filesystem.
- TEST_RUN_BIND_IP
- The IP address to bind to for sending SIP traffic
- AIRBRAKE_TOKEN
- The error reporting API token.
- AIRBRAKE_HOST
- The error reporting API host.
You can change these settings using sudo siptreadmill config:set KEY=value
.
In order to get started with Treadmill, the following are required:
- SIPp - MUST BE A DEVELOPMENT BUILD, see SIPp/sipp#106
- Redis
- PostgreSQL (preferred, but any other Rails-compatible database will do)
Ensure that the user running the worker process has passwordless sudo access to run SIPp.
- Install virtualbox
- Install vagrant
- Clone this repository.
- Add the librarian-chef plugin to your Vagrant installation by doing
vagrant plugin install vagrant-librarian-chef
. - Build the VMs:
vagrant up
- SSH into the
dev
VM (vagrant ssh dev
), move to/srv/treadmill/current
and run the specs (rake spec
) - Copy
.env.sample
to.env
. - Launch the app (
foreman start
). - You can access the app via http://dev.local.treadmill.mojolingo.net:5000/
The app is shared with the VM, and everything runs in the VM, but you can use your editor on the host machine.