Charge

fr en

Sommaire

  1. Résumé

  2. Documentation

  3. Installation

  4. Configuration

  5. Utilisation

  6. Contact


  1. Résumé
  2. 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 :

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


  3. Documentation
  4. De nombreuses informations peuvent être trouvées dans ce fichier, ainsi que dans les fichiers suivants :

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


  5. Installation
  6. Voir le fichier INSTALL.fr


  7. Configuration
  8. 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.

    1. Définition d'un serveur
    2. 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"/>

    3. Définition de paramètres
    4. 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,...).


    5. Définition de séquences d'opérations
    6. 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.


    7. Opérations disponibles
    8. 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


  9. Utilisation
  10. 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".


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

Linagora SourceForge.net Logo