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

[Article mis à jour le 08 décembre 2011, pour prise en compte de la version 2.5.1]

Depuis la version 2.4 de JMeter, 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 au niveau des répartiteurs de charges).

Voici un petit mode d’emploi.

Préparation

Étape 1 : récupérer JMeter (au moins la version 2.5) (ici c’est la 2.5.1 qui est présentée)

Étape 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 (appelé IP alias). La machine répondra donc à plusieurs adresses IP sur le réseau (elle sera « pingable » sur 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).

Étape 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ée dans l’échantillon Requête HTTP dans le champ « Adresse IP source ».

Attention : pour que la fonctionnalité de changement d’adresse IP fonctionne, il faut choisir une Implémentation compatible : soit HttpClient 3.1 ou soit HttpClient 4. Cf. capture ci-dessous.

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 HTTP. (Un édition/remplacer global dans le fichier JMX avec un editeur de texte le fera en une seule fois.)

./