h1. Stella - Your Performance Testing Friend Release: 0.5.5 (2009-01-14) This is a BETA release. Proceed in double verify mode! h2. Overview Stella is a command-line tool for running, reporting, and analyzing performance tests. h2. Prerequisites * Linux, BSD, Solaris * Ruby 1.8.x, 1.9.x, or JRuby 1.1 * Native Libraries (c or c++) ** Pcap (optional, for packet sniffing) * Ruby Libraries ** rspec ** net-dns ** Ruby-Pcap (optional, for packet sniffing) * One of: ** "Apache Bench":http://httpd.apache.org/docs/2.2/programs/ab.html ** "Siege":http://www.joedog.org/index/siege-home ** "Httperf":http://www.hpl.hp.com/research/linux/httperf/ *** _Note: Argument handling for Httperf is incomplete_ h2. Installation Get it in one of the following ways: * RubyForge: http://stella.rubyforge.org/ ** gem install stella * git clone git://github.com/solutious/stella.git ** git submodule init ** git submodule update Use ab, siege, and httperf like you normally would with the addition of stella at the beginning (examples are below). h3. Debian (and derivatives) Debian and its derivative (Ubunutu) handling packing a bit differently (see: http://pkg-ruby-extras.alioth.debian.org/rubygems.html). There are a couple errors to watch out for during the installation. The solutions are below: "no such file to load -- mkmf (LoadError)" $ apt-get install ruby1.8-dev "ERROR: RDoc documentation generator not installed!" $ apt-get install rdoc h3. Installing libpcap and Ruby-Pcap *Stella currently supports packet filtering with Native Ruby (no JRuby) on Linux/Unix/OS X only.* *Ruby-Pcap does not compile with Ruby 1.9.1-RC1* libpcap and Ruby-Pcap are used to by Stella's watch command to filter packets off the network. This allows you to view HTTP requests and response (including headers and content) without having to configure a proxy. Both need to be compiled and installed separately: * "libpcap":http://www.tcpdump.org/release/ * "Ruby-Pcap":http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-e.html On Ruby, 1.8.6, Ruby-Pcap produces the following warnings at runtime: "pcap.bundle: warning: do not use Fixnums as Symbols". See: support/ruby-pcap-takuma-notes.txt. h2. Usage Examples Run Apache Bench with a warmup and rampup from 10 to 20 virtual users in increments of 5 $ stella --warmup=0.5 --rampup=5,20 ab -c 10 -n 50 http://stellaaahhhh.com/search?term=trooper Run Siege, repeat the test 5 times. Automatically creates a summary averages and standard deviations. $ stella --agent=ff-3-osx --testruns=5 siege -c 10 -r 5 -b http://stellaaahhhh.com/search?term=flock+of+seagulls Run Httperf like you normally would (but all the test data will be collected for you) $ stella httperf --hog --client=0/1 --server=127.0.0.1 --port=5600 --uri=/ --rate=50 --num-conns=100 --timeout=5 Monitor DNS traffic using Pcap $ stella watch -C dns Monitor HTTP traffic using Pcap $ stella watch -C http Monitor HTTP traffic using a proxy (don't forget to configure your browser) $ stella watch -P h3. Sample Output

  $ stella -f csv -x 5 -w 0.75 -r 25,125 -m "httpd 2.2.9-prefork" siege -c 75 -r 10 -b http://testapp:5600/
	Writing test data to: stella/testruns/2008-12-23/test-054

	  Warmup:       3750@37/1   100%    264.29/s    0.140s    0.024MB/s    0.340MB   14.000s .

	 -------------------------------------------------------------------
	                 REQ@VU/s  AVAIL       REQ/s     RTIME       DATA/s       DATA      TIME

	  Run 01:       7500@75/1   100%    345.30/s    0.210s    0.032MB/s    0.690MB   21.720s
	  Run 02:       7500@75/1   100%    360.58/s    0.200s    0.033MB/s    0.690MB   20.800s
	  Run 03:       7500@75/1   100%    359.02/s    0.210s    0.033MB/s    0.690MB   20.890s
	 -------------------------------------------------------------------
	   Total:      22500@73     100%    354.97/s    0.207s    0.033MB/s    2.070MB   63.410s
	 Std Dev:                             6.86/s    0.005s    0.001MB/s               0.414s

	  Run 04:      10000@100/1  100%    384.47/s    0.260s    0.035MB/s    0.920MB   26.010s
	  Run 05:      10000@100/1  100%    385.06/s    0.260s    0.035MB/s    0.920MB   25.970s
	  Run 06:      10000@100/1  100%    380.95/s    0.260s    0.035MB/s    0.920MB   26.250s
	 -------------------------------------------------------------------
	   Total:      30000@98     100%    383.49/s    0.260s    0.035MB/s    2.760MB   78.230s
	 Std Dev:                             1.81/s    0.000s    0.000MB/s               0.124s

	  Run 07:      12500@125/1  100%    397.20/s    0.310s    0.036MB/s    1.140MB   31.470s
	  Run 08:      12500@125/1  100%    397.08/s    0.310s    0.036MB/s    1.140MB   31.480s
	  Run 09:      12500@125/1  100%    397.58/s    0.310s    0.036MB/s    1.140MB   31.440s
	 -------------------------------------------------------------------
	   Total:      37500@123    100%    397.29/s    0.310s    0.036MB/s    3.420MB   94.390s
	 Std Dev:                             0.21/s    0.000s    0.000MB/s               0.017s

	 -------------------------------------------------------------------
	   Total:      90000@98     100%    378.58/s    0.259s    0.035MB/s    8.250MB  236.030s
	 Std Dev:                            18.09/s    0.042s    0.002MB/s               4.225s
All test data is collected under ./stella (this can be changed with the parameter --datapath): $ ls -l ./stella/testruns/2008-12-23/ test-001 test-002 test-003 test-004 test-005 test-006 ... test-054 A symbolic link points to the most recent test: $ ls -l ./stella/latest/ ID.txt MESSAGE.txt SUMMARY.csv run01 run02 run03 run04 run05 warmup Each run directory contains all associated data, including the command and configuration $ ls -l ./stella/latest/run01/ COMMAND.txt STDOUT.txt siege.log STDERR.txt SUMMARY.csv siegerc h2. Known Issues * The output for the REQ@VU/s columns is a work in progress. It's not aligned across tools and it will likely change in the next release. * The summary data has not been audited. Don't trust and double verify! * httperf is functional but not all parameters are supported. * The Ruby API has not been finalized. It's functional but there's no example because it is subject to change. * There is an issue with parsing ipv6 ip addresses with Ruby-Pcap or Net-DNS. This affects only dns sniffing with pcap. Reproduce by running "stella watch -C dns" and requesting "apple.com" h2. Report an issue Email issues and bugs to stella@solutious.com h2. More Information "Stellaaahhhh":http://www.youtube.com/watch?v=wmq-JDonTpc h2. License See LICENSE.txt