Download et Upload

33 views
Skip to first unread message

MLH

unread,
Dec 5, 2009, 4:52:05 AM12/5/09
to JMeter en français, m.lah...@yahoo.fr
Bonjour les Jmeteriens,

J’ai un problème et/ou question concernant les download et upload
pendant un test de charge d’une application en protocole http.
Avec le Proxy JMeter, j’enregistre un scénario durant lequel il y a un
download depuis le serveur sur mon poste et un upload de mon poste
vers le serveur.
L’enregistrement se passe bien, les up et down load se font en une
dizaine de secondes.
Lorsque je rejoue le scénario sur un tir unitaire, dans l’arbre de
résultat tout est OK, aucune erreur. Mais je constate que le upload et
le download sont trop court (temps en ms alors qu’en réel et durant
l’enregistrement une dizaine de secondes) ; de plus le fichier censé
être downloader sur mon poste en local n’existe pas. Il n’a pas été
téléchargé pendant le tir unitaire de JMeter. De même le fichier censé
être transférer sur le serveur depuis mon poste ne l’est pas.

D’où ces questions :
Est-ce normal ? Ou JMeter permet-il de simuler la même chose que
durant l’enregistrement pour que le fichier downloader soit
télécharger sur mon poste local et le fichier uploader transférer vers
le serveur à chaque tir et éventuellement pour chaque utilisateur dans
le cas d’un tir non unitaire ?

En espérant que quelqu’un pourra m’aider car j’ai l’impression que
JMeter peut faire ce genre de choses.

@+

Milamber

unread,
Dec 6, 2009, 7:15:27 AM12/6/09
to jmet...@googlegroups.com
Bonjour,

Ci-dessous,

Le 05/12/2009 09:52, MLH a ecrit :
> Bonjour les Jmeteriens,
>
> J’ai un problème et/ou question concernant les download et upload
> pendant un test de charge d’une application en protocole http.
> Avec le Proxy JMeter, j’enregistre un scénario durant lequel il y a un
> download depuis le serveur sur mon poste et un upload de mon poste
> vers le serveur.
> L’enregistrement se passe bien, les up et down load se font en une
> dizaine de secondes.
> Lorsque je rejoue le scénario sur un tir unitaire, dans l’arbre de
> résultat tout est OK, aucune erreur. Mais je constate que le upload et
>

Si la requête HTTP au sens HTTP s'exécute correctement, c'est à dire à
une réponse en code 200 ou 304, et bien dans l'arbre la requête sera
marquée en vert (réussie). Malheureusement ce ne signifie pas que c'est
OK pour l'application, car cette dernière peut te renvoyer une page html
d'erreur qui aura un code 200 au sens HTTP...

> le download sont trop court (temps en ms alors qu’en réel et durant
> l’enregistrement une dizaine de secondes) ; de plus le fichier censé
>

Cela confirme que cela n'a pas bien marché coté application.

> être downloader sur mon poste en local n’existe pas. Il n’a pas été
> téléchargé pendant le tir unitaire de JMeter. De même le fichier censé
>

Normalement, le fichier download doit "apparaitre" par exemple dans
l'arbre de résultats, dans l'onglet Données de réponse, avec plein de
caractères "bizarres" si c'est un fichier binaire.

> être transférer sur le serveur depuis mon poste ne l’est pas.
>

Tu dois compléter ton scénario JMeter au niveau de la requête
correspondant à ton upload, dans le champ "Envoyer un fichier avec la
requête" > Chemin du fichier, il faut mettre soit le chemin complet
(préférable) c'est à dire "c:\repertoire\mon_fichier.pdf" ou soit
laisser que le nom du fichier, mais dans ce cas le fichier doit être
dans le répertoire jmeter_home\bin.
(pour l'explication : quand JMeter enregistre le scénario avec le proxy,
il ne voit que le nom du fichier uploadé, et donc enregistrement
seulement cette information. Le chemin ne lui étant pas visible (car
cela se passe sur le navigateur internet "en local")

> D’où ces questions :
> Est-ce normal ? Ou JMeter permet-il de simuler la même chose que
> durant l’enregistrement pour que le fichier downloader soit
> télécharger sur mon poste local et le fichier uploader transférer vers
> le serveur à chaque tir et éventuellement pour chaque utilisateur dans
> le cas d’un tir non unitaire ?
>

Oui possible. Tu dois simplement compléter / ajuster ton script.

> En espérant que quelqu’un pourra m’aider car j’ai l’impression que
> JMeter peut faire ce genre de choses.
>

A+
Milamber

> @+
>
> >
>
>

MLH

unread,
Dec 6, 2009, 12:33:14 PM12/6/09
to JMeter en français
Bonjour et merci pour cette réponse Milamber,

Donc pour les upload je dois envoyer le fichier avec la requête
respective. OK.

Pour le Download j'obtiens bien que des réponses 200 en vert. Et j'ai
bien le fichier avec plein de caractères bizarres.
Comment faire pour que ça se passe bien côté application ? Y a-t-il
quelque chose à paramétrer comme pour le upload ?

Merci encore à Milamber et ce forum.

@+

Milamber

unread,
Dec 6, 2009, 1:26:40 PM12/6/09
to jmet...@googlegroups.com
Bonjour,

Ci-desous

Le 06/12/2009 17:33, MLH a ecrit :
> Bonjour et merci pour cette réponse Milamber,
>
> Donc pour les upload je dois envoyer le fichier avec la requête
> respective. OK.
>
> Pour le Download j'obtiens bien que des réponses 200 en vert. Et j'ai
> bien le fichier avec plein de caractères bizarres.
> Comment faire pour que ça se passe bien côté application ? Y a-t-il
> quelque chose à paramétrer comme pour le upload ?
>

Non, si tu as bien les caractères bizarres, c'est que tu reçois bien ton
fichier.
Si tu veux, tu peux ajouter en fils de la requête HTTP qui fait le
download, un récepteur "Sauvegarder les réponses dans fichiers", en
mettant "mon_fichier" dans le "préfixe du nom de fichier".
Tu devrais avoir dans le répertoire bin de JMeter un fichier
"mon_fichier1.pdf" (le suffixe est ajouté par Jmeter si il reconnait le
type MIME). (dès fois, on trouve le fichier dans "Mes documents".)


> Merci encore à Milamber et ce forum.
>

De rien

A+
Milamber

MLH

unread,
Dec 7, 2009, 9:03:25 AM12/7/09
to JMeter en français
Bonjour,

Désolé de revenir à la charge, mais je ne comprends pas très bien
l'une des fonctionnalités de JMeter.
Car même en envoyant un fichier vers le serveur dans la requête http
en upload, le temps d'exécution du tir unitaire est trop court par
rapport au scénario réel.
D'où cette question :
Est-ce que JMeter exécute le scénario dans un temps identique au tir
réel ? Ou est-il normal que ça aille beaucoup plus vite sous JMeter ?

Merci à "celui" ou ceux qui pourront m'éclairer.

@+

Milamber

unread,
Dec 8, 2009, 2:19:03 AM12/8/09
to jmet...@googlegroups.com
Bonjour,

Normalement, pour chaque requête http (prise individuellement) c'est le
même temps (correspondant au temps de réponse de l'aller (la requête) et
le retour (la réponse))

Si cela s'exécute plus vite, la chose qui me vient à l'esprit, c'est
"est-ce que par hasard il n'y aurait pas un truc d'attente qui s'affiche
pendant l'upload ? par exemple un bout de flash qui fait tourner une
horloge, etc..."
Sinon, cela va plus vite ? mais est ce que cela réussit coté application
? tu vois bien ton fichier sur le serveur ?

A+
Milamber

Le 07/12/2009 14:03, MLH a ecrit :

MLH

unread,
Dec 8, 2009, 3:28:50 AM12/8/09
to JMeter en français
Bonjour Milamber,

Merci pour ton aide.

> Sinon, cela va plus vite ? mais est ce que cela réussit coté application
> ? tu vois bien ton fichier sur le serveur ?

En effet je ne vois pas le fichier Uploader sur le serveur ; de même
je ne vois pas le fichier Downloader sur mon poste.

> Normalement, pour chaque requête http (prise individuellement) c'est le
> même temps (correspondant au temps de réponse de l'aller (la requête) et
> le retour (la réponse))

OK.

> Si cela s'exécute plus vite, la chose qui me vient à l'esprit, c'est
> "est-ce que par hasard il n'y aurait pas un truc d'attente qui s'affiche
> pendant l'upload ? par exemple un bout de flash qui fait tourner une
> horloge, etc..."

Oui il y a une applet java qui s'exécute et qui dans le cas du
download ouvre un répertoire sur le poste local et dans le cas du
upload ouvre une fenêtre de transfert du fichier vers le serveur.

Les sessions sont bien gérées par Jmeter, il créé une nouvelle session
pour chaque tir. Par contre il y a des
"org.apache.struts.taglib.html.TOKEN=..." qui sont toujours identiques
d'un tir à l'autre. Le problème viendrait-il de là ?


@+

Milamber

unread,
Dec 8, 2009, 6:03:14 AM12/8/09
to jmet...@googlegroups.com
Bonjour,

Ci-desous,

2009/12/8 MLH <cbi...@gmail.com>


Bonjour Milamber,

Merci pour ton aide.

> Sinon, cela va plus vite ? mais est ce que cela réussit coté application
> ? tu vois bien ton fichier sur le serveur ?

En effet je ne vois pas le fichier Uploader sur le serveur ; de même
je ne vois pas le fichier Downloader sur mon poste.

> Normalement, pour chaque requête http (prise individuellement) c'est le
> même temps (correspondant au temps de réponse de l'aller (la requête) et
> le retour (la réponse))

OK.

> Si cela s'exécute plus vite, la chose qui me vient à l'esprit, c'est
> "est-ce que par hasard il n'y aurait pas un truc d'attente qui s'affiche
> pendant l'upload ? par exemple un bout de flash qui fait tourner une
> horloge, etc..."

Oui il y a une applet java qui s'exécute et qui dans le cas du
download ouvre un répertoire sur le poste local et dans le cas du
upload ouvre une fenêtre de transfert du fichier vers le serveur.


Ah! le coupable : l'applet java.
Maintenant je comprends mieux. Malheureusement pour toi, JMeter n'exécute pas les applets (au même titre que le javascript) car l'applet est exécutée du côté du navigateur. Donc il est bien 'normal' que cela ne marche pas pour ton scénario.
Néanmoins cela peut marcher si : 1/ ton applet communique bien en http avec le serveur (pour l'upload et le download), 2/ quand tu enregistres ton scénario avec JMeter, il faut s'assurer que ton JRE est aussi configuré pour utiliser le proxy de JMeter (afin de capter les échanges HTTP entre ton applet et le serveur).
Ensuite dans les requêtes captées de l'applet dans le JMeter, tu auras "les requêtes Applet" qui sont donc le résultat de l'exécution de l'applet (et non l'exécution en elle-même)



 

Les sessions sont bien gérées par Jmeter, il créé une nouvelle session
pour chaque tir. Par contre il y a des
"org.apache.struts.taglib.html.TOKEN=..." qui sont toujours identiques
d'un tir à l'autre. Le problème viendrait-il de là ?

Peut-être oui ou non.
Ce qui est certains, c'est bien souvent le Token n'est pas là pour la déco ;-) il est souvent utiliser pour suivre une session ou une transaction.
Il convient de mettre un post-processeur Extracteur d'expression régulière pour l'extraire de chaque page, et de le réutiliser (la variable créé par le Regexp) dans les requêtes envoyées.

A+
Milamber

 

MLH

unread,
Dec 8, 2009, 8:05:27 AM12/8/09
to JMeter en français
Voir ci-dessous please :

>Néanmoins cela peut marcher si :
>1/ ton applet communique bien en http avec
>le serveur (pour l'upload et le download)

C'est le cas.


>2/ quand tu enregistres ton scénario avec JMeter, il faut s'assurer que ton JRE est aussi configuré pour
>utiliser le proxy de JMeter (afin de capter les échanges HTTP entre ton
>applet et le serveur)

OK je savais pas. Maintenant c'est fait.

>Ensuite dans les requêtes captées de l'applet dans le JMeter, tu auras "les
>requêtes Applet" qui sont donc le résultat de l'exécution de l'applet (et
>non l'exécution en elle-même)

Les requêtes apparaissent bien.
Est-ce que ça signifie que j'ai uniquement le temps d'exécution de la
requête
et que par conséquent les fichiers ne seront jamais downloader et
uploader
respectivement en local et sur le serveur durant les tirs ??


PS : pour les Token à priori ça ne vient pas de là car JMeter y
associe les
bons "jsessionid" qu'il créé à chaque nouveau tir.



On 8 déc, 12:03, Milamber <milambersp...@gmail.com> wrote:
> Bonjour,
>
> Ci-desous,
>
> 2009/12/8 MLH <cbi1...@gmail.com>

Milamber

unread,
Dec 9, 2009, 2:14:41 AM12/9/09
to jmet...@googlegroups.com
Bonjour,

Le 08/12/2009 13:05, MLH a ecrit :
>
>> Ensuite dans les requêtes captées de l'applet dans le JMeter, tu auras "les
>> requêtes Applet" qui sont donc le résultat de l'exécution de l'applet (et
>> non l'exécution en elle-même)
>>
> Les requêtes apparaissent bien.
> Est-ce que ça signifie que j'ai uniquement le temps d'exécution de la
> requête
> et que par conséquent les fichiers ne seront jamais downloader et
> uploader
> respectivement en local et sur le serveur durant les tirs ??
>

Tu auras tes fichiers uploadés / downloadés car JMeter va reproduire les
requêtes HTTP (que tu as enregistrées avec le JRE configuré pour
utiliser le proxy Jmeter) qui amenent ces actions. Tu devrais pouvoir le
constater dans l'arbre de résultats au niveau des octets recus et dans
les onglets entêtes de réponses et données de réponses.


>
> PS : pour les Token à priori ça ne vient pas de là car JMeter y
> associe les
> bons "jsessionid" qu'il créé à chaque nouveau tir.
>

Les tokens dans les pages html sont une chose différente des jsessionid.
Ces derniers sont transmis en tant que cookies, donc il suffit d'avoir
un gestionnaire de cookies dans son arbre Jmeter pour que cela marche.
Pour les tokens, c'est un regexp extractor. Mais visiblement si cela
marche pour ton cas, c'est que le token ne doit pas servir dans ton
application.

A+
Milamber

MLH

unread,
Dec 9, 2009, 4:09:13 AM12/9/09
to JMeter en français
Bonjour,

Merci Milamber pour ton aide et la précision de tes réponses.

@+
> ...
>
> plus de détails »

MLH

unread,
Dec 10, 2009, 11:38:48 AM12/10/09
to JMeter en français
Bonjour,

Je me permets de ré-activer ce sujet pour apporter une précision qui
peut servir et me faire confirmer un "sentiment" :

La précision :
Contrairement à ce que j'avais écrit dans un post précédemment les
TOKEN ont bien une fonction importante et voici un lien pour les gérer
(désolé c'est en anglais) :
http://akbar-testing-note.blogspot.com/2008/12/how-to-get-token-value-with-jmeter.html
Ça fonctionne bien.

Le sentiment :
Ça fonctionne bien mais malheureusement, et malgré tous les
paramétrages vus avec Milamber dans les échanges, il m'est impossible
de faire exécuter par JMeter des applets en local dans le navigateur.
Même en transfert HTTP.
Les requêtes faisant appel aux applets java sont bien transmises au
serveur qui répond (avec les bons n° de session et les bons n° de
Token) mais JMeter ne télécharge jamais les fichiers en local sur mon
poste.
J'ai donc l'impression que ceci est imposible à faire avec JMeter.
Quelqu'un peut-il me confirmer cette impression ?
Y a-t-il un JMeteriens qui a déjà réussi à faire télécharger des
fichiers de son serveur vers son poste local avec Jmeter via une
applet java ?

Merci pour les témoignages.

@+
Reply all
Reply to author
Forward
0 new messages