Tsung (formerly known as idx-Tsunami) is a stress testing tool written in the Erlang language and distributed under the GPL license. It can currently stress test HTTP, WebDAV, LDAP, MySQL, PostgreSQL, SOAP and XMPP servers. Tsung can simulate hundreds of simultaneous users on a single system. It can also function in a clustered environment.

Installation on Centos

[ahmed@server ~]$ yum install erlang 
[ahmed@server ~]$ tar -xvzf v1.5.1.tar.gz -C /opt
[ahmed@server ~]$ cd /opt/tsung-1.5.1
[ahmed@server ~]$ ./configure
[ahmed@server ~]$ make
[ahmed@server ~]$ make install

Some Version information.

[ahmed@server ~]$ tsung -v
Tsung version 1.5.1
[ahmed@server ~]$ tsung
Usage: tsung <options> start|stop|debug|status
Options:
	-f <file>     set configuration file (default is ~/.tsung/tsung.xml)
				   (use - for standard input)
	-l <logdir>   set log directory where YYYYMMDD-HHMM dirs are created 
                        (default is ~/.tsung/log/)
	-i <id>       set controller id (default is empty)
	-r <command>  set remote connector (default is ssh)
	-s            enable erlang smp on client nodes
	-p <max>      set maximum erlang processes per vm (default is 250000)
	-m <file>     write monitoring output on this file (default is tsung.log)
				   (use - for standard output)
	-F            use long names (FQDN) for erlang nodes
	-w            warmup delay (default is 1 sec)
	-v            print version information and exit
	-6            use IPv6 for Tsung internal communications
	-x <tags>     list of requests tag to be excluded from the run (separated by comma)
	-h            display this help and exit
[ahmed@server ~]$

Sample Test load.xml update load_test_machine and web_server_to_test as per the servers.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd" []>
<tsung loglevel="warning">

  <clients>
	<client host="load_test_machine" cpu="2" maxusers="30000000"/>
  </clients>

  <servers>
	<server host="web_server_to_test" port="80" type="tcp"/>
  </servers>

  <load>
	<arrivalphase phase="1" duration="1" unit="minute">
	  <users arrivalrate="5" unit="second"/>
	</arrivalphase>
  </load>

  <sessions>
	<session name="es_load" weight="1" type="ts_http">
	  <request>
	  <http url="/postdata/Information"
			  method="POST"
			  contents_from_file="test.json" />
	  </request>
	</session>
  </sessions>
</tsung>

Test Sample Json

{
	"name":"ahmed",
	"age":30
}

Next Execute the command to start the service .

tsung -f load.xml start 

This will start the service which will start hitting the server. All logs will be available in ${HOME}/.tsung/log

More information

https://engineering.helpshift.com/2014/tsung/