JMeter : Exemple de script Java dans un élément Post-Processeur JSR223 pour enregistrer des données dans un fichier

Ce billet est une suite ou mise à jour de ce premier billet parlant d’un script BeanShell pour enregistrer des données dans un fichier texte.

Cette fois-ci, ce sera en utilisant un élément Post-Processeur JSR223, et surtout la dernière version de JMeter 3.0 avec ses nouvelles icônes et autres améliorations depuis l’époque du premier billet (2009!)

Soit le plan de test suivant :

Arbre JMeter  

Dans ce plan de test, on extrait avec l’Extracteur Expression Régulière des données de la page reçue, (ici un NOMBRE).

Extracteur RegExp

On ajoute au passage (car non-obligatoire) un élément Assertion Réponse pour s’assurer que l’expression régulière aura bien réussie (on vérifie si on (re)trouve le NOMBRE précédemment cherché dans la page).

Assertion Réponse JMeter

Et pour finir, on a un élément Post-Processeur JSR223 qui exécute un bout de code Java pour faire l’enregistrement de la variable NOMBRE dans un fichier.

Attention à bien sélectionner le langage Java dans le champ éponyme.

Post-Processeur JSR223 dans JMeter

Le code source Java est le suivant :

if (prev.isSuccessful()) {
    String nombre = vars.get("NOMBRE");
    try {
        BufferedWriter out = new BufferedWriter(new FileWriter("/tmp/nombre.csv",true));
        out.write(nombre +"\n");
        out.close();
    } catch (IOException e) {}
}

Quelques commentaires :

  • Le test sur le prev.isSuccessful() afin d’enregistrer seulement la requête HTTP rattachée a réussi,
  • Le vars.get(« NOMBRE »); permet de récupérer dans une variable Java (nombre) le contenu de la variable JMeter ${NOMBRE},
  • Le reste du code permet d’écrire dans le fichier /tmp/nombre.csv (chemin et nom à adapter en fonction de votre contexte).

Et voilà.

 

Nota : Cette manière d’opérer est une façon de faire.

Apache JMeter propose nativement :

  • La possibilité d’enregistrer le contenu de variable(s) JMeter directement dans un fichier CSV ou JTL de résultats via la fonctionnalités des « samples_variables ».
  • Ou bien, deuxième façon de faire : d’enregistrer l’ensemble des données de réponses d’une requête via le récepteur « Sauvegarder les réponses vers un fichier ».

Néanmois, il est parfois intéressant de pouvoir récupérer des variables JMeter durant un test, de faire des opérations dessus afin ensuite de créer un fichier de données pré-formaté à la volée.

./