diff --git a/CHANGES b/CHANGES index a240b9419..9c0f3109d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,12 +1,20 @@ 0.2.1 -> 0.3.0: Major Feature Enhancements - - rewrite the configuration engine. now use an XML file. - - can now use several client IPs per machine - - several arrival phases can be set with different arrival rates and duration + - rewrite the configuration engine. Now use an XML file. + - add recording application: use as a HTTP proxy to record session into XML + format + - add support to OS monitoring (cpu, memory, network). Currently, use an + erlang agent on the remote nodes; SNMP is on the TODO list. + (mickael.remond@erlang-fr.org) + - can now use several IPs per client host + - several arrival phases can be set with different arrival rates and + duration - can set test duration instead of number of users - add user defined statistics using a 'transaction' tag - - fix cookies handling in http (mickael.remond@erlang-fr.org) + - HTTP: fix cookies and POST handling (mickael.remond@erlang-fr.org) + - HTTP: rewrite the parser (faster and cleaner) - fix bad timeout computation when close occur for persistent client - - fix very slow implemetation ts_stats.erl:sample + - bugfixes and other enhancements. + - fix memory leak with ssl (half-closed connections) 0.2.0 -> 0.2.1: Minor bugfixes and small enhancements (9 Dec 2003) - optimize session memory consumption: use an ets table to store session setup diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 1fb153b77..5f5cb1137 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1,8 +1,13 @@ $Id$ -AUTHORS OF IDX-TSUNAMI: +AUTHOR: ====================== -o Nicolas Niclausse : Maintainer; design - and initial implementation; OTP redesign. -o Jean François Lecomte : several enhancements. +o Nicolas Niclausse : Maintainer; + +CONTRIBUTORS: +====================== +o Jean François Lecomte : several enhancements for Jabber + +o Mickael Rémond : server monitoring; + HTTP tests and fixes for POST and Cookies, diff --git a/Makefile b/Makefile index 7e04f64c8..0ba38161e 100644 --- a/Makefile +++ b/Makefile @@ -14,10 +14,13 @@ ERLC_EMULATOR=/usr/bin/erl export ERLC_EMULATOR ERL_COMPILER_OPTIONS="[warn_unused_vars]" export ERL_COMPILER_OPTIONS -OPTIONS:=+debug_info +## for debugging +#OPTIONS:=+debug_info -DDEBUG +## To enable HIPE #OPTIONS:=+native +\{hipe,\[o3\]\} +## To export all functions #OPTIONS:=+export_all -#OPTIONS:= +OPTIONS:= INC = ./include ERLC = erlc $(OPTIONS) -I $(INC) OUTDIR = ebin @@ -32,7 +35,7 @@ show: tarball: mkdir -p $(TARDIR) - tar zcf tmp.tgz src/*.erl src/*.src include/*.hrl doc/*.txt doc/*.fig doc/*.png LISEZMOI README CONTRIBUTORS COPYING idx-tsunamirc TODO Makefile vsn.mk src/analyse_msg.pl.src FAQ CHANGES + tar zcf tmp.tgz src/*.erl src/*.src include/*.hrl doc/*.txt doc/*.fig doc/*.png LISEZMOI README CONTRIBUTORS COPYING idx-tsunami.sh idx-tsunami.xml TODO Makefile vsn.mk src/analyse_msg.pl.src FAQ CHANGES tar -C $(TARDIR) -zxf tmp.tgz mkdir $(TARDIR)/ebin tar zvcf idx-tsunami-$(VSN).tar.gz $(TARDIR) diff --git a/README b/README index 44ef0f2b4..5c9d7f731 100644 --- a/README +++ b/README @@ -32,9 +32,9 @@ 1.2. What This Package Is - The purpose of this package is to simulate users in order to test + The purpose of IDX-TSUNAMI is to simulate users in order to test the scalability and performances of IP based client/server - applications. Currently, only the Jabber protocol has been + applications. Currently, HTTP and Jabber protocol have been implemented and tested, but it can be easily extended (see doc/Design.txt). IDX-TSUNAMI use the Erlang language. @@ -47,18 +47,21 @@ stochastic model, in order to achieve a more realistic traffic than other simple models (deterministics). - In this context, a client is characterize by: - - the mean time elapsed between each request ("think time") - - the number of requests during a session + In this context, a client's session is characterize by: + - the mean time elapsed between requests ("think time") + - a list of requests during a session - the type and parameters of requests (including, for example, 'chat' message size for Jabber) - Another key parameter is the arrival rate of clients. + At the end of a session, the client stops. + + Another key parameters are the mean time between clients arrival, + and the duration of the test. In the current implementation, the client arrival rate and the user "think time" are represented by an exponential distribution (therefore, the arrival process is a Poisson process). The thinktime - can also be non random. + can also be fixed (determinist). The traffic can be logged to a file and, after completion of all the clients, these files can be analyzed by scripts to get @@ -67,8 +70,9 @@ are computed, for different types of messages: authentication, chat, offline messages ...) and generic statistics. - Since v0.2.0, stats can also be computed in real-time, and dumped in - a text file at regular interval. + Since v0.2.0, stats are also be computed in real-time, and dumped in + a text file at regular interval. A script is provided to print + graphics using gnuplot. This software is currently under development and can be enhanced in many ways (see TODO file). @@ -84,6 +88,9 @@ - gnuplot and perl5 (optional; for graphical output with analyse_msg.pl script) + - for distributed test, you need an ssh access to remote machines + without passwd (use a RSA key without passphrase) + 2.2. Compilation and Installation Edit Makefile if you want to change the install path (prefix) @@ -97,28 +104,27 @@ make install How to use it: - 1a/ Edit etc/idx-tsunami.xml file (read the comments for explanation on - the parameters, there is a sample file etc/idx-tsunami_default.xml) + 1a/ Edit $prefix/etc/idx-tsunami.xml file (read the comments for explanation + on the parameters, there is a sample file etc/idx-tsunami_default.xml) 1b/ Read the doc/Jabber.txt file for Jabber-specific information. 2/ use "idx-tsunami start" to launch the simulated clients. 3/ When it's finished, you can use analyse_msg.pl to get - statistical results from the logfiles (require at least 'light' - monitoring for Jabber, see comments in 'idx-tsunami.xml' ). + statistical results from the logfiles. Since v0.2.0, you can have 'realtime' stats using with the --stats and --plot option (no monitoring needed). It will generate graphics in postscript using gnuplot. For HTTP, you MUST use --stats. This option requires a logfile, by default it - is named 'idx-tsunami.log0' + is named 'idx-tsunami.log-YYYY:MM:DD-HH:mm' Every 10sec (default value), stats are dump in the log file, and the script can create graphics about the current activity. Availables stats: - - response_time (response time for each subrequest (~ request for HTTP)) - - page_resptime (response time for each 'action' (~ page for HTTP)) + - response_time (response time for each request (~ request for HTTP)) + - page_resptime (response time for each set of requests (~ page for HTTP)) - connect (duration of the connection) - reconnect (number of reconnection) - size (size of responses) @@ -127,7 +133,6 @@ HTTP specific stats: - counter for each response status (200, 404, etc.) - - parse_error (error while parsing HTTP Headers and body) - http_bad_content_length (Body is larger than expected) - http_no_content_length diff --git a/TODO b/TODO index 4ca42d7f6..28a35e610 100644 --- a/TODO +++ b/TODO @@ -1,20 +1,18 @@ -P1 finish new configuration system - -P2 add proxy mode to build session file -P2 add remote monitoring of servers via SNMP +P2 add SNMP support to remote monitoring of servers P2 make jabber work again with new configuration system +P2 handle WWW-authentication P3 improve documentation P3 other useful protocols: ftp, smtp, ldap, sql ... ? P3 handle all cookies attributes -P3 add custom http headers ? +P4 add custom http headers ? P4 add multiple tcp connections per client (for http) ? -P4 add capability to send several samples at once to ts_mon P4 clients may do a checksum to control integrity of responses ? P5 groupchat for Jabber P5 handle http/1.1 pipelining ? - cache ssl session ID => NOT SUPPORTED BY SSL APPLICATION +