Table of Contents

Overview

Tsung is an open-source multi-protocol distributed load testing tool

It can be used to stress HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, MQTT and Jabber/XMPP servers. Tsung is a free software released under the GPLv2 license.

The purpose of Tsung is to simulate users in order to test the scalability and performance of IP based client/server applications. You can use it to do load and stress testing of your servers. Many protocols have been implemented and tested, and it can be easily extended.

It can be distributed on several client machines and is able to simulate hundreds of thousands of virtual users concurrently (or even millions if you have enough hardware …).

Tsung is developed in Erlang, an open-source language made by Ericsson for building robust fault-tolerant distributed applications.

Features

Main features

  • High Performance: the load can be distributed on a cluster of client machines
  • Multi-protocols using a plugin system: HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP , XMPP/Jabber, BOSH, MQTT and AMQP are currently supported.
  • TCP, UDP, Websocket, TSL/SSL (with or without client certificate); IPv4 and IPv6 are supported.
  • Several IP addresses can be used on a single machine using the underlying OS IP Aliasing
  • OS monitoring (CPU, memory and network traffic) using SNMP, Munin or Erlang agents on remote servers.
  • XML configuration system; several sessions can be used to simulate different type of users. Dynamic sessions can be easily described in XML (this can be used to retrieve at runtime an ID from the server output and use it later in the session).
  • In order to generate a realistic traffic, user think-times and the arrival rate can be randomize using a probability distribution
  • Builtin Web dashboard to view statistics in real time during a tests (response times measurement, server CPU, etc.)
  • Command line interface

HTTP

  • HTTP/1.0 and HTTP/1.1 support
  • GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH methods
  • Cookies are automatically handled
  • ‘GET If-modified since’ type of request
  • WWW-authentication Basic and Digest
  • Proxy mode to record sessions using a Web browser.
  • Basic support for SOAP using the HTTP mode (the SOAPAction HTTP header is handle).
  • WebDAV extensions
  • Websocket upgrade

XMPP (Jabber)

  • Authentication, presence and register messages
  • Chat messages to online or offline users
  • Roster set and get requests
  • Global users’ synchronization can be set on specific actions
  • PubSub, MUC, Virtual Hosts
  • BOSH & XMPP over Websocket

PostgreSQL

  • Authentication (password or MD5)
  • Basic and extended Queries
  • Proxy mode to record sessions

MySQL

This plugin works only with MySQL version 4.1 and higher.

  • Secured authentication method only (MySQL >= 4.1)
  • Basic Queries

LDAP

  • Bind
  • Add, search, modify queries
  • starttls (only with R12B-0 Erlang and up)

AMQP

  • basic publish and consume
  • publisher confirm and consumer ack
  • qos

MQTT

  • MQTT V3.1 support.
  • Connect to mqtt broker with options
  • Publish mqtt messages to the broker
  • Subscribe/unsubscribe topics
  • Support QoS 0 and QoS 1s MQTT V3.1.

History

Tsung is the Next Generation of a tool called IDX-Tsunami. This tool was started by Nicolas Niclausse in 2000 as a distributed jabber load stress tool for internal use at IDEALX (now IDNOMIC).

It has evolved as an open-source multi-protocol load testing tool in 2001. The HTTP support was added in 2003, and many others later. This tool has been used for many industrial projects.

Since September 2004, it is developed by volunteers outside IDEALX.

In December 2005, a new name was chosen and a new site was created, hosted by Erlang-projects. The CVS repository was migrated to Subversion (hosted by Process-One).

Today, code and issue tracking is hosted on github, and the maintainer is still Nicolas Niclausse.

Tsung is released under the General Public Licence v2.

Logo designed by Pierre-Yves Dubreucq