Code Location: https://loadtesting.svn.sourceforge.net/svnroot/loadtesting/trunk/trunk
Browse
/
Download File
README.fr
Sommaire

1. Résumé
2. Documentation
3. Installation
4. Configuration
5. Utilisation
6. Contact


1. Résumé

Charge est un programme de test de charge. Il permet de tester la charge qu'un
annuaire LDAP peut recevoir. Un fichier de configuration en XML permet de
définir quelles sont les opérations à exécuter, dans quel ordre, et
éventuellement de générer des opérations LDAP à partir de règles simples.

En particulier, il est possible de définir :
- une ou plusieurs séquences d'opérations, qui s'exécuteront simultanément ;
- pour chaque opération, une liste d'ensembles de paramètres. Un des ensembles de
  paramètres sera choisi aléatoirement ;
- chaque liste d'ensembles de paramètres peut être générée à partir de variables.

Orienté LDAP à l'origine, Charge pourra facilement être amélioré afin de gérer
d'autres protocoles et types de serveurs.


2. Documentation

De nombreuses informations peuvent être trouvées dans ce fichier, ainsi que dans
les fichiers suivants :
- INSTALL.fr : ce qu'il faut et comment installer le programme
- FAQ.fr : foire aux questions
- FAQ_DEVOLOPERS.fr : foire aux questions spécialement pour les développeurs
- TODO.fr : liste de choses à faire, plutôt pour les développeurs
- COPYING : licence d'utilisation (GPL v2)

Ces informations ainsi que d'autres peuvent être trouvées sur le site
http://loadtesting.sourceforge.net 


3. Installation

Voir le fichier INSTALL.fr


4. Configuration

Le fichier de configuration de Charge est un fichier XML. Il se base sur la DTD
charge.dtd. Il commencera généralement par les lignes :
  <?xml version="1.0" encoding="utf-8"?>
  <!DOCTYPE charge SYSTEM "charge.dtd">
  <charge>
et finira par la ligne :
  </charge>

Lors d'un test de charge, vous aurez probablement besoin de définir
un serveur, une séquence d'opérations et différents paramètres pour ces
opérations.

4.1 Définition d'un serveur

La balise <server> permet de définir un nouveau serveur. Elle prend comme
paramètres :
- name : l'identifiant du serveur. Si ce nom est "default", ce serveur sera
considéré comme le serveur par défaut.
- host : l'adresse IP ou le nom d'hôte du serveur
- port : le port TCP/IP du serveur
- ldapversion : version du protocole LDAP à utiliser (2 par défaut)
- protocol : protocole utilisé (ldap par défaut, peut également être ldaps ou ldap+tls)

Exemple :
<server name="default" host="myldap.mydomain" port="389"/>

4.2 Définition de paramètres

Les paramètres sont créés par des listes d'ensembles de paramètres. En effet,
chaque opération peut prendre plusieurs paramètres (par exemple une
authentification LDAP prend comme paramètre l'identifiant de l'utilisateur et
son mot de passe). C'est ce qu'on appelera un ensemble de paramètres. Les listes
d'ensemble de paramètres permettent de définir plusieurs ensembles de paramètres
dont l'un sera choisi aléatoirement lors de l'exécution de l'opération.

La balise <list> permet de définir une liste d'ensembles de paramètres. Elle
prend comme paramètre :
- name : l'identifiant de la liste.

À l'intérieur de la balise <list>, il est possible de définir un ensemble de
paramètres à l'aide de la balise <items>.

À l'intérieur de la balise <items>, il est possible de définir chaque paramètre
à l'aide d'une balise <item>. <item> prend comme paramètre :
- value : valeur du paramètre.

Exemple :
<list name="connection">
  <items>
    <item value="uid=user,o=example,c=country"/>
    <item value="secret"/>
  </items>
</list>

Il est également possible de générer plusieurs ensembles de paramètres à l'aide
des options de la balise <items> :
- var : caractère à remplacer
- from : valeur de départ (1 par défaut)
- to : valeur de fin (1 par défaut)
- step : incrément (1 par défaut)

Exemple :
<list name="connections">
  <items var="@" from="1" to="3">
    <item value="uid=user@,o=example,c=country"/>
    <item value="secret"/>
  </items>
</list>
est équivalent à :
<list name="connections">
  <items>
    <item value="uid=user1,o=example,c=country"/>
    <item value="secret"/>
  </items>
  <items>
    <item value="uid=user2,o=example,c=country"/>
    <item value="secret"/>
  </items>
  <items>
    <item value="uid=user3,o=example,c=country"/>
    <item value="secret"/>
  </items>
</list>

À l'intérieur de la balise <list>, il est également possible d'utiliser la
balise <reflist>, permettant d'inclure une liste. Elle a pour paramètres :
- name : l'identifiant de la liste
- var : caractère à remplacer
- from : valeur de départ (1 par défaut)
- to : valeur de fin (1 par défaut)
- step : incrément (1 par défaut)
De même que pour une balise <items>, il est donc possible de générer une liste à
partir d'une autre liste en fonction d'une variable.

Exemple :
Voir charge.conf.complicated pour des exemples d'utilisation des <reflist>
(concaténation de listes, générations à plusieurs variables,...).

4.3 Définition de séquences d'opérations

Les séquences d'opérations sont définies par la balise <seq>. Celle-ci a pour
paramètres :
- nb : le nombre de sequences simultanées à créer (1 par défaut). Pour chaque
  séquence, un thread est créé.
- it : le nombre d'itérations d'une séquence (1 par défaut). Chaque séquence
  créée s'exécutera le nombre de fois indiqué ici.
- server : le serveur sur lequel ouvrir la connexion (par défaut le serveur
  désigné par "default", voir 4.1).
Si plusieurs balise <seq> sont définies, elles seront exécutées en même temps
(dans différents threads).

Dans chaque balise <seq>, on peut définir des balises <op> correspondant aux
opérations à exécuter. Les paramètres de celles-ci sont les suivants :
- type : l'opération a exécuter (voir 4.4)
- nb : le nombre d'exécutions de cette opération (1 par défaut) ; si la valeur
  "all" est spécifiée, tous les ensembles de paramètres seront pris
  successivement
- name : l'identifiant d'une liste d'ensemble de paramètres précédemment
  définie (facultatif, voir 4.2)

À l'intérieur de la balise <seq>, on pourra éventuellement utiliser des balises
<items> et/ou <reflist> comme défini au 4.2.

Exemple :
<seq nb="10" it="100" server="myserver">
  <op type="bind" nb="1" name="connection"/>
  <op type="unbind"/>
</seq>
Cette séquence créera 10 threads, chacun exécutant 100 opérations de
bind/unbind.

4.4 Opérations disponibles

Les opérations suivantes sont actuellement implémentées.

- bind (2 paramètres) : authentification LDAP
  - identifiant (dn) de l'utilisateur
  - mot de passe de l'utilisateur

- search (4 paramètres) : recherche LDAP
  - base de recherche (ex : "o=example,c=country")
  - étendue de la recherche (scope : "base", "one" ou "sub")
  - filtre de recherche ("" pour "*")
  - liste d'attributs séparés par des virgules ("" ou "" pour tous les attributs)

- modify (3 paramètres) : modification LDAP
  - dn de l'entrée à modifier
  - attribut à modifier
  - nouvelle valeur ("" pour supprimer l'attribut)

- add (2 paramètres) : ajout d'une entrée LDAP
  - branche dans laquelle sera fait l'ajout
  - identifiant de la personne à ajouter
  L'ajout sera une entrée LDAP du type :
  dn: uid=<identifiant>,<branche>
  objectClass: top
  objectClass: person
  objectClass: organizationalPerson
  objectClass: inetOrgPerson
  objectClass: extensibleObject
  sn: <identifiant>
  cn: <identifiant>
  uid: <identifiant>
  userPassword: <identifiant>

- delete (1 paramètre) : suppression LDAP
  - dn de l'entrée à supprimer

- unbind (pas de paramètre) : déconnexion LDAP

- delay (1 paramètre) : pause
  - temps en nanosecondes de la pause


5. Utilisation

L'exécutable charge prend un seul paramètre optionnel, le nom du fichier de
configuration XML. S'il n'est pas précisé, le paramètre par défaut est
"charge.conf".


6. Contact

Vous pouvez me contacter à l'adresse suivante en français (de préférence) ou en
anglais :
raphael.ouazana@linagora.com