This application runs SIPp loadtests through a rake task, and is suitable for load testing through CI.
Due to bugs in a dependency PacketFu, this application currently requires Ruby 1.9.3 (NOT 2.0.0).
The following steps will run a SIPp load test of Adhearsion:
- Get Asterisk
- Configure Asterisk to accept calls from sipp@localhost
- Configure Asterisk for use with Adhearsion
- Clone this repository
- Place any necessary configuration in
config/adhearsion.rb
bundle exec rake sipp_test:compile
bundle exec rake sipp_test:run
Then wait for your results. Unless any controllers and/or SippyCup scenario files have been changed, only step 7 needs to be repeated for any future testing.
Controllers for concurrent
and cps
scenarios are Adhearsion CallControllers, and may be changed as such.
The scenarios (Ruby scripts in the scenarios/
directory) use the SippyCup library. These scripts may be changed to reflect any changes made to the controllers. Once changes have been made, run bundle exec rake sipp_test:compile
to generate the necessary XML and PCAP files.
The sipp_test
Adhearsion plugin adds some new configuration options that help define the nature of each test. The configuration options supplied are:
- config.sipp_test.from_ip
- The IP address from which to send calls (binds to an interface, default "127.0.0.1") [AHN_SIPP_TEST_FROM_IP]
- config.sipp_test.to_ip
- The IP address to which to send calls (default "127.0.0.1") [AHN_SIPP_TEST_TO_IP]
- config.sipp_test.concurrent.call_length
- Length in seconds of calls for the Concurrent scenario [AHN_SIPP_TEST_CONCURRENT_CALL_LENGTH]
- config.sipp_test.concurrent.max_calls
- Maximum number of calls for the Concurrent scenario [AHN_SIPP_TEST_CONCURRENT_MAX_CALLS]
- config.sipp_test.concurrent.max_concurrent
- Maximum concurrency for the Concurrent scenario [AHN_SIPP_TEST_CONCURRENT_MAX_CONCURRENT]
- config.sipp_test.concurrent.max_failures
- Number of failed calls before exit [AHN_SIPP_TEST_CONCURRENT_MAX_FAILURES]
- config.sipp_test.concurrent.rate
- Ramp-up rate for the Concurrent scenario [AHN_SIPP_TEST_CONCURRENT_RATE]
- config.sipp_test.concurrent.scenario_location
- Path from Adhearsion root to SippyCup template [AHN_SIPP_TEST_CONCURRENT_SCENARIO_LOCATION]
- config.sipp_test.cps.calls_per_second
- Number of calls per second (cps) [AHN_SIPP_TEST_CPS_CALLS_PER_SECOND]
- config.sipp_test.cps.max_calls
- Maximum number of calls for the CPS scenario [AHN_SIPP_TEST_CPS_MAX_CALLS]
- config.sipp_test.cps.max_failures
- Number of failed calls before exit [AHN_SIPP_TEST_CPS_MAX_FAILURES]
- config.sipp_test.cps.scenario_location
- Path from Adhearsion root to SippyCup template [AHN_SIPP_TEST_CPS_SCENARIO_LOCATION]
These configuration options may be specified either via config/adhearsion.rb
or via environment variables. The defaults for these variables may be seen by running bundle exec rake config:show
. All available rake tasks can be seen by running bundle exec rake -T