
Arbre de supervision OTP:
========================

tsung est divis en deux applications aux sens OTP:

** un controlleur unique (tsung_controller) 

 * ts_config_server (gen_server). Serveur de configuration server. La
   dfinition des sessions est gard part le serveur de configuration.

 * ts_mon (gen_server)

 * ts_os_mon (gen_server)

 * ts_timer  (utilis par ts_client en global) (gen_fsm)

 serveurs utiliss pour construire les messages:

 * ts_msg_server (gen_server) 

 * ts_user_server (gen_server) utilis par ts_launcher et jabber_*
   pour l'unicit des utilisateurs

** plusieurs injecteurs (tsung). Plusieus noeuds peuvent tre actifs
   simultanment

 * ts_launcher (gen_fsm) lance les clients simuls (selon un processus de 
   Poisson).

 * ts_session_cache (gen_server) cache les sessions (interroge le
   config_server si la session n'est pas encore dans le cache)

 * 1 processus erlang par client simul (ts_client), sous la
   supervision de ts_client_sup (simple_one_for_one)



Le principaux modules sont:
==========================

   1/ ts_launcher. Le processus matre qui va lancer les autres
       processus (un par beam)

   1.1/ processus clients initiant les connexions TCP
      (module ts_client). Ces processus sont lancs par le processus
      matre avec un intervalle de temps suivant une distribution de
      probabilit exponentielle d'intensit paramtrable au dmarrage
      (unit = sec). Le nombre de clients total est galement
      paramtrable au dmarrage du processus matre (il s'agit bien du
      nombre de client total et non du nombre de clients simultans)

   1.2/ Le processus de monitoring (module ts_mon)

   2/ Un module pour grer les chantillons alatoires (module ts_stats)

   4/ Les modules spcifiques pour grer les diffrents protocoles (module
      ts_jabber ou ts_http par ex.).
   
Comment rajouter un nouveau protocole ou tendre un existant:
============================================================

    Tout protocole doit exporter les fonctions suivantes:

-export([init_dynparams/0,
		 add_dynparams/4,
		 get_message/1,
		 session_defaults/0,
         parse/2,
         parse_config/2,
         new_session/0]).

cf. fichier template doc/ts_template.erl

Rfrences:
==========

  - Erlang

  http://www.erlang.org/

  Design principles: 
	http://www.erlang.org/doc/r7b/doc/design_principles/part_frame.html

  - Jabber

  http://docs.jabber.org/general/html/protocol.html

  
  - modlisation stochastiques :

  Plus de dtails sur ce type de modlisation sont disponibles dans les
  documents suivants (dans le contexte du protocole HTTP)

    Nicolas Niclausse. Modlisation, analyse de performance et
    dimensionnement du World Wide Web. Thse de Doctorat, Universit
    de Nice - Sophia Antipolis, Juin 1999.
    http://www-sop.inria.fr/mistral/personnel/Nicolas.Niclausse/these.html

	Z. Liu, N. Niclausse, C. Jalpa-Villanueva & S. Barbier. Traffic
    Model and Performance Evaluation of Web Servers Rapport de
    recherche INRIA, RR-3840 (http://www.inria.fr/rrrt/rr-3840.html)


