# 3. Installation

This package has been tested on Linux, FreeBSD and Solaris. A port is available on Mac OS X. It should work on Erlang supported platforms (Linux, Solaris, *BSD, Win32 and Mac OS X).

On Mac OS X you can install Tsung via Homebrew (http://brew.sh/): brew install tsung.

## 3.1. Dependencies

- Erlang/OTP R16B03 and up (download).
- pgsql module made by Christian Sunesson (for the PostgreSQL plugin): sources available at http://jungerl.sourceforge.net/ . The module is included in the source and binary distribution of Tsung. It is released under the EPL License.
- mysql module made by Magnus Ahltorp & Fredrik Thulin (for the mysql plugin): sources available at http://www.stacken.kth.se/projekt/yxa/. The modified module is included in the source and binary distribution of Tsung. It is released under the three-clause BSD License.
- mochiweb libs (for XPath parsing, optionally used for dynamic variables in the HTTP plugin): sources available at https://github.com/mochi/mochiweb. The module is included in the source and binary distribution of Tsung. It is released under the MIT License.
- gnuplot and perl5 (optional; for graphical output with `tsung_stats.pl` script). The Template Toolkit is used for HTML reports (see http://template-toolkit.org/).
- python and matplotlib (optional; for graphical output with `tsung-plotter`).
- for distributed tests, you need SSH access to remote machines without password (use a RSA/DSA key without passphrase or ssh-agent). Alternatively rsh is also supported.
- bash

## 3.2. Compilation

To compile Tsung, just download the latest version from http://tsung.erlang-projects.org/dist/ and run:

    ./configure
    make
    make install

If you want to download the latest development version, use git:

git clone https://github.com/processone/tsung.git, see also https://github.com/processone/tsung.

You can also build packages with make deb (on Debian and Ubuntu) and make rpm (on Fedora, RHEL and other rpm based distribution).

## 3.3. Configuration

The default configuration file is `~/.tsung/tsung.xml` (there are several sample files in `/usr/share/doc/tsung/examples`).

Log files are saved in `~/.tsung/log/`. A new subdirectory is created for each test using the current date and time as name, e.g. `~/.tsung/log/20040217-0940`.

## 3.4. Running

Two commands are installed in the directory `$PREFIX/bin`: `tsung` and `tsung-recorder`. A man page is available for both commands.

    $ tsung -h
    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)
        -X <dir>      add additional erlang load paths (multiple -X arguments allowed)
        -m <file>     write monitoring output on this file (default is tsung.log)
                       (use - for standard output)
        -F            use long names (FQDN) for erlang nodes
        -L <lifetime> SSL session lifetime (600sec by default)
        -w <delay>    warmup delay (default is 1 sec)
        -n            disable web GUI (started by default on port 8091)
        -k            keep web GUI (and controller) alive after the test has finished
        -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)
        -t <min>      erlang inet listening TCP port min (default: 64000)
        -T <max>      erlang inet listening TCP port max (default: 65500)
        -h            display this help and exit

A typical way of using tsung is to run: tsung -f myconfigfile.xml start.

The command will print the current log directory created for the test, and wait until the test is over. By default an embedded web server will be started on the controller node and will listen on the 8091 port (this can be disabled with the -n option.

## 3.5. Feedback

Use the Tsung mailing list if you have suggestions or questions about Tsung. You can also use the bug tracker available at https://github.com/processone/tsung/issues

You can also try the #tsung IRC channel on Freenode.