<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MilamberSpace - JMeter &#187; Tests de charges</title>
	<atom:link href="http://blog.milamberspace.net/index.php/category/tests-de-charges/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.milamberspace.net</link>
	<description>Apache JMeter (surtout) mais aussi GNU/Linux, OpenSource, l&#039;Informatique, etc.</description>
	<lastBuildDate>Sun, 05 Feb 2012 09:51:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Apache JMeter 2.6 est sorti</title>
		<link>http://blog.milamberspace.net/index.php/2012/02/01/apache-jmeter-2-6-est-sorti-1061.html</link>
		<comments>http://blog.milamberspace.net/index.php/2012/02/01/apache-jmeter-2-6-est-sorti-1061.html#comments</comments>
		<pubDate>Wed, 01 Feb 2012 23:12:10 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Test fonctionnel]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[2.6]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=1061</guid>
		<description><![CDATA[Voici la première version de JMeter depuis la promotion du projet en tant que Top Level Domain (TLP) chez Apache. Pour rappel, JMeter était un sous projet de Jakarta, et était également le dernier de ses sous projets, les autres étant déjà devenu TLP. La version 2.6 est une version qui apporte de jolies améliorations [...]]]></description>
			<content:encoded><![CDATA[<p>Voici la première version de JMeter depuis la promotion du projet en tant que Top Level Domain (TLP) chez Apache. Pour rappel, JMeter était un sous projet de Jakarta, et était également le dernier de ses sous projets, les autres étant déjà devenu TLP.</p>
<p>La version 2.6 est une version qui apporte de jolies améliorations tout en amenant son lot de corrections d&#8217;anomalies.</p>
<p><span style="text-decoration: underline;">Voici quelques captures de quelques nouveautés importantes :</span><span id="more-1061"></span></p>
<p>La plus &#8216;remarquable&#8217; c&#8217;est l&#8217;ajout d&#8217;une barre d&#8217;outils sur la fenêtre principale de JMeter, qui permet d&#8217;avoir à portée de clic les principales actions de JMeter (dont le lancement d&#8217;un tir).</p>
<p><img class="aligncenter" title="JMeter 2.6 barre d'outils" src="/wp-content/images/jmeter-version-2-6/jmeter_26_01.png" alt="" width="994" height="91" /></p>
<p>Ensuite, une amélioration qui me semble importante pour ceux qui utilisent JMeter pour tester des applications de type GWT RPC, SOAP/XML, etc. C&#8217;est l&#8217;ajout d&#8217;un onglet <strong>Données POST</strong> dans l&#8217;échantillon <strong>Requête HTTP</strong>. Celui-ci permet de visualiser et éditer bien plus facilement les données envoyées lors de l&#8217;exécution de la requête.</p>
<p><img class="aligncenter" title="Données POST Requête HTTP" src="/wp-content/images/jmeter-version-2-6/jmeter_26_02.png" alt="" width="949" height="404" /></p>
<p>Dans le genre &#8216;quick and dirty&#8217;, c&#8217;est-à-dire lorsque vous devez faire un test de charge rapide pour un client (ou chef) qui vous le demande à la dernière minute genre à 17h30 un vendredi soir (si vous ce que je veux dire&#8230;;-)), voici le récepteur <strong>Graphique agrégé</strong> amélioré :</p>
<p><img class="aligncenter" title="GOptions Graphique Agregé" src="/wp-content/images/jmeter-version-2-6/jmeter_26_03.png" alt="" width="1007" height="640" /></p>
<p>De nombreuses options de personnalisation du graphique généré ont été ajoutées, par exemple la possibilité de filtrer par le nom via une regexp les résultats à grapher, ou bien la possibilité de fixer l&#8217;échelle des ordonnées à une valeur permettant la comparaison aisée avec un graphique d&#8217;un premier tir.</p>
<p><img class="aligncenter" title="Graphique Agrégé JMeter 2.6" src="/wp-content/images/jmeter-version-2-6/jmeter_26_04.png" alt="" width="1017" height="405" /></p>
<p>Une petite boîte de dialogue qui peut sauver des heures de travail : la confirmation de la suppression. Si vous avez déjà utiliser JMeter, vous avez peut-être comme moi déjà eu « l&#8217;accident de suppression », sans le faire exprès vous avez supprimé un noeud de l&#8217;arbre important, genre un <strong>Groupe d&#8217;unités</strong> ou un <strong>Contrôleur Transaction</strong> avec plein de fils. Et là c&#8217;est la catastrophe ! vous n&#8217;avez pas sauvegarder votre script depuis un bon moment, et toutes votre variabilisation est perdue&#8230; En effet, JMeter n&#8217;a pas (encore) de fonctionnalité de retour en arrière (le fameux Ctrl-Z). Tout cela pour dire que cette petite boîte de dialogue va certainement être utile. NB. La fonctionnalité de retour arrière va peut-être être intégrée dans une future version de JMeter, un patch ayant été proposé et est en cours d&#8217;évaluation.</p>
<p><img class="aligncenter" title="Confirmation de suppresion JMeter 2.6" src="/wp-content/images/jmeter-version-2-6/jmeter_26_05.png" alt="" width="667" height="212" /></p>
<p>Une autre amélioration sympathique pour (par exemple) ceux qui utilisent beaucoup des scripts BeanShell (ou autres langages), c&#8217;est la console de visualisation du fichier journal de JMeter (le jmeter.log).</p>
<p><img class="aligncenter" title="Menu Afficher la console JMeter 2.6" src="/wp-content/images/jmeter-version-2-6/jmeter_26_06.png" alt="" width="408" height="182" /></p>
<p>Cette console permettant donc de voir les messages informatifs et d&#8217;erreurs lors de l&#8217;exécution de JMeter. Utile donc pour la mise au point de script BeanShell ou pour surveiller le bon fonctionnement de JMeter.</p>
<p><img class="aligncenter" title="Console JMeter 2.6" src="/wp-content/images/jmeter-version-2-6/jmeter_26_07.png" alt="" width="1103" height="441" /></p>
<p>La version 2.6 de JMeter a plein <a href="http://jmeter.apache.org/changes.html">d&#8217;autres nouveautés</a>, étant donné que la présentation de ces nouveautés a été aussi améliorée, je vous invite à suivre<a href="http://jmeter.apache.org/changes.html"> ce lien pour avoir encore plus</a> de capture d&#8217;écran des nouveautés et aussi consulter la liste exhaustive des anomalies corrigées.</p>
<p>Dans tous les cas, la montée en version est recommandée.</p>
<p>Bon courage dans vos aventures JMeter !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2012/02/01/apache-jmeter-2-6-est-sorti-1061.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JMeter : Déterminer automatiquement le chemin d&#8217;un fichier Source de données CSV en fonction de son système d&#8217;exploitation</title>
		<link>http://blog.milamberspace.net/index.php/2011/11/12/jmeter-determiner-automatiquement-le-chemin-dun-fichier-source-de-donnees-csv-en-fonction-de-son-systeme-dexploitation-1009.html</link>
		<comments>http://blog.milamberspace.net/index.php/2011/11/12/jmeter-determiner-automatiquement-le-chemin-dun-fichier-source-de-donnees-csv-en-fonction-de-son-systeme-dexploitation-1009.html#comments</comments>
		<pubDate>Sat, 12 Nov 2011 18:26:52 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Test fonctionnel]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[test distribué]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=1009</guid>
		<description><![CDATA[Ce billet est inspiré ce commentaire de Vincent D. Merci à lui pour son commentaire et son autorisation d&#8217;utilisation dans ce billet. Imaginez que vous devez faire un test de charge distribué avec un poste contrôleur et deux postes injecteurs. Malheureusement, vos injecteurs n&#8217;ont pas le même système d&#8217;exploitation que votre poste contrôleur. Ce dernier [...]]]></description>
			<content:encoded><![CDATA[<p><em>Ce billet est inspiré <a href="http://blog.milamberspace.net/index.php/jmeter-pages/jmeter-variabilisation-de-donnees/comment-page-1#comment-1444">ce commentaire de Vincent D</a>. Merci à lui pour son commentaire et son autorisation d&#8217;utilisation dans ce billet.</em></p>
<p>Imaginez que vous devez faire un test de charge distribué avec un poste contrôleur et deux postes injecteurs. Malheureusement, vos injecteurs n&#8217;ont pas le même système d&#8217;exploitation que votre poste contrôleur. Ce dernier est sous Windows, et les injecteurs sont sous Linux.</p>
<p>Dans votre script JMeter, il y a un élément <strong>Source de données CSV</strong> qui vous permet (par exemple) d&#8217;avoir une liste d&#8217;identifiants/mot de passe de connexion.</p>
<p>Lors de la mise au point de votre script JMeter, vous utilisez seulement votre poste contrôleur, et la valeur du champ <strong>Nom de fichier</strong> dans votre <strong>Source de données CSV</strong> est :</p>
<pre>c:/Temp/liste_login.csv</pre>
<p>Ce chemin est valable sous Windows, mais bien entendu, ne sera pas valable sur vos injecteurs lorsque vous allez lancer le test distribué.</p>
<p>Juste avant ce test, il faut modifier le script JMeter pour changer la valeur du Nom de fichier par :</p>
<pre>/tmp/liste_login.csv</pre>
<p>Facile à faire, mais aussi facile à oublier de faire&#8230;</p>
<p>Voici un moyen de le faire automatiquement.<span id="more-1009"></span></p>
<p>Ci-dessous un plan de test d&#8217;exemple :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Plan de test" src="/wp-content/images/jmeter-39-chemin-os/jmeter_chemin_os_017.png" alt="" width="259" height="188" /></p>
<p>Par rapport au commentaire de Vincent D. j&#8217;ajoute un élément<a title="JMeter Manuel Groupes d'unités de début" href="http://jmeter.apache.org/usermanual/component_reference.html#setUp_Thread_Group"><strong> Groupe d&#8217;unités de début</strong></a>. Ce dernier permet de réaliser l&#8217;opération de définition du chemin de fichier <strong><span style="text-decoration: underline;">avant</span></strong> n&#8217;importe quel autre <strong>Groupe d&#8217;unités</strong>.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Groupe d'unités de début" src="/wp-content/images/jmeter-39-chemin-os/jmeter_chemin_os_018.png" alt="" width="390" height="266" /></p>
<p>Donc, dans le Groupe d&#8217;unités de début, on place un Échantillon BeanShell qui va contenir un simple bout de code (Java) pour :</p>
<ol>
<li>Récupérer le nom du système d&#8217;exploitation (depuis les Propriétés Java)</li>
<li>Faire un test sur le nom « windows », si oui on créé une propriété JMeter « CHEMIN » qui aura la valeur du chemin dans le poste Windows</li>
<li>Sinon, ce sera le chemin Linux / Unix et Mac</li>
</ol>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="BeanShell de détermination du système d'exploitation et définition du chemin en propriétés JMeter" src="/wp-content/images/jmeter-39-chemin-os/jmeter_chemin_os_019.png" alt="" width="407" height="281" /></p>
<p>Le code :</p>
<pre>String sOs = System.getProperty("os.name").toLowerCase();
 if (sOs.contains("windows")) {
 props.setProperty("CHEMIN", "c:/Temp/");
 } else {
 // couvre Linux/Unix/Mac
 props.setProperty("CHEMIN", "/tmp/");
 }</pre>
<p>On notera que le chemin est déposé dans une propriété JMeter (et non une variable JMeter), car la propriété JMeter se propage à travers les Groupes d&#8217;unités, ce qui n&#8217;est pas le cas de la variable JMeter.</p>
<p>Ensuite, on peut donc utiliser notre propriété CHEMIN dans l&#8217;élément Source de données CSV pour avoir un chemin adapté en fonction du système d&#8217;exploitation.</p>
<p>On utilisera la fonction JMeter __P() pour récupérer la valeur de la propriété CHEMIN :</p>
<pre>${__P(CHEMIN)}</pre>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Utilisation de la propriété du chemin" src="/wp-content/images/jmeter-39-chemin-os/jmeter_chemin_os_020.png" alt="" width="525" height="289" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2011/11/12/jmeter-determiner-automatiquement-le-chemin-dun-fichier-source-de-donnees-csv-en-fonction-de-son-systeme-dexploitation-1009.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Envoyer un email avec JMeter via son élément Requête SMTP</title>
		<link>http://blog.milamberspace.net/index.php/2011/07/03/envoyer-un-email-avec-jmeter-via-son-element-requete-smtp-924.html</link>
		<comments>http://blog.milamberspace.net/index.php/2011/07/03/envoyer-un-email-avec-jmeter-via-son-element-requete-smtp-924.html#comments</comments>
		<pubDate>Sun, 03 Jul 2011 17:10:16 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Supervision]]></category>
		<category><![CDATA[Test fonctionnel]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[SMTP]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=924</guid>
		<description><![CDATA[Ce billet est un petit « howto » pour vous montrer comment utiliser JMeter pour envoyer un email (courriel), ici en utilisant le serveur de messagerie SMTP de Google Mail. Pour rappel, le SMTP (Simple Message Transfer Protocol) est le protocole normalisé d&#8217;échange de message électronique (email). Dans JMeter depuis la version 2.4, un nouvel échantillon appelé [...]]]></description>
			<content:encoded><![CDATA[<p>Ce billet est un petit « howto » pour vous montrer comment utiliser JMeter pour envoyer un email (courriel), ici en utilisant le serveur de messagerie SMTP de Google Mail.</p>
<p>Pour rappel, le <a href="http://fr.wikipedia.org/wiki/SMTP">SMTP</a> (Simple Message Transfer Protocol) est le protocole normalisé d&#8217;échange de message électronique (email). Dans JMeter depuis la version 2.4, un nouvel échantillon appelé Requête SMTP a été ajouté pour avoir un client SMTP qui envoi donc un email.</p>
<p>Bien entendu, JMeter étant un outil de test de charge, avec cet échantillon, on peut faire un test de charge sur un serveur de messagerie franchement installé pour vérifier sa tenue de charge et robustesse (ce qui est mon cas), on peut aussi utiliser cet échantillon SMTP pour par exemple s&#8217;envoyer un email de rapport à la fin d&#8217;un test de charge « long » (qui dure plusieurs heures ou jours), ou tout simplement dans le cadre de la mise en place d&#8217;un système d&#8217;alerte en cas de temps de réponse dégradé d&#8217;un site web (par exemple) avec un script qui s&#8217;exécute toutes les x minutes ou heures.</p>
<p>Revenons à notre sujet, voici notre arbre JMeter tout simple pour ce test :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Arbre JMeter pour SMTP" src="/wp-content/images/jmeter-35-requete-smtp/01-jmeter-requete-smtp.png" alt="" width="253" height="102" /></p>
<p><span id="more-924"></span>Et voici l&#8217;exemple d&#8217;échantillon SMTP configuré pour envoyer un message de test en utilisant les serveurs de Gmail :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Requête SMTP JMeter" src="/wp-content/images/jmeter-35-requete-smtp/02-jmeter-requete-smtp.png" alt="" width="1001" height="736" /></p>
<p><em>NB : ici est présenté l&#8217;échantillon SMTP de la future version 2.4.1 (en date du billet)</em></p>
<p>Rien de méchant en soit, si vous utilisez votre compte Gmail en accès SMTP/POP ou SMTP/IMAP, la plupart de ces paramètres vous rappellerons quelque chose. Sinon, voici quelques commentaires, section par section.</p>
<p>Section <strong>Paramètres du serveur</strong> :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Requête SMTP section Paramètres du serveur" src="/wp-content/images/jmeter-35-requete-smtp/03-jmeter-requete-smtp.png" alt="" width="799" height="156" /></p>
<p>Juste au-dessus de la section, il y a bien entendu la traditionnelle section d&#8217;identification de l&#8217;échantillon et le champ <em>Commentaires</em>.</p>
<ul>
<li> <span style="text-decoration: underline;">Serveur :</span> ici on indique le nom ou l&#8217;adresse IP du serveur SMTP</li>
<li> <span style="text-decoration: underline;">Port : </span>il existe plusieurs ports « officiels » pour le SMTP, le premier et plus ancien est le 25, sa version avec une couche SSL pour le chiffrement du transport sur le réseau est 465 (SMTPS), et une version permettant de chiffrement la partie authentification lors de l&#8217;établissement d&#8217;une session SMTP via StartTLS est le port 587. Chez GMail, on a la possibilité d&#8217;avoir ces trois ports ouverts.</li>
</ul>
<p>Section <strong>Paramètres du courriel</strong> :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Requête SMTP JMeter Section Paramètres du courriel" src="/wp-content/images/jmeter-35-requete-smtp/04-jmeter-requete-smtp.png" alt="" width="782" height="138" /></p>
<p>Ici c&#8217;est assez clair pour toute personne qui a déjà envoyée un email.</p>
<p>Section <strong>Paramètres d&#8217;authentification</strong> :</p>
<p style="text-align: left;"><img class="aligncenter" style="border: 1px solid black;" title="Section Paramètres d'authentification" src="/wp-content/images/jmeter-35-requete-smtp/05-jmeter-requete-smtp.png" alt="" width="791" height="71" /><br />
Lors d&#8217;un envoi d&#8217;un message via SMTP, il est possible au préalable de s&#8217;identifier. C&#8217;est souvent une mesure obligatoire demandée par les serveurs de messagerie pour lutter contre le SPAM et l&#8217;usurpation d&#8217;identité d&#8217;un email. Chez Gmail, c&#8217;est obligatoire.</p>
<p style="text-align: left;">Section <strong>Paramètres de sécurité</strong> :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Section Paramètres de sécurité" src="/wp-content/images/jmeter-35-requete-smtp/06-jmeter-requete-smtp.png" alt="" width="896" height="95" /></p>
<p>Ici, on en revient aux Ports et options : SMTP : 25, SMTPS : 465 et StartTLS : 587</p>
<ul>
<li> Le port 25 n&#8217;utilise pas généralement de sécurité, donc on choisira « Pas de fonctionnalité de sécurité » si on a mis 25 dans le champ Port plus haut.</li>
<li> Le port 465 utilise la couche SSL pour sécuriser le transport sur le réseau (chiffrement), donc on cochera « Utiliser SSL »</li>
<li> Et le dernier port 587, c&#8217;est la négociation StartTLS de l&#8217;authentification, qui demandera donc de cocher « Utiliser StartTLS »</li>
<li> Les autres paramètres concerne l&#8217;option « Utiliser SSL » et sont relatives aux modes d&#8217;utilisation et de confiance des certificats SSL. Pour un serveur SMTPS ayant un certificat SSL reconnu par une autorité de certification reconnue dans JAVA (donc déjà présent dans le fichier cacerts de l&#8217;environnement JAVA), il n&#8217;y a rien besoin de cocher. Par contre, si vous utilisez un certificat SSL auto-signé ou signé par une autorité de certification non reconnue, vous avez la possibilité de faire confiance à tous les certificats ou bien d&#8217;utiliser votre propre coffre de certificat local contenant la clé publique de votre autorité de certification ou certificat serveur (au lieu donc du cacerts).</li>
<li> La petite option « Force le StartTLS » est pour donc force l&#8217;utilisation de la négociation StartTLS, souvent en conjugaison avec le port 25 (car on peut avoir du StartTLS sur le port 25).</li>
</ul>
<p>Section <strong>Paramètres du message</strong> :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Section Paramètres du message" src="/wp-content/images/jmeter-35-requete-smtp/07-jmeter-requete-smtp.png" alt="" width="985" height="229" /></p>
<p>Ici c&#8217;est bien entendu le cœur de l&#8217;échantillon, avec le message à envoyer. Les champs Sujet, Message et Fichier attaché sont explicites de part leurs noms.</p>
<ul>
<li> L&#8217;option « Supprimer l&#8217;entête Sujet » permet d&#8217;envoyer un message sans sujet</li>
<li> L&#8217;option « Ajouter un horodatage dans le sujet » permet d&#8217;avoir un timestamp correspondant au nombre de secondes depuis le 1er Janvier 1970 au moment de l&#8217;envoi du message</li>
<li> L&#8217;option « Envoyer le message en texte » permet de revenir à un format de message SMTP dans sa version la plus simple (format RFC 822) au lieu d&#8217;un format MIME (multipart/mixed) qui lui est plus souple pour les messages avec accents et pièce jointe.</li>
<li> Et l&#8217;option « Envoyer un message .eml » est pour envoyer un message au format EML (format d&#8217;export d&#8217;un message Outlook et utiliser dans beaucoup de client de messagerie).</li>
</ul>
<p>Section <strong>Paramètres supplémentaires :</strong></p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Section Paramètres supplémentaires" src="/wp-content/images/jmeter-35-requete-smtp/08-jmeter-requete-smtp.png" alt="" width="782" height="57" /></p>
<p><span style="text-decoration: underline;">Deux dernières options :</span></p>
<ul>
<li> « Calculer la taille du message » qui fait ce que son nom indique, utile notamment dans le cas des messages avec pièces jointes et pour servir ensuite dans les statistiques de JMeter</li>
<li> « Activer les traces de débogage ? » vous permettra de voir les échanges entre JMeter et le serveur SMTP sur la sortie standard (la console généralement)</li>
</ul>
<p>Voilà, on en arrive à l&#8217;exécution de notre envoi.</p>
<p>Voici avec un récepteur Arbre de résultats, le résultat :</p>
<p style="text-align: left;"><img class="aligncenter" style="border: 1px solid black;" title="Résultat Requête SMTP" src="/wp-content/images/jmeter-35-requete-smtp/09-jmeter-requete-smtp.png" alt="" width="701" height="456" /><br />
Ce sont les champs habituels de l&#8217;arbre de résultats, avec une mention pour le Message de retour, ici, indiquant : « Message successfully sent ! » signifiant la réussite de l&#8217;envoi.</p>
<p style="text-align: left;">On peut regarder sur l&#8217;onglet Données de réponses (et aussi Requête), on trouvera le corps du message email envoyé. Ci-dessous avec un message MIME (par défaut)</p>
<p style="text-align: left;"><img class="aligncenter" style="border: 1px solid black;" title="Résultat Requête SMTP JMeter" src="/wp-content/images/jmeter-35-requete-smtp/10-jmeter-requete-smtp.png" alt="" width="776" height="209" /><br />
Et ici un message en texte pur (les balises MIME ont disparut).</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Résultat Requête SMTP JMeter" src="/wp-content/images/jmeter-35-requete-smtp/11-jmeter-requete-smtp.png" alt="" width="744" height="159" /></p>
<p>Ceci clôture ce petit comment-faire pour envoyer un email avec JMeter. Bon courage.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2011/07/03/envoyer-un-email-avec-jmeter-via-son-element-requete-smtp-924.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deux tutoriels sur la réalisation de plan de tests de charge</title>
		<link>http://blog.milamberspace.net/index.php/2011/04/30/deux-tutoriels-sur-la-realisation-de-plan-de-tests-de-charge-887.html</link>
		<comments>http://blog.milamberspace.net/index.php/2011/04/30/deux-tutoriels-sur-la-realisation-de-plan-de-tests-de-charge-887.html#comments</comments>
		<pubDate>Sat, 30 Apr 2011 07:14:37 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[Plan de test]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=887</guid>
		<description><![CDATA[Antonio Gomes Rodrigues nous livre deux tutoriels sur la réalisation de plan de tests de charge : Créer des plans de tests de charge réalistes Développer un plan de test avec JMeter Par le passé, il avait déjà publié un autre tutoriel sur l&#8217;audit de performances d&#8217;une application en Java EE.]]></description>
			<content:encoded><![CDATA[<p>Antonio Gomes Rodrigues nous livre deux tutoriels sur la réalisation de plan de tests de charge :</p>
<ul>
<li><a href="http://arodrigues.developpez.com/tutoriels/java/performance/plan-test-realiste/">Créer des plans de tests de charge réalistes</a></li>
<li><a href="http://arodrigues.developpez.com/tutoriels/java/performance/developper-plan-test-avec-jmeter/">Développer un plan de test avec JMeter</a></li>
</ul>
<p>Par le passé, il avait déjà publié <a href="http://blog.milamberspace.net/index.php/2009/10/14/tutoriel-sur-laudit-de-performances-dune-application-en-java-ee-519.html">un autre tutoriel sur l&#8217;audit de performances d&#8217;une application en Java EE</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2011/04/30/deux-tutoriels-sur-la-realisation-de-plan-de-tests-de-charge-887.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Intégration d&#8217;un test JMeter dans Hudson avec le plugin Hudson Performance</title>
		<link>http://blog.milamberspace.net/index.php/2011/04/27/integration-dun-test-jmeter-dans-hudson-avec-le-plugin-hudson-performance-879.html</link>
		<comments>http://blog.milamberspace.net/index.php/2011/04/27/integration-dun-test-jmeter-dans-hudson-avec-le-plugin-hudson-performance-879.html#comments</comments>
		<pubDate>Wed, 27 Apr 2011 21:28:38 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Test fonctionnel]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[Husdon]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=879</guid>
		<description><![CDATA[Hudson est une plate-forme d&#8217;intégration continue, JMeter est un outil de test de charge et aussi de tests fonctionnels (on a tendance à l&#8217;oublier, mais pour faire du test de charge, il faut savoir faire du test fonctionnel). Que diriez vous d&#8217;intégrer dans Hudson l&#8217;exécution d&#8217;un test (de charge) JMeter, et d&#8217;avoir un beau graphique [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hudson-ci.org/">Hudson</a> est une plate-forme d&#8217;intégration continue, JMeter est un outil de test de charge et aussi de tests fonctionnels<em> (on a tendance à l&#8217;oublier, mais pour faire du test de charge, il faut savoir faire du test fonctionnel)</em>. Que diriez vous d&#8217;intégrer dans Hudson l&#8217;exécution d&#8217;un test (de charge) JMeter, et d&#8217;avoir un beau graphique pour voir l&#8217;évolution des temps de réponses de votre application en fonction des &#8216;builds&#8217; Hudson / versions de votre application ?</p>
<p>La réponse à cette question est l&#8217;objet de ce tutoriel.<span id="more-879"></span></p>
<p>Les pré-requis :</p>
<ul>
<li>Un serveur Hudson (le mien est sous Linux Debian)</li>
<li>Un script JMeter pour tester une application ou tout autre chose que sait tester JMeter (voir les <a title="Tutoriels JMeter" href="http://blog.milamberspace.net/index.php/jmeter-pages">différents tutoriels sur ce même blog</a>)</li>
<li><strong>Changer le format de sortie des résultats de JMeter (au lieux de CSV, passer en JTL (xml)), pour cela, modifier dans le fichier jmeter.properties, la proprité suivante : jmeter.save.saveservice.output_format=xml</strong></li>
<li>L&#8217;installation du plugin « Hudson Performance plugin » depuis le gestionnaire des plugins intégré à Hudson, cf. la capture ci-dessous.</li>
</ul>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Installation du plugin JMeter Performance dans Hudson" src="/wp-content/images/jmeter-34-hudson/01_20110417_JMeter_integration_dans_Hudson_html_7cfc88d2.png" alt="" width="959" height="595" /></p>
<p>On va créer une nouvelle tâche dans Hudson (New Job).</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Création d'une nouvelle tâche dasn Hudson" src="/wp-content/images/jmeter-34-hudson/02_20110417_JMeter_integration_dans_Hudson_html_26467644.png" alt="" width="635" height="409" /></p>
<p>&nbsp;</p>
<p>On saisit un nom de tâche, puis on sélectionne l&#8217;option « Build a free-style software project » avant de clique sur le bouton <strong>OK.</strong></p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Création du projet de build" src="/wp-content/images/jmeter-34-hudson/03_20110417_JMeter_integration_dans_Hudson_html_3e22f302.png" alt="" width="624" height="481" /></p>
<p>Dans le formulaire de configuration de la tâche, dans la section <strong>Build</strong> on choisit l&#8217;invocation d&#8217;un script Ant.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Invocation script Ant dans Hudson" src="/wp-content/images/jmeter-34-hudson/04_20110417_JMeter_integration_dans_Hudson_html_m534d64ff.png" alt="" width="540" height="179" /></p>
<p>Dans la configuration de l&#8217;invocation de Ant, on saisit la cible « all », et on ajoute dans les propriétés :</p>
<pre>jmeter.dir=/var/lib/hudson/jobs/TestJMeter/jakarta-jmeter-2.4.1</pre>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Configuration de la tâche Ant" src="/wp-content/images/jmeter-34-hudson/05_20110417_JMeter_integration_dans_Hudson_html_5e02afb2.png" alt="" width="765" height="336" /></p>
<p>Plus bas dans le formulaire de configuration de la tâche, on retrouve le plugin Performance. On le coche afin de l&#8217;activer.</p>
<p>Dans le champ <strong>Report files</strong> on saisit : « **/*.jtl » afin d&#8217;exécuter tous les fichiers .jtl (c&#8217;est-à-dire les fichiers script de test de JMeter) qui se trouveront dans l&#8217;espace de travail de la tâche (le workspace)</p>
<p>On pourra aussi configurer le champ <strong>Performance threshold</strong> afin de modifier le statut du « build » en fonction du pourcentage d&#8217;erreur trouvées.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Activation du plugin performance hudson" src="/wp-content/images/jmeter-34-hudson/06_20110417_JMeter_integration_dans_Hudson_html_503d61c7.png" alt="" width="788" height="255" /></p>
<p>&nbsp;</p>
<p>Voilà, c&#8217;est fini pour le formulaire de configuration de la tâche, il faut bien entendu enregistrer le formulaire.</p>
<p>Maintenant, on entre dans une petite phase de &laquo;&nbsp;ligne de commande&nbsp;&raquo; afin de préparer son workspace.</p>
<p>On dépose sur le serveur Hudson, l&#8217;archive de JMeter (le tgz plutôt que le zip afin d&#8217;avoir les bons droits positionnés sur les fichiers).</p>
<p>Dans notre cas, l&#8217;archive jakarta-jmeter-2.4.1.tgz <em>(nb. j&#8217;utilise une version de test de JMeter, la 2.4.1 n&#8217;est pas encore sortie à ce jour)</em> est positionné dans /var/lib/hudson/jobs/TestJMeter</p>
<p>Ensuite on procède à la décompression de l&#8217;archive :</p>
<pre>hudson@hudson:~/jobs/TestJMeter$ tar xfz jakarta-jmeter-2.4.1.tgz</pre>
<p>On créé quelques répertoires :</p>
<pre>hudson@hudson:~/jobs/TestJMeter$ mkdir workspace</pre>
<pre>hudson@hudson:~/jobs/TestJMeter$ mkdir workspace/scripts</pre>
<p>On copie le fichier script JMeter dans le répertoire ci-dessous :</p>
<pre>hudson@hudson:~/jobs/TestJMeter$ cp /tmp/test_webservices.jmx workspace/scripts</pre>
<p>On édite le fichier de la tâche JMeter/Ant avec le contenu suivant :</p>
<pre>hudson@hudson:~/jobs/TestJMeter$ vi workspace/build.xml</pre>
<pre>&lt;project default="all"&gt;
 &lt;!-- Define an environment variable pointing to JMETER folder or change this --&gt;
 &lt;property environment="env"/&gt;
 &lt;property name="jmeter-home" location="${jmeter.dir}"/&gt;
 &lt;!-- Should report include response data for failures? --&gt;
 &lt;property name="show-data" value="y"/&gt;
 &lt;!-- ant-jmeter.jar comes with jmeter, be sure this is the release you have --&gt;
 &lt;path id="ant.jmeter.classpath"&gt;
     &lt;fileset dir="${jmeter-home}/extras"&gt;
         &lt;include name="ant-jmeter*.jar"/&gt;
     &lt;/fileset&gt;
 &lt;/path&gt;
 &lt;taskdef
     name="jmeter"
     classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"
     classpathref="ant.jmeter.classpath" /&gt;
 &lt;target name="clean"&gt;
     &lt;delete dir="results"/&gt;
     &lt;delete file="jmeter.log"/&gt;
     &lt;mkdir dir="results/jtl"/&gt;
     &lt;mkdir dir="results/html"/&gt;
 &lt;/target&gt;
 &lt;target name="test" depends="clean"&gt;
     &lt;jmeter
          jmeterhome="${jmeter-home}"
          resultlogdir="results/jtl"&gt;
          &lt;testplans dir="scripts" includes="*.jmx"/&gt;
     &lt;/jmeter&gt;
 &lt;/target&gt;

 &lt;property name="lib.dir" value="${jmeter-home}/lib"/&gt;
 &lt;!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ --&gt;
 &lt;path id="xslt.classpath"&gt;
     &lt;fileset dir="${lib.dir}" includes="xalan*.jar"/&gt;
     &lt;fileset dir="${lib.dir}" includes="serializer*.jar"/&gt;
 &lt;/path&gt; 

 &lt;!-- This is not needed for the plugin, but it produces a nice html report
 which can be saved usin hudson's archive artifact feature --&gt;
 &lt;target name="report" depends="test"&gt;
     &lt;xslt
         classpathref="xslt.classpath"
         basedir="results/jtl"
         destdir="results/html"
         includes="*.jtl"
         style="${jmeter-home}/extras/jmeter-results-detail-report_21.xsl"&gt;
         &lt;param name="showData" expression="${show-data}"/&gt;
     &lt;/xslt&gt;
     &lt;!-- add images for best report display --&gt;
     &lt;copy file="${jmeter-home}/extras/expand.jpg" tofile="results/html/expand.jpg"/&gt;
     &lt;copy file="${jmeter-home}/extras/collapse.jpg" tofile="results/html/collapse.jpg"/&gt;
 &lt;/target&gt;
 &lt;target name="all" depends="test, report"/&gt;
&lt;/project&gt;</pre>
<p>Une fois que le fichier build.xml est enregistré, revenir sur l&#8217;interface de gestion de Hudson. Au niveau de son projet, choisir le lien « Build Now » afin de lancer le premier test.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Lancement du build" src="/wp-content/images/jmeter-34-hudson/07_20110417_JMeter_integration_dans_Hudson_html_8c990ba.png" alt="" width="477" height="237" /></p>
<p>&nbsp;</p>
<p>Hudson va donc lancer le test JMeter et afficher son succès ou échec. Depuis la console de gestion Hudson, au niveau de la tâche, il est possible d&#8217;avoir la sortie de console. La capture d&#8217;écran montre un exemple d&#8217;exécution réussie.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Sorite console pour le build hudson" src="/wp-content/images/jmeter-34-hudson/08_20110417_JMeter_integration_dans_Hudson_html_17036ef0.png" alt="" width="845" height="652" /></p>
<p>&nbsp;</p>
<p>Sur la page d&#8217;accueil du projet dans Husdon, après quelques exécutions de « build », de nouveau graphiques apparaissent. Le lien <strong>Performance Trend</strong> permet d&#8217;avoir le détail des indicateurs de performances.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Page d'accueil du projet avec les graphiques du test (quand il n'y a qu'un seul jtl)" src="/wp-content/images/jmeter-34-hudson/09_20110417_JMeter_integration_dans_Hudson_html_38e33079.png" alt="" width="1063" height="572" /></p>
<p>&nbsp;</p>
<p>La capture ci-dessous montre les graphiques des indicateurs de performance.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Ecran Performance Trend" src="/wp-content/images/jmeter-34-hudson/10_20110417_JMeter_integration_dans_Hudson_html_m2f1373d1.png" alt="" width="794" height="419" /></p>
<p>Il est également possible de consulter le rapport HTML produit par la tâche JMeter/Ant. Pour cela, on se place sur la section Workspace, puis results &gt; html et on clique sur le fichier HTML.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="rapport HTML produit par la tâche JMeter/Ant" src="/wp-content/images/jmeter-34-hudson/11_20110417_JMeter_integration_dans_Hudson_html_5525e859.png" alt="" width="662" height="259" /></p>
<p>La capture d&#8217;écran ci-dessous montre le rapport HTML produit par la tâche JMeter/Ant.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Rapport HTML produit par la tâche JMeter/Ant" src="/wp-content/images/jmeter-34-hudson/12_20110417_JMeter_integration_dans_Hudson_html_1d15a588.png" alt="" width="1041" height="447" /></p>
<p>Et voilà pour ce petit tutoriel de « mise en liaison » de JMeter et Hudson.</p>
<p>Bien entendu, en disposant des tâches hudson habituelles de construction d&#8217;une release de son application (récupération SVN, compilation, ear/war et déploiement sur un serveur de test) avant l&#8217;exécution du test JMeter et la génération du rapport, on a un cycle de release avec test de charge.</p>
<p>./</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2011/04/27/integration-dun-test-jmeter-dans-hudson-avec-le-plugin-hudson-performance-879.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JMeter : petit test JMS Publication &#8211; Abonnement avec ActiveMQ</title>
		<link>http://blog.milamberspace.net/index.php/2011/01/05/jmeter-petit-test-jms-publication-abonnement-avec-activemq-799.html</link>
		<comments>http://blog.milamberspace.net/index.php/2011/01/05/jmeter-petit-test-jms-publication-abonnement-avec-activemq-799.html#comments</comments>
		<pubDate>Wed, 05 Jan 2011 13:53:18 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[Abonnement]]></category>
		<category><![CDATA[ActiveMQ]]></category>
		<category><![CDATA[JMS]]></category>
		<category><![CDATA[Publication]]></category>
		<category><![CDATA[Publisher]]></category>
		<category><![CDATA[Subscriber]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=799</guid>
		<description><![CDATA[Pour faire suite à ce billet qui montre un test JMS de type Point-à-Point, voici un autre test JMS mais cette fois avec la notion d&#8217;abonnement (subscriber) et de publication (publisher). Comme pour le premier test, nous continuons avec la messagerie orientée message (MOM) Apache ActiveMQ. Après avoir téléchargé l&#8217;archive binaire d&#8217;ActiveMQ, on le décompresse, [...]]]></description>
			<content:encoded><![CDATA[<p>Pour faire suite à ce billet qui montre un <a href="http://blog.milamberspace.net/index.php/2010/09/11/jmeter-petit-test-jms-point-a-point-avec-activemq-737.html">test JMS de type Point-à-Point</a>, voici un autre test JMS mais cette fois avec la notion d&#8217;abonnement (subscriber) et de publication (publisher).</p>
<p>Comme pour le premier test, nous continuons avec la messagerie orientée message (MOM) <a href="http://activemq.apache.org/">Apache ActiveMQ</a>.</p>
<p>Après avoir téléchargé l&#8217;archive binaire d&#8217;ActiveMQ, on le décompresse, puis on le démarre avec ces commandes :</p>
<pre>cd &lt;Repertoire_ActiveMQ&gt;
./bin/activemq start</pre>
<p>Il est possible de vérifier que le serveur ActiveMQ fonctionne bien en se connectant sur <a href="http://localhost:8161/admin/">http://localhost:8161/admin/</a> correspondant à l&#8217;URL de l&#8217;interface d&#8217;administration.</p>
<p>Du coté de JMeter voici comment ce présente notre petit test :</p>
<p><img class="aligncenter" style="border: 1px solid black;" title="Script JMeter Pub / Sub" src="/wp-content/images/jmeter31-jms-pub-sub/jms01.png" alt="" width="470" height="237" />Tout d&#8217;abord, on notera la présence de <strong>2 Groupes d&#8217;unités</strong> : un réservé pour l&#8217;Abonnement et un autre pour la Publication. <span id="more-799"></span>En effet, avec ces deux <strong>Groupes d&#8217;unités</strong> on va demander à JMeter de gérer &laquo;&nbsp;deux utilisateurs virtuels&nbsp;&raquo; indépendamment, l&#8217;un chargé de publier des messages, l&#8217;autre chargé de profiter de son abonnement à la file de messages c&#8217;est-à-dire la réception des messages publiés par l&#8217;autre utilisateur.</p>
<p><span style="text-decoration: underline;">Regardons en détail :</span></p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="JMeter : Groupes d'unités Abonnement" src="/wp-content/images/jmeter31-jms-pub-sub/jms02.png" alt="" width="437" height="261" /></p>
<p>Tout d&#8217;abord, on a le <strong>Groupe d&#8217;unités</strong> réservé à l&#8217;Abonnement, c&#8217;est-à-dire la récupération des messages publiés par le publieur. Ici on fait simple : 1 utilisateur virtuel qui fait 4 itérations.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="JMeter : Requête JMS Abonnement" src="/wp-content/images/jmeter31-jms-pub-sub/jms03.png" alt="" width="908" height="372" /></p>
<p>Ensuite vient la requête <strong>JMS Abonnement</strong> avec les paramètres suivants :</p>
<ul>
<li><strong>Fabrique de connexion 	initiale :</strong> org.apache.activemq.jndi.ActiveMQInitialContextFactory</li>
<li><strong>URL du fournisseur :</strong> tcp://localhost:61616 (les valeurs par défaut de ActiveMQ)</li>
<li><strong>Fabrique de connexion :</strong> ConnectionFactory</li>
<li><strong>Destination : </strong>dynamicTopics/MyStaticTopic1 (ici on utilise une fonctionnalité 	d&#8217;ActiveMQ avoir des Topics (sujets) qui sont créés dynamiquement 	dès qu&#8217;il est sollicité) (sinon il faut créer le topic via 	l&#8217;interface d&#8217;administration d&#8217;ActiveMQ)</li>
<li><strong>Evaluer : </strong>Au 	démarrage. Ici c&#8217;est une nouvelle fonctionnalité ajoutée <strong>après</strong> la version 2.4. C&#8217;est en effet une <a href="http://jakarta.apache.org/jmeter/nightly.html">version de développement</a> que 	j&#8217;utilise ici. Par défaut dans les versions &lt; 2.4 le nom de la 	Destination est &laquo;&nbsp;static&nbsp;&raquo;, il est lu au démarrage du test 	(avant même le lancement des unités d&#8217;exécution) et reste figé 	durant tout le tir, ce qui a pour conséquence d&#8217;interdire une 	valeur contenant une variable JMeter). L&#8217;option &laquo;&nbsp;Au démarrage&nbsp;&raquo; 	correspond à cette fonctionnalité. L&#8217;option &laquo;&nbsp;A chaque 	échantillon&nbsp;&raquo; demande à JMeter de procéder à l&#8217;évaluation 	de la valeur de la Destination juste avant l&#8217;exécution de la 	requête. Cette option permet d&#8217;avoir des variables JMeter dans le 	champ Destination.</li>
<li><strong>Nombre d&#8217;échantillons à 	agréger : </strong>1 (on récupère 1 seul message par exécution)</li>
<li><strong>Délai :</strong> 10000 ms 	correspondant au temps d&#8217;attente maximum que la requête JMS 	Abonnement va patienter pour recevoir un message avant de se mettre 	en échec de récupération.</li>
</ul>
<p>Maintenant on passe au <strong>Groupe d&#8217;unités</strong> réservé à la Publication.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Groupe d'unités Publication" src="/wp-content/images/jmeter31-jms-pub-sub/jms-pub01.png" alt="" width="398" height="262" /></p>
<p>Même traitement : 1 utilisateur virtuel qui fait 4 itérations. (On garde ainsi une cohérence avec le groupe d&#8217;unités Abonnement.)</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="JMeter : Action test" src="/wp-content/images/jmeter31-jms-pub-sub/jms-pub02.png" alt="" width="513" height="163" /></p>
<p>Ici on a l&#8217;élément <strong>Action test</strong> qui va faire faire une pause de 2 secondes à l&#8217;unité. Pourquoi ? Parce qu&#8217;il faut (pour ce scénario) être certain que le topic (sujet) possède bien des requêtes d&#8217;Abonnement en écoute <strong>avant</strong> la publication d&#8217;un message. On laisse ainsi le temps au Groupe d&#8217;unités Abonnement d&#8217;avoir sa requête en écoute de la file.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="JMeter : Requête JMS Publication" src="/wp-content/images/jmeter31-jms-pub-sub/jms-pub03.png" alt="" width="903" height="602" /></p>
<p>On regarde maintenant les paramètres de la requête de Publication JMS :</p>
<ul>
<li><strong>Fabrique de connexion 	initiale :</strong> org.apache.activemq.jndi.ActiveMQInitialContextFactory</li>
<li><strong>URL du fournisseur :</strong> tcp://localhost:61616 (les valeurs par défaut de ActiveMQ)</li>
<li><strong>Fabrique de connexion :</strong> ConnectionFactory</li>
<li><strong>Destination : </strong>dynamicTopics/MyStaticTopic1 (ici on utilise un fonctionnalité 	d&#8217;ActiveMQ avoir des Topics (sujets) qui sont créés dynamiquement 	dès qu&#8217;il est sollicité) (sinon il faut créer le topic via 	l&#8217;interface d&#8217;administration d&#8217;ActiveMQ)</li>
<li><strong>Evaluer : </strong>Au 	démarrage. (voir l&#8217;explication ci-dessus dans les paramètres de la 	requête JMS d&#8217;Abonnement)</li>
<li><strong>Nombre d&#8217;échantillons à 	agréger : </strong>1 (on envoi 1 seul message par exécution)</li>
<li><strong>Message texte:</strong> un simple 	message avec une fonction JMeter (time) pour avoir un timestamp.</li>
</ul>
<p>Voilà, il reste maintenant à tester l&#8217;exécution du scénario. Le serveur ActiveMQ est bien démarré, on lance le script (un petit CTRL-R).</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Résultats JMeter sur tir JMS Pub/sub" src="/wp-content/images/jmeter31-jms-pub-sub/jms-result01.png" alt="" width="658" height="336" /></p>
<p>Dans le récepteur <strong>Arbre de résultats</strong>, on peut observer les résultats. On peut y voir une alternance entre la Publication et l&#8217;Abonnement. (après chaque publication, le message publié est reçu par l&#8217;échantillon Abonnement).</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Résultats JMeter sur tir JMS Pub/sub" src="/wp-content/images/jmeter31-jms-pub-sub/jms-result02.png" alt="" width="772" height="351" /></p>
<p>Avec l&#8217;onglet Requête du récepteur <strong>Arbre de résultats</strong>, on peut avoir les détails de la requête JMS, en particulier le <em>JMSMessageId</em> qui permet de faire (si besoin) un rapprochement entre l&#8217;émission et la réception des messages JMS.</p>
<p><img class="aligncenter" style="border: 1px solid black;" title="Résultats JMeter sur tir JMS Pub/sub" src="/wp-content/images/jmeter31-jms-pub-sub/jms-result03.png" alt="" width="724" height="463" />Pour finir, on regarde un élément JMS Abonnement, qui lui, indique qu&#8217;un message a été correctement reçu et affiche les détails de la requête JMS, avec son <em>JMSMessageId</em>.</p>
<p><span style="text-decoration: underline;">On notera que :</span> la requête JMS Abonnement arrive <strong>après</strong> la publication (ce qui est normal) dans l&#8217;arbre de résultats, bien que la date de début d&#8217;échantillon (onglet <strong>Résultat de l&#8217;échantillon</strong>) est 2 secondes plus tôt que la requête JMS Publication précédente. Du coup le temps de réponse est de 2022 ms, car 1/ les deux <strong>Groupes d&#8217;unités </strong>démarrent en même temps, 2/ mais celui de la Publication a un élément <strong>Action test </strong>effectuant une pause de 2 secondes, 3/ donc l&#8217;élément JMS Abonnement attends 2 secondes que l&#8217;élément Publication envoi son message, 4/ et ainsi, on peut calculer (grossièrement) un temps de réponse (récupération du message) réel ici de 22 milli-secondes (2022 – 2000 = 22).</p>
<p>Voilà pour cette très petite introduction aux tests JMS Pub/Sub.</p>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2011/01/05/jmeter-petit-test-jms-publication-abonnement-avec-activemq-799.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JMeter: petit test JMS Point à point avec ActiveMQ</title>
		<link>http://blog.milamberspace.net/index.php/2010/09/11/jmeter-petit-test-jms-point-a-point-avec-activemq-737.html</link>
		<comments>http://blog.milamberspace.net/index.php/2010/09/11/jmeter-petit-test-jms-point-a-point-avec-activemq-737.html#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:38:41 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Test fonctionnel]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[ActiveMQ]]></category>
		<category><![CDATA[JMS]]></category>
		<category><![CDATA[Point-à-Point]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=737</guid>
		<description><![CDATA[Nous allons, dans ce petit billet, monter un scénario JMeter pour exécuter un test d&#8217;un serveur de Messagerie Orientée Messages (MOM). Pour ce dernier, nous allons prendre Apache ActiveMQ, sachant qu&#8217;il existe d&#8217;autres MOM comme IBM WebSphere MQ (ex-MQSeries), Tibco, etc. Ici, nous allons montrer un test JMS en Point-à-Point. L&#8217;autre type de test possible [...]]]></description>
			<content:encoded><![CDATA[<p>Nous allons, dans ce petit billet, monter un scénario JMeter pour exécuter un test d&#8217;un serveur de <a href="http://fr.wikipedia.org/wiki/MOM">Messagerie Orientée Messages (MOM)</a>. Pour ce dernier, nous allons prendre <a href="http://activemq.apache.org/">Apache ActiveMQ</a>, sachant qu&#8217;il existe d&#8217;autres MOM comme IBM WebSphere MQ (ex-MQSeries), Tibco, etc.<br />
Ici, nous allons montrer un test <a href="http://fr.wikipedia.org/wiki/Java_Message_Service">JMS en Point-à-Point</a>. L&#8217;autre type de test possible en JMS est la Publication-Abonnement (Publisher-Subscriber), celui-ci fera l&#8217;objet d&#8217;un autre billet.</p>
<p>Un des pré-requis est d&#8217;avoir un serveur ActiveMQ démarré. Pour cela (et pour faire simple), il suffit de télécharger <a href="http://activemq.apache.org/download.html">les fichiers binaires depuis le site Apache ActiveMQ</a>, de décompresser l&#8217;archive, d&#8217;aller dans le répertoire de décompression et exécuter la commande suivante :</p>
<pre>./bin/activemq start</pre>
<p><span id="more-737"></span><br />
Ensuite, vous pouvez vérifier que cela fonctionne en visitant l&#8217;interface d&#8217;administration à l&#8217;adresse suivante<strong> http://localhost:8161/admin/</strong></p>
<p><strong><img class="aligncenter" title="Interface d'administration de ActiveMQ" src="/wp-content/images/jmeter29-jms-point-to-point/activemq-01.png" alt="" width="573" height="534" /><br />
</strong></p>
<p>On reviens à JMeter maintenant et notre petit tutoriel sur l&#8217;utilisation de JMeter pour tester ActiveMQ.</p>
<p>Une étape préalable est de récupérer les fichiers JAR d&#8217;ActiveMQ afin de permettre à JMeter de &laquo;&nbsp;<em>parler JMS</em>&nbsp;&raquo; avec votre serveur ActiveMQ. Le mieux est de prendre l&#8217;archive <strong>activemq-all-X.X.X.jar</strong> (X.X.X en fonction de la version) à partir du répertoire ActiveMQ décompressé, puis de placer le fichier JAR dans le répertoire<em> JMETER_HOME/lib</em>. L&#8217;aide officielle pour cette étape est <a href="http://jakarta.apache.org/jmeter/usermanual/get-started.html#libraries_activemq">ici</a>.</p>
<p>Voici maintenant notre plan de test tout simple pour illustrer un test JMS sur une file &laquo;&nbsp;point à point&nbsp;&raquo;.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Plan de test JMeter pour JMS point-à-point" src="/wp-content/images/jmeter29-jms-point-to-point/jms-point-to-point-01.png" alt="" width="492" height="204" /></p>
<p>On aura dans ce plan de test, un groupe d&#8217;unités, appelé <strong>GU Point-à-Point</strong>, avec seulement un utilisateur, qui monte en charge en une seconde et qui fera trois itérations.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Groupe d'unités JMeter pour JMS Point-à-point" src="/wp-content/images/jmeter29-jms-point-to-point/jms-point-to-point-02.png" alt="" width="422" height="276" /></p>
<p>Ensuite, on en vient à la <strong>Requête JMS Point-à-point</strong> qui va faire tout le travail. C&#8217;est-à-dire, qu&#8217;elle va déposer un message sur une file de requête (Q.REQ) et lire sur une file de réception le message qu&#8217;elle a déposé (Q.RPL).</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="JMeter : Requête JMS Point-à-point" src="/wp-content/images/jmeter29-jms-point-to-point/jms-point-to-point-03.png" alt="" /></p>
<p>Voici quelques commentaires ou explications sur les champs de cet élément JMS Point-à-point :</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr valign="TOP">
<td width="17%"><strong>Champs</strong></td>
<td width="21%"><strong>Valeurs</strong></td>
<td width="62%"><strong>Commentaires</strong></td>
</tr>
<tr valign="TOP">
<td width="17%">Nom</td>
<td width="21%">JMS Point-to-Point ${__time(,TIMESTAMP)}</td>
<td width="62%">Afin de faciliter le débogage, 			j&#8217;utilise la date en secondes dans le nom de l&#8217;élément (qui 			s&#8217;affichera donc dans les récepteurs de résultats)</p>
<p>Par ailleurs, je dépose dans la variable ${TIMESTAMP} la 			valeur de la date, pour une utilisation dans le contenu du message 			(ci-dessous)</td>
</tr>
<tr valign="TOP">
<td width="17%">Fabrique QueueConnection</td>
<td width="21%">ConnectionFactory</td>
<td width="62%"></td>
</tr>
<tr valign="TOP">
<td width="17%">Nom JNDI de la file d&#8217;attente Request</td>
<td width="21%">Q.REQ</td>
<td width="62%">Le nom JNDI permettant à JMeter de faire la liaison entre la 			fabrique de connexion et la file</td>
</tr>
<tr valign="TOP">
<td width="17%">Nom JNDI de la file d&#8217;attente Receive</td>
<td width="21%">Q.RPL</td>
<td width="62%">Le nom JNDI permettant à JMeter de faire la liaison entre la 			fabrique de connexion et la file</td>
</tr>
<tr valign="TOP">
<td width="17%">Type de communication</td>
<td width="21%">Requête Réponse (ou Requête seule)</td>
<td width="62%">Ici on fait un type de communication 			Requête (dépôt) puis Réponse (récupération).</p>
<p>L&#8217;autre option possible est la requête seule (donc les 			messages doit être dépilés via soit une autre application, soit 			une requête JMS Abonnement)</td>
</tr>
<tr>
<td colspan="3" width="100%" valign="TOP">Champs alternatifs pour la correspondance de message</td>
</tr>
<tr valign="TOP">
<td width="17%">Utiliser l&#8217;ID du message Request</td>
<td width="21%">non coché</td>
<td width="62%">On peut laisser JMeter utiliser l&#8217;identifiant du message 			Request (dépôt) pour faire la corrélation entre le message 			déposé et récupéré</td>
</tr>
<tr valign="TOP">
<td width="17%">Utiliser l&#8217;ID du message Response</td>
<td width="21%">non coché</td>
<td width="62%">On peut laisser JMeter utiliser l&#8217;identifiant du message 			Responce (récupération) pour faire la corrélation entre le 			message déposé et récupéré</td>
</tr>
<tr valign="TOP">
<td width="17%">Délai (ms)</td>
<td width="21%">30000</td>
<td width="62%">Ce délai d&#8217;attente est utilisé lors de la réception du 			message (File Receive), si JMeter ne récupère rien dans le délai 			(ici de 30 sec), alors l&#8217;élément sera marqué en erreur</td>
</tr>
<tr valign="TOP">
<td width="17%">Utiliser un mode de livraison non persistant ?</td>
<td width="21%">non coché</td>
<td width="62%"></td>
</tr>
<tr valign="TOP">
<td width="17%">Contenu</td>
<td width="21%">&laquo;&nbsp;Message de test ID TEMPS = ${TIMESTAMP}&nbsp;&raquo;</td>
<td width="62%">Voici le contenu de mon message.</td>
</tr>
<tr>
<td colspan="3" width="100%" valign="TOP">Propriétés JMS</td>
</tr>
<tr valign="TOP">
<td width="17%">JMSCorrelationId</td>
<td width="21%">Milamber-${__time(,)}</td>
<td width="62%">Ici, j&#8217;ai mis mon propre identifiant de corrélation de 			message, Milamber accolé de la date (en nombre de secondes depuis 			le 1er Janvier 1970)</td>
</tr>
<tr>
<td colspan="3" width="100%" valign="TOP">Propriétés JNDI</td>
</tr>
<tr valign="TOP">
<td width="17%">Fabrique de connexion initiale</td>
<td width="21%">org.apache.activemq.jndi.ActiveMQInitialContextFactory</td>
<td width="62%">La classe à invoquer pour créer une connexion sur la 			messagerie orientée message.</td>
</tr>
<tr valign="TOP">
<td width="17%">queue.Q.REQ</td>
<td width="21%">example.A</td>
<td width="62%">Correspondance entre le nom JNDI de la file (Q.REQ) et le nom 			réel de la file dans ActiveMQ (example.A)</td>
</tr>
<tr valign="TOP">
<td width="17%">queue.Q.RPL</td>
<td width="21%">example.B</td>
<td width="62%">Correspondance entre le nom JNDI de la file (Q.RPL) et le nom 			réel de la file dans ActiveMQ (example.B)</td>
</tr>
<tr valign="TOP">
<td width="17%">URL du fournisseur</td>
<td width="21%">tcp://localhost:61616</td>
<td width="62%">L&#8217;adresse et le port pour attaquer l&#8217;ActiveMQ.</td>
</tr>
</tbody>
</table>
<p>Il ne reste plus qu&#8217;à lancer le micro-test :</p>
<p>L&#8217;arbre de résultats nous montre une exécution réussie <img src='http://blog.milamberspace.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><img class="aligncenter" style="border: 1px solid black;" title="JMeter : exécution du test JMS Point-à-point" src="/wp-content/images/jmeter29-jms-point-to-point/jms-point-to-point-04.png" alt="" width="814" height="669" /></p>
<p>Et là, la capture d&#8217;écran du contenu de message.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="JMeter test JMS message de reponse" src="/wp-content/images/jmeter29-jms-point-to-point/jms-point-to-point-05.png" alt="" width="805" height="204" /></p>
<p>Pour revenir à ActiveMQ et sa console, à partir de celle-ci on peut voir (surveiller) les messages déposés/lues dans les files.</p>
<p><img class="aligncenter" title="Console ActiveMQ" src="/wp-content/images/jmeter29-jms-point-to-point/activemq-02.png" alt="" width="733" height="534" /></p>
<p>On peut également voir les connexions ouvertes par JMeter pendant le tir. Au total 2 connexions (une pour le dépôt et une pour la lecture).</p>
<p><img class="aligncenter" title="ActiveMQ voir les connexions sur les files" src="/wp-content/images/jmeter29-jms-point-to-point/activemq-03.png" alt="" width="733" height="534" /></p>
<p><strong><span style="text-decoration: underline;">Quelques commentaires :</span></strong></p>
<ul>
<li> En interne, JMeter démarre le JMS Listener (le processus d&#8217;écoute) sur la file de réception avant même le début du test (au moment de la compilation de l&#8217;arbre du script JMeter). Ce qui signifie que <em>le nom de la file ne supporte pas les variables JMeter non définies au moment du lancement du test </em>(donc une variable récupérée via un extracteur d&#8217;expression régulière ne fonctionne pas, ou bien des noms de files JMS qui sont récupérées via une Source de données CSV).</li>
<li> L&#8217;aide officielle de JMeter sur les tests JMS est ici (<a href="http://jakarta.apache.org/jmeter/usermanual/component_reference.html#JMS_Point-to-Point">JMS Point-to-Point</a>) et là (<a href="http://jakarta.apache.org/jmeter/usermanual/build-jms-point-to-point-test-plan.html">Building a JMS Point-to-Point Test Plan</a>).</li>
<li> Un lien vers un tutoriel<a href="http://www.ibm.com/developerworks/websphere/library/techarticles/0808_vandekuil/0808_vandekuil.html?ca=drs-"> IBM pour utiliser JMeter avec WebSphere MQ</a></li>
</ul>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2010/09/11/jmeter-petit-test-jms-point-a-point-avec-activemq-737.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Petite mise à jour du tutoriel JMeter : Test de charge distribué</title>
		<link>http://blog.milamberspace.net/index.php/2010/04/19/petite-mise-a-jour-du-tutoriel-jmeter-test-de-charge-distribue-658.html</link>
		<comments>http://blog.milamberspace.net/index.php/2010/04/19/petite-mise-a-jour-du-tutoriel-jmeter-test-de-charge-distribue-658.html#comments</comments>
		<pubDate>Mon, 19 Apr 2010 23:55:40 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[distributed tests]]></category>
		<category><![CDATA[test distribué]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=658</guid>
		<description><![CDATA[Je viens d&#8217;effectuer une mise à jour du tutoriel JMeter sur la réalisation d&#8217;un test de charge distribué. Il s&#8217;agissait principalement de mettre des captures d&#8217;écrans d&#8217;un JMeter « français », d&#8217;adapter le texte associé, mais également de corriger des fautes de style ou d&#8217;orthographes&#8230; On notera que depuis 2008, la date d&#8217;écriture de la première version [...]]]></description>
			<content:encoded><![CDATA[<p>Je viens d&#8217;effectuer une mise à jour du <a href="http://blog.milamberspace.net/index.php/jmeter-pages/jmeter-test-de-charges-a-distance-distributed-testing">tutoriel JMeter sur la réalisation d&#8217;un test de charge distribué</a>.</p>
<p>Il s&#8217;agissait principalement de mettre des captures d&#8217;écrans d&#8217;un JMeter « français », d&#8217;adapter le texte associé, mais également de corriger des fautes de style ou d&#8217;orthographes&#8230;</p>
<p>On notera que depuis 2008, la date d&#8217;écriture de la première version de ce tutoriel, il n&#8217;y a pas eu de changement au niveau JMeter sur la configuration d&#8217;un test distribué.</p>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2010/04/19/petite-mise-a-jour-du-tutoriel-jmeter-test-de-charge-distribue-658.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changer l&#8217;adresse IP source d&#8217;une requête HTTP lors d&#8217;un test avec JMeter</title>
		<link>http://blog.milamberspace.net/index.php/2009/12/03/changer-ladresse-ip-source-dune-requete-http-lors-dun-test-avec-jmeter-549.html</link>
		<comments>http://blog.milamberspace.net/index.php/2009/12/03/changer-ladresse-ip-source-dune-requete-http-lors-dun-test-avec-jmeter-549.html#comments</comments>
		<pubDate>Thu, 03 Dec 2009 22:53:16 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[adresse IP]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=549</guid>
		<description><![CDATA[[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&#8217;adresse IP source pour les requêtes HTTP transmises par JMeter. L&#8217;intérêt de cette possibilité est (par exemple) de permettre de faire des tests de charges sur des [...]]]></description>
			<content:encoded><![CDATA[<p><em>[Article mis à jour le 08 décembre 2011, pour prise en compte de la version 2.5.1]</em></p>
<p>Depuis la version 2.4 de JMeter, une nouvelle fonctionnalité permet le changement d&#8217;adresse IP source pour les requêtes HTTP transmises par JMeter.</p>
<p>L&#8217;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).</p>
<p>Voici un petit mode d&#8217;emploi.<span id="more-549"></span></p>
<p><span style="text-decoration: underline;"><strong>Préparation</strong></span></p>
<p><em>Étape 1 </em>: récupérer JMeter (au moins la version 2.5) (ici c&#8217;est la 2.5.1 qui est présentée)</p>
<p><em>Étape 2</em> : définir et configurer sur sa machine JMeter les adresses IP que l&#8217;on veut utiliser dans son test. Pour cela, il faut utiliser la fonctionnalité d&#8217;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).</p>
<ul>
<li>Sous Windows (XP), c&#8217;est dans les options avancées de la configuration réseau, au niveau du protocole TCP/IP, paramètres avancées, Adresse IP.</li>
<li>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).</li>
</ul>
<p><em>Étape 3</em> : créer un fichier texte contenant la liste des adresses IP que vous avez définie. Une adresse IP par ligne.</p>
<ul>
<li>192.168.7.80</li>
<li>192.168.7.81</li>
<li>192.168.7.82</li>
<li>192.168.7.83</li>
<li>192.168.7.84</li>
<li>etc&#8230;</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Réalisation avec JMeter</strong></span></p>
<p>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).</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Plan de test" src="/wp-content/images/jmeter25-addr-ip-src/jmeter-adresse-ip-source-01.png" alt="" width="244" height="148" /></p>
<p>On note, l&#8217;élément de configuration <strong>Source de données CSV</strong>, qui va permettre de récupérer les adresses IP provenant la liste.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Source de données CSV JMeter" src="/wp-content/images/jmeter25-addr-ip-src/jmeter-adresse-ip-source-02.png" alt="" width="514" height="281" /></p>
<p>La variable JMeter <strong>ADR_IP</strong> recevra donc une adresse IP à chaque itération de JMeter. Cette variable sera utilisée dans l&#8217;échantillon <strong>Requête HTTP</strong> dans le champ « <strong>Adresse IP source</strong> ».</p>
<p><span style="text-decoration: underline;"><strong><span style="color: #ff0000; text-decoration: underline;">Attention :</span></strong> pour que la fonctionnalité de changement d&#8217;adresse IP fonctionne, il faut choisir une <strong>Implémentation</strong> compatible : soit <strong>HttpClient 3.1</strong> ou soit <strong>HttpClient 4</strong>.</span> Cf. capture ci-dessous.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Champ Adresse IP source" src="/wp-content/images/jmeter25-addr-ip-src/jmeter-adresse-ip-source-03.png" alt="" width="962" height="675" /></p>
<p>Voilà, ensuite c&#8217;est presque prêt, on ajoute un récepteur de résultats, on configure par exemple le <strong>Groupe d&#8217;unités</strong> à 1-1-10 et on lance.</p>
<p>Dans les logs du serveur Apache (qui est ici testé), on voit le changement d&#8217;adresse IP source (la première colonne). Et hop.</p>
<p><img class="aligncenter" title="Résultat" src="/wp-content/images/jmeter25-addr-ip-src/jmeter-adresse-ip-source-04.png" alt="" width="642" height="172" /></p>
<p>Le petit bémol, c&#8217;est qu&#8217;il n&#8217;est pas possible (pour l&#8217;instant) de le définir globalement dans un élément <strong>Paramètres HTTP par défaut</strong>. Il est donc nécessaire de poser la variable qui va faire changer l&#8217;adresse IP source dans chaque <strong>Requête HTTP</strong>. (Un édition/remplacer global dans le fichier JMX avec un editeur de texte le fera en une seule fois.)</p>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2009/12/03/changer-ladresse-ip-source-dune-requete-http-lors-dun-test-avec-jmeter-549.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Envoyer en ligne de commande des paramètres à votre scénario JMeter</title>
		<link>http://blog.milamberspace.net/index.php/2009/11/15/envoyer-en-ligne-de-commande-des-parametres-a-votre-scenario-jmeter-534.html</link>
		<comments>http://blog.milamberspace.net/index.php/2009/11/15/envoyer-en-ligne-de-commande-des-parametres-a-votre-scenario-jmeter-534.html#comments</comments>
		<pubDate>Sun, 15 Nov 2009 08:10:33 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Test fonctionnel]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[Ligne de commande]]></category>
		<category><![CDATA[Paramètre]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=534</guid>
		<description><![CDATA[Voici un petit billet pour vous monter comment lancer JMeter en ligne de commande tout en paramétrant son scénario de test. En effet, vous pouvez avoir l&#8217;idée ou l&#8217;envie de faire une série de test en jouant sur certains paramètres de votre scénario JMeter, le tout en ligne de commande. Par exemple, faire un test [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un petit billet pour vous monter comment lancer JMeter en ligne de commande tout en paramétrant son scénario de test.</p>
<p>En effet, vous pouvez avoir l&#8217;idée ou l&#8217;envie de faire une série de test en jouant sur certains paramètres de votre scénario JMeter, le tout en ligne de commande. Par exemple, faire un test avec 1 utilisateur, puis le même test avec 10 utilisateurs, et le même avec 100 utilisateurs.</p>
<p>Bien évidemment vous pouvez les lancer depuis l&#8217;interface graphique de JMeter, à la suite, tout en modifiant le paramètre du nombre d&#8217;utilisateurs dans l&#8217;interface, mais c&#8217;est trop facile <img src='http://blog.milamberspace.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p>Donc pour le faire en ligne de commande, il faut d&#8217;abord passer par l&#8217;interface graphique JMeter. En effet, nous avons besoin d&#8217;utiliser une fonction JMeter qui va permettre de lire une propriété JMeter et renvoyer sa valeur. Cette fonction doit être appelée à la place de la valeur du champ correspondant au paramètre que l&#8217;on veut rendre « paramétrable »&#8230;</p>
<p>Le mieux est d&#8217;abord de voir la capture d&#8217;écran :</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" title="Utilisation de la fonction __P() de JMeter" src="/wp-content/images/jmeter23-img-cli/cli02.png" alt="" width="444" height="254" /></p>
<p>Les différents <strong>${__P(xxx,yyy)}</strong> correspondent à notre fonction JMeter qui permet de lire une propriété JMeter, et qui la renvoie.<span id="more-534"></span></p>
<p>Donc ici, on vient d&#8217;utiliser la fonction <strong>__P()</strong><em> (avec deux caractères soulignés avant le P)</em> pour définir trois paramètres :</p>
<ul>
<li>Le nombre d&#8217;unités d&#8217;exécution, qui prend soit la valeur de la variable JMeter <strong>nombreUnites</strong> ou si elle est inexistante, la valeur par défaut « 10 »</li>
<li>La durée de montée en charge, qui prend soit la valeur de la variable JMeter <strong>dureeMontee</strong> ou si elle est inexistante, la valeur par défaut « 50 »</li>
<li>La nombre d&#8217;itérations, qui prend soit la valeur de la variable JMeter <strong>nombreIterations</strong> ou si elle est inexistante, la valeur par défaut « 100 »</li>
</ul>
<p>Comme vous l&#8217;aurez compris, la fonction<strong> __P() </strong>a deux paramètres, le premier pour indiquer la clé de la propriété à rechercher, lire et renvoyer, et le second (optionnel) étant la valeur par défaut si la clé n&#8217;existe pas.</p>
<p>Une fois que vous avez défini ainsi les différents champs que vous souhaitez <em>« paramètriser »</em>, il ne reste plus qu&#8217;a lancer JMeter en ligne de commande avec la ou les valeurs.</p>
<p>Pour cela, on utilise l&#8217;option<strong> « -J »</strong> de JMeter. Celle-ci permet de définir un couple clé/valeur correspondant à une propriété JMeter. Pour notre exemple, la ligne de commande sera donc :</p>
<pre><strong>jmeter -n -l resultats.csv -t scenario.jmx -JnombreUnites=5 -JdureeMontee=10 -JnombreIterations=100</strong></pre>
<p><em>(Petit rappel : -n : mode non-gui, -l : fichier de résultats, -t : fichier scripts JMeter)</em></p>
<p>Voilà, maintenant vous pouvez jouer sur les valeurs de ces paramètres afin de faire plusieurs types de tests.</p>
<p>Plus d&#8217;infos sur les fonctions, voici <a href="http://jakarta.apache.org/jmeter/usermanual/functions.html">la page réservée aux fonctions du manuel JMeter</a></p>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2009/11/15/envoyer-en-ligne-de-commande-des-parametres-a-votre-scenario-jmeter-534.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

