Présentation de Tsung chez Leboncoin

58
Tsung - Leboncoin Rodolphe Quiédeville Principe et généralités 13 mars 2014 Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 1 / 58

description

 

Transcript of Présentation de Tsung chez Leboncoin

Page 1: Présentation de Tsung chez Leboncoin

Tsung - Leboncoin

Rodolphe Quiédeville

Principe et généralités

13 mars 2014

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 1 / 58

Page 2: Présentation de Tsung chez Leboncoin

Tsung

début développement en 2001écrit en Erlangpublié sous GNU GPL V2projet Idealx initialement nommé IDX-Tsunamitest de serveur XMPP

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 2 / 58

Page 3: Présentation de Tsung chez Leboncoin

Caractéristiques

multi protocolesscalable (validé à 10 Millions d’utilisateurs)pas d’interface graphiqueextensible par pluginsscenarios XML avec validation XSLsondes de monitoringmodèle Stochastic avec distribution de Poisson

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 3 / 58

Page 4: Présentation de Tsung chez Leboncoin

Utilisateurs

TotalCMA-CGMMinistère des financesDailymotionSkyrock, LibérationLibertySurfGrid’5000

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 4 / 58

Page 5: Présentation de Tsung chez Leboncoin

Principe de fonctionnement

un contrôleur0 à N injecteursune cibleun scenariodes logsdes rapports de résultats

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 5 / 58

Page 6: Présentation de Tsung chez Leboncoin

Protocoles supportés en 1.5.0

HTTP/HTTPSWebsocketJabber/XMPPWebdavAMQP / MQTT / ZeroMQ (dev)LDAPPostgreSQLMySQL

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 6 / 58

Page 7: Présentation de Tsung chez Leboncoin

Fonctions avancées

variables dynamiquesgestion des cookies automatiqueanalyse du résulatthinktimedonnées aléatoiresextension par modules erlangboucles et tests...

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 7 / 58

Page 8: Présentation de Tsung chez Leboncoin

Installation

pre-requis : Erlang R15, erlang-crypto, sshpackage : Debian, Ubuntu, Fedora, ...sources : Githubscripts de creation paquet .deb dans les sourcesdéploiement à l’identique sur le contrôleur et les injecteurs

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 8 / 58

Page 9: Présentation de Tsung chez Leboncoin

Le XML tu l’aimes ou ...

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 9 / 58

Page 10: Présentation de Tsung chez Leboncoin

Scenario

Squelette de scenario

Example<?xml version="1.0"?><!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"><tsung loglevel="notice" version="1.0">

<clients />

<servers />

<options />

<load><arrivalphase />

</load>

<sessions><session>

<transaction /><transaction />

</session></sessions>

</tsung>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 10 / 58

Page 11: Présentation de Tsung chez Leboncoin

Scenario

Heureusement Tsung supporte les ENTITY

Example<?xml version="1.0"?><!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"[<!ENTITY clients SYSTEM "/opt/tsung/scr/clients.xml"><!ENTITY servers SYSTEM "/opt/tsung/scr/servers.xml"><!ENTITY load SYSTEM "/opt/tsung/scr/load.xml"><!ENTITY session1 SYSTEM "/opt/tsung/scr/sess1.xml"><!ENTITY session2 SYSTEM "/opt/tsung/scr/sess2.xml">]><tsung loglevel="notice" version="1.0">

&clients;&servers;

<options />

&load;

<sessions>&session1;&session2;

</sessions></tsung>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 11 / 58

Page 12: Présentation de Tsung chez Leboncoin

Scenario

La cible

Simple<servers>

<server host="www.target.fr" port="8080" type="tcp" /></servers>

Complexe<servers>

<server host="192.168.0.1" port="80" weight="4" type="tcp" /><server host="192.168.0.2" port="80" weight="2" type="tcp" /><server host="192.168.0.3" port="80" weight="2" type="tcp" /><server host="192.168.0.4" port="81" weight="1" type="tcp" />

</servers>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 12 / 58

Page 13: Présentation de Tsung chez Leboncoin

Scenario

Les injecteurs

Simple<clients>

<client host="foo" weight="1" /></clients>

Complexe<clients>

<client host="foo" weight="1" maxusers="1000" cpu="2"><ip value="10.9.195.12"></ip><ip value="10.9.195.13"></ip>

</client><client host="bar" weight="2" maxusers="3000"/><client host="lorem" weight="3" maxusers="3000" cpu="4"/>

</clients>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 13 / 58

Page 14: Présentation de Tsung chez Leboncoin

Scenario

La charge va définir l’injection des utilisateurs

Example<load>

<arrivalphase phase="1" duration="2" unit="minute"><users interarrival="5" unit="second"></users>

</arrivalphase>

<arrivalphase phase="2" duration="10" unit="minute"><users arrivalrate="1" unit="second"></users>

</arrivalphase>

<arrivalphase phase="3" duration="60" unit="minute"><users arrivalrate="10" unit="second"></users>

</arrivalphase></load>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 14 / 58

Page 15: Présentation de Tsung chez Leboncoin

Scenario

Limitation possible de la durée totale et du nombre d’utilisateursgénérés

Example<load duration="1" unit="hour">

<arrivalphase phase="1" duration="10" unit="minute"><users interarrival="5" unit="second" maxnumber="10"></users>

</arrivalphase>

<arrivalphase phase="2" duration="40" unit="minute"><users arrivalrate="1" unit="second"></users>

</arrivalphase></load>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 15 / 58

Page 16: Présentation de Tsung chez Leboncoin

Scenario

Les sessions, le subtile mélange des interactions

Example<sessions>

<session name="small" probability="90" type="ts_http"><transaction name="one">...

</session>

<session name="extended" probability="35" type="ts_http"><transaction name="foo">

...</session>

<session name="rss" probability="5" type="ts_http"><transaction name="home_ress">....

</session>

</sessions>

Depuis la 1.5.0 on peut utiliser weight au lieu de probability

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 16 / 58

Page 17: Présentation de Tsung chez Leboncoin

Scenario

Les transactions regroupent les requêtes en cas de besoin statistique

Example<transaction name="home">

<request><http url="/" />

</request>

<request><http url="/img.jpg" />

</request></transaction>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 17 / 58

Page 18: Présentation de Tsung chez Leboncoin

Scenario

Création du scenario

En mode proxy$ tsung-recorder startStarting Tsung recorder on port 8090"Record file: /home/rodo/.tsung/tsung_recorder20131003-1633.xml"

Depuis les logs$ log2tsung.pl

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 18 / 58

Page 19: Présentation de Tsung chez Leboncoin

Scenario

Les requêtes peuvent être relatives à la cible ou spécifiéesintégralement

Example<request>

<http url="/" method="GET" version="1.1" /></request>

<request><http url="/api/v1/foo?format=json" />

</request>

<request><http url="http://front-preprod.domain.lan/css/main.css" />

</request>

<request><http url="http://back-preprod.domain.lan/api/bar.json" />

</request>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 19 / 58

Page 20: Présentation de Tsung chez Leboncoin

Variables

Les requêtes peuvent inclure des variables substituées lors du run

Example<session name="rec20040316-08:47" probability="100" type="ts_http">

<request subst="true"><http url="/echo?symbol=%%_foo%%" method="GET"></http>

</request></session>

Ici foo sera substitué par sa valeur à chaque appel.

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 20 / 58

Page 21: Présentation de Tsung chez Leboncoin

Analyse de la réponse

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 21 / 58

Page 22: Présentation de Tsung chez Leboncoin

dyn_variable

Les variables dynamiques sont initialisées par lecture du résultat d’uneaction et peuvent être ré-utilisées dans les actions suivantes.

ExampleRegexp<request>

<dyn_variable name="nb_page" re="Page \d+ on (\d+)" /><http url="/articles" method="GET" version="1.1" ></http>

</request><request subst="true">

<http url="/articles?page=%%_nb_page%%" method="GET" version="1.1" ></http></request>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 22 / 58

Page 23: Présentation de Tsung chez Leboncoin

dyn_variable

Utilisation du xpath

Example<request>

<dyn_variable name="field1_value" xpath="//div[2]/@value"/><http url="/articles" method="GET" version="1.1" ></http>

</request>

<request><http url="/json/api/object/%%_field1_value%%" method="GET" version="1.1" ></http>

</request>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 23 / 58

Page 24: Présentation de Tsung chez Leboncoin

dyn_variable

Lecture d’un JSON

Example<request>

<dyn_variable name="nb_page" jsonpath="field.array[3].value"/><http url="/articles" method="GET" version="1.1" ></http>

</request>

<request subst="true"><http url="/articles?page=%%_nb_page%%" method="GET" version="1.1" ></http>

</request>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 24 / 58

Page 25: Présentation de Tsung chez Leboncoin

match

L’élément match permet de déclencher une action suivant le contenudu résultat de la requête.

Example<request>

<match do="loop" sleep_loop="5" max_loop="10" when="match">Retry</match><match do="abort" when="match">Error</match><http url="/index.php" method="GET">

</request>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 25 / 58

Page 26: Présentation de Tsung chez Leboncoin

Utilisation de variables dansles scenarii

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 26 / 58

Page 27: Présentation de Tsung chez Leboncoin

Appel de fonction

Appel de n’importe quelle fonction Erlang

Example<setdynvars sourcetype="erlang" callback="module_users:get_unique_id">

<var name="id1" /></setdynvars>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 27 / 58

Page 28: Présentation de Tsung chez Leboncoin

Modules erlang

Ecriture modules métiers en ... Erlang

Example<session name="rec20040316-08:47" probability="100" type="ts_http">

<request subst="true"><http url="/echo?symbol=%%symbol:new%%" method="GET"></http>

</request></session>

symbol.erl-module(symbol).-export([new/1]).

new({Pid, DynData}) ->case random:uniform(3) of

1 -> ‘‘France’’;2 -> ‘‘Irlande’’;3 -> ‘‘Japon’’

end.

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 28 / 58

Page 29: Présentation de Tsung chez Leboncoin

lecture de données

Lecture d’un fichier de données

Example<setdynvars sourcetype="file" fileid="userlist.csv" delimiter=";" order="iter"><var name="user" /><var name="pass" />

</setdynvars>

<request subst="true"><http url="/login.cgi" version="1.0" contents="user=%%_username%%&amp;password=%%_pass%%&amp;op=login"content_type="application/x-www-form-urlencoded" method="POST"></http>

</request>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 29 / 58

Page 30: Présentation de Tsung chez Leboncoin

Evaluation de code

Du code Erlang peut être introduit directement dans le scenario enutilisant un sourcetype eval

Example<setdynvars sourcetype="eval"

code="fun({Pid,DynVars})->{ok,Val}=ts_dynvars:lookup(md5data,DynVars),ts_digest:md5hex(Val) end.">

<var name="md5sum" /></setdynvars>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 30 / 58

Page 31: Présentation de Tsung chez Leboncoin

Autres sourcetype

Génération de valeurs aléatoires

random_number<setdynvars sourcetype="random_number" start="3" end="32">

<var name="rndint" /></setdynvars>

random_string<setdynvars sourcetype="random_string" length="8">

<var name="passwd" /></setdynvars>

constante<setdynvars sourcetype="value" value="foobar">

<var name="constant" /></setdynvars>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 31 / 58

Page 32: Présentation de Tsung chez Leboncoin

if, for, foreach, ...

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 32 / 58

Page 33: Présentation de Tsung chez Leboncoin

if

Conditionnel de base

Example<if var="tsung_userid" eq="3">

<request> <http url="/foo"/> </request><request> <http url="/bar"/> </request>

</if>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 33 / 58

Page 34: Présentation de Tsung chez Leboncoin

la boucle for

Un classique fort pratique

Example<for var="i" from="0" to="50" incr="1">

<transaction name=""home""><request> <http url="/index.html"/></request><request> <http url="/main.js"/></request><request> <http url="/img.png"/></request>

</transaction>

<request subst="true"> <http url="/ping?foo=%%_i%%"/></request>

<thinktime value="40" random="true" /></for>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 34 / 58

Page 35: Présentation de Tsung chez Leboncoin

foreach

Permet de boucler sur tous les éléments d’un tableau, régulièrementassociée avec un module renvoyant une liste d’urls

Example<setdynvars sourcetype="erlang"callback="geomodule:get_tiles">

<var name="list_url" /></setdynvars>

<foreach name="element" in="list_url"><request subst="true"><http url="%%_element%%" />

</request></foreach>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 35 / 58

Page 36: Présentation de Tsung chez Leboncoin

repeat

Sortie de boucle avec while ou until

Example<repeat name="myloop" max_repeat="40">

...<request>

<dyn_variable name="result" re="Result: (.*)"/><http url="/random" method="GET" version="1.1"></http>

</request>...<until var="result" eq="5"/>

</repeat>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 36 / 58

Page 37: Présentation de Tsung chez Leboncoin

En dev pour les devs

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 37 / 58

Page 38: Présentation de Tsung chez Leboncoin

Le tagging de requêtes

(1.5.1 dev) Tagger des requêtes permet d’exclure celles-ci d’un runparticulier

Scenario<request>

<http url="/" method="GET"></http></request><request tag="image">

<http url="/foo.png" method="GET"></http></request>

Particulièrement utile lors des phases de debugging du scénario (letag est loggé avec dumptraffic="protocol")

Option -xtsung -f SCENARIO.xml -x image start

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 38 / 58

Page 39: Présentation de Tsung chez Leboncoin

Les logs

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 39 / 58

Page 40: Présentation de Tsung chez Leboncoin

loglevel

Le niveau de log est relatif à chaque scenarioemergencycriticalerrorwarningnotice (default)infodebug

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 40 / 58

Page 41: Présentation de Tsung chez Leboncoin

fichiers de log

Les logs sont tous présents sur le contrôleur mais séparé dans unfichier par injecteurs.

tsung.dump=ERROR REPORT==== 13-Mar-2014::09:13:12 ===

** State machine <0.64.0> terminating

** Last message in was {timeout,#Ref<0.0.0.168>,end_thinktime}

** When State == think

** Data == {state_rcv,none,{{0,0,0,0},0},undefined,0,10000,"127.0.0.1",8080,gen_tcp,{proto_opts,negociate,10,600000,32768,32768,undefined,

undefined},false,1,undefined,true,undefined,{1394,698391,114389},4,4,false,undefined,0,[],<<>>,{http,0,0,-1,{none,none},false,false,{false,false},[]},0,2,524288,524288,{dyndata,[{tsung_userid,"2"}],{http_dyndata,"tsung",[]}},ts_http,[],undefined,full}

** Reason for termination =

** {{badmatch,false},[{erl_eval,expr,3,[]}]}

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 41 / 58

Page 42: Présentation de Tsung chez Leboncoin

Log

Le level notice permet par exemple l’accès aux variables

scenario<dyn_variable name="code" re="HTTP/1.1 (\d+)" />

[email protected]=INFO REPORT==== 23-Nov-2013::09:17:37 ===

ts_search:(6:<0.69.0>) DynVar (RE): Match (code=<<"200">>)

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 42 / 58

Page 43: Présentation de Tsung chez Leboncoin

dumptraffic

dumptraffic="protocol"

tsung.dump#date;pid;id;http method;host;URL;HTTP status;size;match;error1394696629.331706;<7218.63.0>;1;get;127.0.0.1;/index.html?f=0;200;1354;;1394696629.33297;<7218.63.0>;1;get;127.0.0.1;/index.html?f=1;200;1354;;1394696629.333824;<7218.63.0>;1;get;127.0.0.1;/index.html?f=2;200;1354;;1394696629.334671;<7218.63.0>;1;get;127.0.0.1;/index.html?f=3;200;1354;;

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 43 / 58

Page 44: Présentation de Tsung chez Leboncoin

dumptraffic

dumptraffic="true" permet de logger l’intégralité du traffic entre lesinjecteurs et la cible

tsung.dumpNewClient:1394697656.592317:1load:1Send:1394697656.612861:<7218.63.0>:GET /index.html?f=undefined HTTP/1.1Host: 127.0.0.1:8080User-Agent: tsung

Recv:1394697656.613965:<7218.63.0>:HTTP/1.1 200 OKServer: Yaws 1.94Date: Thu, 13 Mar 2014 08:00:56 GMTLast-Modified: Tue, 26 Jun 2012 06:10:45 GMTEtag: "3G0gq0ABxu9"Content-Length: 1165Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><head>...

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 44 / 58

Page 45: Présentation de Tsung chez Leboncoin

Backtrace

Une erreur dans le scenario génère une trace complète sur la consolelors du lancement

ExampleStarting Tsung"Log directory is: /tmp/20140313-0911"2542- fatal: {endtag_does_not_match,

{was,transaction,should_have_been,setdynvars}}Config Error, aborting ! {fatal,

{{endtag_does_not_match,{was,transaction,should_have_been,

setdynvars}},{file,"tiny.xml"},{line,32},{col,9}}}

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 45 / 58

Page 46: Présentation de Tsung chez Leboncoin

Monitoring de la cible

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 46 / 58

Page 47: Présentation de Tsung chez Leboncoin

Erlang

Monitoring directement intégré dans Tsung

Example<monitoring>

<monitor host="www-a" type="erlang"></monitor><monitor host="bigfoot-1" type="erlang"></monitor><monitor host="bigfoot-2" type="erlang"></monitor><monitor host="db" type="erlang"></monitor>

</monitoring>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 47 / 58

Page 48: Présentation de Tsung chez Leboncoin

SNMP

Monitoring par protocole SNMP

Example<monitoring>

<monitor host="geronimo" type="snmp"/><monitor host="db" type="snmp">

<snmp version="v2" community="mycommunity" port="11161"/></monitor>

</monitoring>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 48 / 58

Page 49: Présentation de Tsung chez Leboncoin

Munin

Utilisation des sondes Munin

Example<monitoring>

<monitor host="geronimo" type="munin"/></monitoring>

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 49 / 58

Page 50: Présentation de Tsung chez Leboncoin

Action !

La commande utile :

Exécution$ tsung -f scenario.xml -l logs/ start

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 50 / 58

Page 51: Présentation de Tsung chez Leboncoin

Les mesures

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 51 / 58

Page 52: Présentation de Tsung chez Leboncoin

Statistiques

request : Response time for each request.page : Response time for each set of requestsconnect : Duration of the connection establishment.reconnect : Number of reconnection.size_rcv : Size of responses in bytes.size_sent : Size of requests in bytes.session : Duration of a user’s session.users : Number of simultaneous users (it’s session has started,but not yet finished).connected : number of users with an opened TCP/UDPconnectioncustom transactionsHTTP status counter

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 52 / 58

Page 53: Présentation de Tsung chez Leboncoin

tsung.log

Example# stats: dump at 1218093520stats: users 247 247stats: connected 184 247stats: users_count 184 247stats: page 187 98.324 579.441 5465.940 2.177 9.237 595 58stats: request 1869 0.371 0.422 5.20703125 0.115 0.431 7444062 581stats: connect 186 0.427 0.184 4.47216796875 0.174 0.894 88665254 59stats: tr_login 187 100.848 579.742 5470.223 2.231 56.970 91567888 58stats: size_rcv 2715777 3568647stats: 200 1869 2450stats: size_sent 264167 347870# stats: dump at 1218093530stats: users 356 356stats: users_count 109 356stats: connected -32 215stats: page 110 3.346 0.408 5465.940 2.177 77.234 724492 245stats: request 1100 0.305 0.284 5.207 0.115 0.385 26785716 2450stats: connect 110 0.320 0.065 4.472 0.174 0.540 39158164 245stats: tr_login 110 3.419 0.414 5470.223 2.231 90.461 548628831 245stats: size_rcv 1602039 5170686stats: 200 1100 3550stats: size_sent 150660 498530

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 53 / 58

Page 54: Présentation de Tsung chez Leboncoin

tsung.log

Example{"stats": [{"timestamp": 1317413841, "samples": []},{"timestamp": 1317413851, "samples": [

{"name": "users", "value": 0, "max": 0},{"name": "users_count", "value": 0, "total": 0},{"name": "finish_users_count", "value": 0, "total": 0}]},

{"timestamp": 1317413861, "samples": [{"name": "users", "value": 0, "max": 1},{"name": "load", "hostname": "requiem", "value": 1, "mean":

0.0,"stddev": 0,"max": 0.0,"min": 0.0 ,"global_mean": 0,"global_count": 0},

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 54 / 58

Page 55: Présentation de Tsung chez Leboncoin

Les rapports

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 55 / 58

Page 56: Présentation de Tsung chez Leboncoin

Rapports

Génération des rapportsscript perl monolithique de basescripts et templates alternatifsMaheki

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 56 / 58

Page 57: Présentation de Tsung chez Leboncoin

Contribuer

Docs, https://tsung.readthedocs.org/Code, https://github.com/processone/tsung/CI, http://jenkins.quiedeville.org/view/Tsung/Bugtrack,https://support.process-one.net/browse/TSUN

Irc, freenode #tsungML, https://lists.process-one.net/mailman/listinfo/tsung-users

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 57 / 58

Page 58: Présentation de Tsung chez Leboncoin

Questions ?

Rodolphe Quiédeville

[email protected]://blog.rodolphe.quiedeville.org/

Document publié sous Licence Creative Commons BY-SA 2.0

Rodolphe Quiédeville (Freelance) Tsung - Leboncoin 13 mars 2014 58 / 58