S'abonner au Flux RSS

jeudi, mai 23 2013

Modules externes dans Tsung

Une fonctionnalité aussi intéressante que puissante de Tsung est de permetre de générer des paramètres ou des urls depuis des modules externes écrits en erlang. La documentation (1) officielle indique que les modules doivent être déployés dans le répertoire ebin de Tsung qui est généralement un répertoire système non accessible en écriture aux utilisateurs non privilégiés. Il existe une méthode alternative pour ceux qui ne possèdent pas les permissions root sur leurs machines, cela consiste à indiquer le chemin des librairies au niveau erlang en déclarant la variable ERL_LIBS qui contiendra le nom du répertoire contenant vos modules. Les fichiers .beam seront copiés dans un répertoire nommé obligatoirement ebin qui sera placé dans le répertoire indiqué dans ERL_LIBS. A noter que l'on peut indiquer plusieurs répertoires en les séparant par des virgules comme souvent pour les PATH.

Exemple :

ERL_LIBS=/home/rodo/modules

Les fichiers .beam seront dans

/home/rodo/modules/ebin/

jeudi, avril 11 2013

Module tsung de coordonnées aléatoires

Après avoir traité le cas des numéros de tuiles aléatoires j'ai écrit un module de génération d'url géographiques aléatoires.

De nombreux services géographiques utilisent la syntaxe lat=X&lon=Y&zoom=Z dans leur interface, c'est ce cas de figure que va permettre de traiter le module wms_randomcoord présenté ici, le module génére automatiquement la partie lat,lon de l'url et ce de façon aléatoire. Son utilisation dans un scénario Tsung se fait au travers de l'appel de la fonction url/1.

<setdynvars sourcetype="erlang" callback="wms_randomcoord:url">
   <var name="lonlat" />
</setdynvars>

<request subst="true">
    <http url="/?%%_lonlat%%&amp;zoom=12" method="GET" version="1.1"/>
 </request>

Pour ajouter de l'aléatoire au niveau du zoom on pourra jouter une session dans le scénario où on le fera varier entre deux bornes finies.

<session name='zoomrandom' probability='90'  type='ts_http'>
  <setdynvars sourcetype="erlang" callback="wms_randomcoord:url">
    <var name="lonlat" />
  </setdynvars>

  <setdynvars sourcetype="random_number" start="1" end="18">
    <var name="zoom" />
  </setdynvars>

  <request subst="true">
    <http url="/?%%_lonlat%%&amp;zoom=%%_zoom%%" method="GET" version="1.1"/>
  </request>
</session>

Des scenarii d'exemples sont disponibles dans le dépôt github tsung-tricks, voir les fichiers lonlat.xml et lonlat2.xml.