Changer l’adresse IP source d’une requête HTTP lors d’un test avec JMeter

Dans la prochaine version de JMeter (la 2.4) et actuellement dans la version « nightly build », une nouvelle fonctionnalité permet le changement d’adresse IP source pour les requêtes HTTP transmises par JMeter.

L’intérêt de cette possibilité est (par exemple) de permettre de faire des tests de charges sur des architectures techniques comportant un suivi de session par adresse IP (typiquement des répartiteurs de charges).

Voici un petit mode d’emploi.

Préparation

Etape 1 : récupérer la bonne version de JMeter, à ce jour (décembre 2009), il faut prendre une version dite nightly build, c’est à dire de développement de JMeter. Par contre, dès que la version 2.4 sera sortie (je ne connais pas cette date) il suffira donc de prendre une version supérieure à la 2.4.

Etape 2 : définir et configurer sur sa machine JMeter les adresses IP que l’on veut utiliser dans son test. Pour cela, il faut utiliser la fonctionnalité d’adressage IP secondaire sur la machine JMeter. Il est en effet possible sur un ordinateur de définir plusieurs adresses IP pour une seule carte réseau (IP alias). La machine répondra donc à plusieurs adresses IP sur le réseau (elle sera « pingable » avec plusieurs adresses IP). Sous Windows (XP), c’est dans les options avancées de la configuration réseau, au niveau du protocole TCP/IP, paramètres avancées, Adresse IP. Sous Linux, soit avec le gestionnaire de connexion (network manager), soit dans les fichiers textes de configuration (ifcfg-ethx:x avec RedHat/CentOS/Fedora ou interfaces dans Debian/Ubuntu).

Etape 3 : créer un fichier texte contenant la liste des adresses IP que vous avez définie. Une adresse IP par ligne.

  • 192.168.7.80
  • 192.168.7.81
  • 192.168.7.82
  • 192.168.7.83
  • 192.168.7.84
  • etc…

Réalisation avec JMeter

Bon, maintenant que les préparations sont terminées, on peut passer à JMeter. Voici le plan de test simple pour mettre en œuvre un exemple simple (une seule requête HTTP).

On note, l’élément de configuration Source de données CSV, qui va permettre de récupérer les adresses IP provenant la liste.

La variable JMeter ADR_IP recevra donc une adresse IP à chaque itération de JMeter. Cette variable sera utilisé dans l’échantillon Requête HTTP HTTPClient dans le champ « Adresse IP source ».

Attention : Vous noterez que c’est un échantillon Requête HTTP HTTPClient et non un échantillon Requête HTTP.

Voilà, ensuite c’est presque prêt, on ajoute un récepteur de résultats, on configure par exemple le groupe d’unités à 1-1-10 et on lance.

Dans les logs du serveur Apache (qui est ici testé), on voit le changement d’adresse IP source (la première colonne). Et hop.

Le petit bémol, c’est qu’il n’est pas possible (pour l’instant) de le définir globalement dans un élément Paramètres HTTP par défaut. Il est donc nécessaire de poser la variable qui va faire changer l’adresse IP source dans chaque requête HTTPClient. (Un édition/remplacer globale dans le fichier JMX avec un editeur de texte le fera en une seule fois.)

./

Les commentaires sont fermés. Merci d'utiliser le groupe JMeter en français pour vos questions ou commentaires