Re: [JMeter-fr] recuperer response message

85 views
Skip to first unread message

Milamber

unread,
May 18, 2009, 2:54:02 AM5/18/09
to jmet...@googlegroups.com
Bonjour,

Tu peux utiliser un extracteur d'expression régulière que tu attaches à
ta requête (en fils) pour récupérer le contenu (une partie ou tout)

Pour tour récupérer, voici les valeurs à mettre dans les champs du regexp :
Nom de référence : TOUT_LE_CONTENU
Expression régulière : (?s)(.*)
Canevas : $1$
Correspondant au num : 1
Valeur par défaut : ERREUR

Le (?s) c'est mettre JMeter en mode single line (il ne fait pas
attention aux retour à la ligne), et le (.*) veut dire n'importe quel
caractère (le .) de 1 à n fois (le *)
Ce qui sera récupérer sera mis dans la variable ${TOUT_LE_CONTENU}

Pourquoi les avoir mis dans un fichier XML ?

A+
Milamber

Le 18/05/2009 04:44, thomas...@gmail.com a ecrit :
> Bonjour a tous,
>
> J'aimerai savoir comment faire pour recuperer le contenu du response
> message. En fait, j'ai cree un java sampler qui genere un xml, le met
> dans la variable response message et je voudrai le recuperer pour
> pouvoir le poster dans une des variables d'une de mes requete http.
> J'ai parcouru le forum mais je n'ai pas trouve de discussion
> concernant cela.
>
> Je vous remercie d'avance pour votre aide.
>
>
> >
>
>

Milamber

unread,
May 19, 2009, 2:54:58 AM5/19/09
to jmet...@googlegroups.com
Bonjour,

SI je comprends bien, ton buffer (je suppose une variable de type string ou stringbuffer ?) reçoit les données de la requête précédente ? c'est toi qui les formattent en XML et les mets dans le buffer? (mais comme l'utiliser ensuite, la variable java n'est pas visible sur les autres échantillons ?)

Pour revenir à tes questions :

La aussi je ne suis pas certain de bien comprendre ce que tu fais ou essayer faire et dans quel but.
Tu devrais avoir un plan de test de ce type :

Plan de Test
|-- Groupe d'unités
   |-- Requete HTTP 1
      |-- Extracteur regexp (création de la variable TOUT_LE_CONTENU)
   |-- Requete HTTP 2 avec l'utilisation de la variable TLC

Pour l'exécuter chaque 30 secondes, avec un utilisateur, tu peux utiliser le compteur de débit constant
http://blog.milamberspace.net/index.php/2009/04/21/jmeter-utiliser-le-compteur-de-debit-constant-272.html

A+
Milamber

Le 19/05/2009 05:55, thomas...@gmail.com a ecrit :
Bonjour,

Merci encore pour l'information et surtout la reactivite. En fait je
ne les ai pas mis dans un fichier xml mais dans un buffer de format
xml qui contient des infos que j'envoie par une requete (sendInfos)
vers le serveur.
Quelques petites precisions : la requete http (sendInfos)qui va
recevoir  la variable ${TOUT_LE_CONTENU} n'a pas besoin d'etre fils a
son tour de l'extracteur d'expression ? Comment je peux faire si je
veux simuler un envoi de ses informations toutes les 30 s. J'ai essaye
ac le controlleur boucle mais en executant mon test plan, je n'ai
aucune reponse dans les listeners.

A+
Thomas R.

On May 18, 1:54 am, Milamber <milambersp...@gmail.com> wrote:
  
Bonjour,

Tu peux utiliser un extracteur d'expression régulière que tu attaches à
ta requête (en fils) pour récupérer le contenu (une partie ou tout)

Pour tour récupérer, voici les valeurs à mettre dans les champs du regexp :
Nom de référence : TOUT_LE_CONTENU
Expression régulière : (?s)(.*)
Canevas : $1$
Correspondant au num : 1
Valeur par défaut : ERREUR

Le (?s) c'est mettre JMeter en mode single line (il ne fait pas
attention aux retour à la ligne), et le (.*) veut dire n'importe quel
caractère (le .) de 1 à n fois (le *)
Ce qui sera récupérer sera mis dans la variable ${TOUT_LE_CONTENU}

Pourquoi les avoir mis dans un fichier XML ?

A+
Milamber

Le 18/05/2009 04:44, thomas.ra...@gmail.com a ecrit :

    

Milamber

unread,
May 19, 2009, 11:32:49 AM5/19/09
to jmet...@googlegroups.com
Bonjour,

Si tu ajoutes un échantillon Débogage en fils de ton controleur boucle et un Récepteur Arbre de résultats (en fils de plan de test), et que tu executes son test.
Que vois-tu dans le récepteur au niveau des échantillons Débogage, pour la variable TLC ?

Par ailleurs dans le fichier JMETER_HOME/bin/jmeter.log est-ce qu'il n'y aurait pas des erreurs ?

A+
Milamber

2009/5/19 Thomas Rasoarahona <thomas...@gmail.com>
Bonjour,

En fait, j'ai cree un Sampleur Java qui genere des informations (les mettent dans un StringBuffer) et les renvoie dans Response Message sous la forme : <?xml version="1.0" encoding="UTF-8"?><infos version="1">informations</infos>. Ensuite ce que je voulais faire c'est recuperer cette reponse (d'ou la question a l'origine de la discussion) grace a l'extracteur de reponse reguliere pour pouvoir la faire passer dans un appel http://monsite/sendInfos?xml=<?xml version="1.0" encoding="UTF-8"?><infos version="1">informations</infos> (xml encoder bien sur).
Mon scenario (non fonctionnel et je cherche encore pourquoi) ressemble donc a ca : 
Plan de Test
|-- Groupe d'unités (plusieurs users : pour l'instant 2, boucle permanente)
   |-- Controlleur boucle (5 boucles)
      |-- Sampleur Java     
           |-- Extracteur regexp (création de la variable TOUT_LE_CONTENU)
           |-- Compeur de debit constant
      |-- Requete sendInfos avec l'utilisation de la variable TLC

En fait je veux simuler l'envoi de ces infos toutes les 30s pendant 5 min par exemple (d'ou la boucle permanente dans le groupe d'unite )
Voila j'espere avoir ete un peu plus clair.
A +. Bonne journee.

Thomas R.

Milamber

unread,
May 20, 2009, 3:25:03 AM5/20/09
to jmet...@googlegroups.com
Bonjour,

Je suppose que c'est la visualisation du jmeter.log qui t'a indiqué qu'il manquait une classe ?

Soit l'extracteur regexp ne marche pas, soit avec ton échantillon java tu ne renvois pas tes résultats dans la bonne "variable' interne Jmeter. Est-ce que dans ton code d'échantillon Java, tu retournes bien la valeur de ton stringbuffer 'fichier xml' dans le samplerResult.setResponseData(monSB) et dans le type (sampleResult.setDataType(SamplerResulta.TEXT)) ?
Éventuellement fais un System.out.println (ou utilise le logger de Jmeter) pour afficher les getters de ton samplerResult. (Démarrer Jmeter depuis un console msdos pour voir les lignes s'afficher)

A+
Milamber

Le 20/05/2009 03:24, Thomas Rasoarahona a ecrit :
Bonjour,

Ca y est j'ai reussi a faire fonctionner le test plan si ca ne marchait pas c'est parce que j'avais oublie de rajouter des librairies dans jmeter. Cependant, dans la requete qui est sense recupere ce qui est contenu dans la variable TLC j'ai toujours ${TLC}. L'extracteur n'a apparement pas marche d'autant plus que la variable TLC n'apparait pas dans le recepteur au niveau des echantillons de Debogage.

A+

Thomas R. 

Milamber

unread,
May 20, 2009, 4:37:39 PM5/20/09
to jmet...@googlegroups.com
Bonjour,

Le setResponseMessage() est pour le message de retour associé au setResponseCode()
dans protocole HTTP, par exemple, c'est :
Code : 404
Message : Not Found

Deux solutions :
1/ Changer ton setResponseMessage par le setResponseData() (et eventuellement le setDataType() mais peut être cela peut marcher sans)

ou

2/ (c'est moins joli) changer le scope de ton extracteur regexp à "message de réponse" (le dernier à droite)

A+
Milamber

Le 20/05/2009 15:39, Thomas Rasoarahona a ecrit :
Bonjour,

En effet, c'est les informations du fichier jmeter.log qui m'ont indique qu'il me manquait des classes.

En fait, j'ai retourne la valeur du stringbuffer avec SamplerResult.setResponseMessage(monSB) et c'est tout. Est-ce que cela ne suffit pas ?
Ou dois-je faire le getResponseMessage(monSB) ? Je pensais que l'extracteur d'expr reguliere le faisait. 

Apparement d'apres mon IDE, la methode setResponseData() est deprecated. Comment utilise t-on la methode setDataType() ? est-elle indispensable ? 

A+

Thomas R.
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
0 new messages