JMeter & Les Expressions Régulières... comment faire quand tout est bon ?

144 views
Skip to first unread message

Jean-Marie Markowski

unread,
Jan 28, 2014, 8:38:16 AM1/28/14
to jmet...@googlegroups.com

Bonjour à tous,

 

Quoi de mieux pour commencer l'année que de se retrouver avec une expression régulière ?

 

Je souhaiterais une fois de plus faire appel à vous concernant un petit problème dont j'ai la solution, mais cette dernière me fournis des résultats bizarres :)

 

En effet, ci-dessous la réponse à une requête HTTP:

 

367492739002012014$A/78549104 227X29#

 

 

 

L’expression régulière, contient le texte suivant : ([^$#]+)

 

 

Résultat fourni dans JMeter :

 

Match count: 2

Match[1][0]=

 

 

 

367492739002012014

Match[1][1]=

 

 

 

367492739002012014

Match[2][0]=A/78549104 227X29

Match[2][1]=A/78549104 227X29

 

 

A première vue tout à l’air de bien se passé, mais je constate qu’il y a des espaces blancs. De plus, lorsque je test sur Jakarta ORO j’ai la même réponse sans les espaces.

 

Je ne parviens pas à faire les modifications pour obtenir quelque chose du format :

 

Match[…]=367492739002012014

Match[…]=A/78549104 227X29

 

 

Auriez-vous une idée  ?

 

Merci d’avance
 

Vincent Daburon

unread,
Jan 30, 2014, 5:47:15 AM1/30/14
to jmet...@googlegroups.com
Bonjour,

Je pense qu'avec 2 expressions régulières c'est assez facile

([0-9]+)(.*?)#

Le premiere expression prend la partie chiffre
La 2ème expression le reste (mais avec le ? pour prendre la plus PETITE partie) suivi du #

Dans le "Regular Expression Extractor"
Reference Name = P_REG_TEST
Regular expression = ([0-9]+)(.*?)#
Template = $1$$2$
Match no = 1

"Echantillon Débogage"
JMeterVariables:
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@2e71d99e
P_REG_TEST=367492739002012014$A/78549104 227X29
P_REG_TEST_g=2
P_REG_TEST_g0=367492739002012014$A/78549104 227X29#
P_REG_TEST_g1=367492739002012014
P_REG_TEST_g2=$A/78549104 227X29
START.HMS=104428
START.MS=1391075068434
START.YMD=20140130
TESTSTART.MS=1391078298943


Utilisation des variables créés :
"BeanShell Sampler"
s1erePartie = vars.get("P_REG_TEST_g1");
s2emePartie = vars.get("P_REG_TEST_g2");

log.info("s1erePartie = " + s1erePartie);

log.info("s2emePartie = " + s2emePartie);

=> dans le fichier de logs :
2014/01/30 11:40:44 INFO  - jmeter.util.BeanShellTestElement: s1erePartie = 367492739002012014
2014/01/30 11:40:44 INFO  - jmeter.util.BeanShellTestElement: s2emePartie = $A/78549104 227X29

Remarque :
Pour tester j'ai pris un "jp@gc - Dummy Sampler" (du Jmeter Plugin) avec
le Reponse Data = 367492739002012014$A/78549104 227X29#


Vincent D.

Vincent Daburon

unread,
Jan 30, 2014, 5:49:57 AM1/30/14
to jmet...@googlegroups.com
Salut,

J'ai oublié qu'il fallait supprimer le caractère $
Voici la nouvelle expression (le $ est déspecialisé entre crochet)

([0-9]+)[$](.*?)#

Milamber

unread,
Jan 30, 2014, 2:24:32 PM1/30/14
to jmet...@googlegroups.com

Plus simple (me semble t-il) :

([^$]+)\$([^#]+)

L'antislash suffit pour 'désactiver' le $
On demande deux choses : 1/ une chaine se terminant par $ et 2/ une chaine se terminant par #.

Ensuite il suffit de récupérer la ${VARIABLE_g1} pour la première chaine et ${VARIABLE_g2} pour la seconde.

VARIABLE_g=2
VARIABLE_g0=367492739002012014$A/78549104 227X29
VARIABLE_g1=367492739002012014
VARIABLE_g2=A/78549104 227X29

(niveau tester de regexp ce donne :
Match count: 1
Match[1][0]=367492739002012014$A/78549104 227X29
Match[1][1]=367492739002012014
Match[1][2]=A/78549104 227X29
)


Note: l'élément Requête Java permet d'avoir un  "jp@gc - Dummy Sampler" facilement, suffit de mettre la chaîne de réponse en question dans le champ ResultData.

A+
Milamber



Le 30/01/2014 10:49, Vincent Daburon a ecrit :
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes JMeter en français.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse jmeter-fr+...@googlegroups.com.
Pour envoyer un message à ce groupe, adressez un e-mail à jmet...@googlegroups.com.
Visitez ce groupe à l'adresse http://groups.google.com/group/jmeter-fr .
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .

Vincent Daburon

unread,
Jan 31, 2014, 10:32:12 AM1/31/14
to jmet...@googlegroups.com
Bonjour,


> Note: l'élément Requête Java permet d'avoir un  "jp@gc - Dummy Sampler" facilement, suffit de mettre la chaîne de réponse en question dans le champ ResultData.

Je pensais que la "Java Request" classe JavaTest n'était qu'un exemple de code java pour écrire ses propres samplers java mais je n'ai pas pensé qu'il pouvait servir pour tester comme le "jp@gc - Dummy Sampler"...

Pour une phase cela peut suffire mais pour une page entière html, xml ou json, je préfère le "jp@gc - Dummy Sampler".

Cordialement
Vincent D.
Message has been deleted

Jean-Marie Markowski

unread,
Feb 19, 2014, 3:35:17 AM2/19/14
to jmet...@googlegroups.com

Bonjour à tous,

 

Avant tous je tiens à vous remercier pour votre aide, cela m'a été fort utile et j'ai pu comprendre certaine chose sur les syntaxe que vous avez utilisé.

 

Dans l'ordre chronologique en réponse à ce post, je tiens quand même vous faire part des résultats obtenu avec vos différentes solutions.

 

Le point de départ est : 367492739002012014$A/78549104 227X29#

 

1.    Vincent DABURON : ([0-9]+)(.*?)#   - Cette solution fonctionne mais le résultat renvoi le caractère $ devant la seconde variable

·        Match count: 1

·        Match[1][0]=367492739002012014$A/78549104 227X29#

·        Match[1][1]=367492739002012014    --> OK

·        Match[1][2]=$A/78549104 227X29    --> KO

 

 

2.    Vincent DABURON : ([0-9]+)[$](.*?)#   - Cette solution fonctionne correctement

·        Match count: 1

·        Match[1][0]=367492739002012014$A/78549104 227X29#

·        Match[1][1]=367492739002012014    --> OK

·        Match[1][2]=A/78549104 227X29     --> OK

 

 

3.    Milamber : ([^$]+)\$([^#]+)   - Cette solution fonctionne mais renvoi des espaces.

·        Match count: 1

·        Match[1][0]=

 

 

 

·        1389986114101022014$H/19210104 121M12

·        Match[1][1]=

 

 

·        1389986114101022014

·        Match[1][2]=H/19210104 121M12

 

  

Pour ma part, j’ai utilisé une forme provenant de vos réflexions : ([0-9]+)\$(.*?)#

 

Si vous avez des commentaires elles sont les biens venue.

 

Merci à tous.

 

Reply all
Reply to author
Forward
0 new messages