<?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; MySQL</title>
	<atom:link href="http://blog.milamberspace.net/index.php/tag/mysql/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>JMeter : utilisation de l&#8217;élément JDBC comme source de données pour un test de charge (partie 1)</title>
		<link>http://blog.milamberspace.net/index.php/2009/06/12/jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-1-311.html</link>
		<comments>http://blog.milamberspace.net/index.php/2009/06/12/jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-1-311.html#comments</comments>
		<pubDate>Fri, 12 Jun 2009 22:44:11 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Tests de charges]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=311</guid>
		<description><![CDATA[Avec la version 2.3.3, JMeter nous propose une amélioration de l&#8217;échantillon JDBC, qui permet de récupérer les valeurs de champs d&#8217;une requête SQL de type SELECT et de les placer dans des variables JMeter. D&#8217;où l&#8217;idée suivante : Pourquoi ne pas utiliser une base de données comme source de données pour un test de charge [...]]]></description>
			<content:encoded><![CDATA[<p>Avec la version 2.3.3, JMeter nous propose une amélioration de l&#8217;échantillon JDBC, qui permet de récupérer les valeurs de champs d&#8217;une requête SQL de type SELECT et de les placer dans des variables JMeter.</p>
<p><em>D&#8217;où l&#8217;idée suivante :</em> Pourquoi ne pas utiliser une base de données comme source de données pour un test de charge ?</p>
<p>Tout d&#8217;abord les pré-requis :</p>
<ul>
<li> Une base de données bien entendu, avec le pilote JDBC approprié, à placer dans Jmeter_Home/lib</li>
<li>Dans la base de données, une table avec une liste d&#8217;éléments (ici j&#8217;ai repris <a href="http://blog.milamberspace.net/index.php/jmeter-variabilisation-de-donnees">mon fichier BOXERS</a> que j&#8217;ai inséré en base)</li>
</ul>
<p>Bon voyons un peu comment faire. Ci-dessous le plan de test à mettre en œuvre :</p>
<p style="text-align: center;"><img class="alignnone" title="Plan de test Jmeter" src="/wp-content/images/jmeter19-img/part1/01-jmeter-jdbc.png" alt="" width="291" height="273" /></p>
<p>Il y a deux parties :</p>
<ul>
<li>Partie 1 : qui est chargée de récupérer les données de la base de données (objet de ce billet)</li>
<li>Partie 2 : qui est le test de charge à proprement parlé, et qui est donc chargé de consommer les données (objet du billet suivant)<span id="more-311"></span></li>
</ul>
<p>Dans la partie 1, tout d&#8217;abord, on place un <strong>Contrôleur Exécution unique</strong>, il va permettre d&#8217;exécuter une unique fois la requête SQL de sélection de la liste de données qui va servir au test. Les itérations suivantes ne ré-exécuteront pas la requête.</p>
<p>Juste dessous, en tant que fils, on trouve l&#8217;élément<strong> Configuration de connexion JDBC</strong>, c&#8217;est avec lui que nous allons pouvoir définir le pool de connexions vers la base de données.</p>
<p>Ci-dessous, sa configuration :</p>
<p style="text-align: center;"><img class="alignnone" title="Configuration JDBC JMeter" src="/wp-content/images/jmeter19-img/part1/02-jmeter-jdbc.png" alt="" width="558" height="428" /></p>
<p>Ici, on définit un pool avec un nom de liaison <strong>jdbc/pool</strong> qui sera utilisé plus tard. C&#8217;est une base de données MySQL, comme vous le constatez dans la partie configuration de connexion à la base de données.</p>
<p><em>Je ne détaille pas, je suppose que vous avez déjà configuré un pool sur un serveur de type Tomcat ou autre (voir google sinon)</em></p>
<p>On notera que la requête de validation permet de vérifier la connexion avant que le pool ne donne la connexion à la requête (<strong>échantillon JDBC</strong>). Ici dans ma base « milambertestdb » il y a une table vide « POOL_HEARTBEAT ».</p>
<p>Une fois que le pool est défini, on peut passer à la <strong>requête JDBC</strong>. Ci-dessous sa configuration :</p>
<p style="text-align: center;"><img class="alignnone" title="Requête JDBC JMeter" src="/wp-content/images/jmeter19-img/part1/03-jmeter-jdbc.png" alt="" width="531" height="314" /></p>
<ul>
<li><span style="text-decoration: underline;">Le nom de liaison :</span> jdbc/pool en référence bien sur à l&#8217;élément de configuration JDBC</li>
<li><span style="text-decoration: underline;">Le type de requête </span>est placé à « Select Statement » afin de permettre d&#8217;effectuer une requête SQL de type SELECT</li>
<li><span style="text-decoration: underline;">La requête (SQL)</span> suivante est indiquée :
<ul>
<li>select ID, NOM, PRENOM from BOXERS where UTILISABLE = 1 AND PRENOM LIKE &#8216;Ar%&#8217;</li>
<li>On sélectionne dans la table BOXERS, trois champs (ID, NOM, PRENOM) à condition que le champ UTILISABLE soit égale à 1 et que le prénom commence par « Ar ».</li>
</ul>
</li>
<li>Les champs <span style="text-decoration: underline;">Valeurs des paramètres</span> et <span style="text-decoration: underline;">Types des paramètres </span>ne sont pas utilisés car nous n&#8217;avons pas d&#8217;éléments variables à insérer dans la requête SQL pour son exécution.</li>
<li>Le dernier <span style="text-decoration: underline;">champ Noms des variables</span> est, par contre, utilisé pour définir les préfixes de variables JMeter qui seront utilisées pour stocker les valeurs résultants de la requête SQL.</li>
</ul>
<p>Ensuite, juste après la requête JDBC, on place un <strong>échantillon Débogage</strong> à des fins de&#8230; débogage <img src='http://blog.milamberspace.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , ainsi on pourra voir si tout se passe bien du coté des Variables JMeter durant le tir.</p>
<p style="text-align: center;"><img class="alignnone" title="Echantillon Débogage JMeter" src="/wp-content/images/jmeter19-img/part1/04-jmeter-jdbc.png" alt="" width="387" height="156" /></p>
<p>Ensuite on place en fils du contrôleur <strong>Exécution unique</strong>, un récepteur <strong>Arbre de résultats,</strong> et on lance un itération de test (le <strong>Groupe d&#8217;unités</strong> est configuré à 1-1-10).</p>
<p>Voici le résultat d&#8217;exécution :</p>
<p style="text-align: center;"><img class="alignnone" title="Résultat dexécution avec Résultat dAssertion JMeter" src="/wp-content/images/jmeter19-img/part1/05-jmeter-jdbc.png" alt="" width="572" height="268" /></p>
<p>Dans la requête SQL, au niveau de l&#8217;onglet Données de réponse, on trouve un tableau contenant la liste (ici de six éléments) de réponse.</p>
<p>Au niveau de<strong> l&#8217;échantillon Débogag</strong>e, on trouve trois ensemble de variables correspondant aux données de la liste.</p>
<p style="text-align: center;"><img class="alignnone" title="Résultat Echantillon Débogage JMeter" src="/wp-content/images/jmeter19-img/part1/06-jmeter-jdbc.png" alt="" width="585" height="434" /></p>
<p>Chaque ensemble est définit par :</p>
<ul>
<li>une variable « <strong>Nom_De_Champ + _#</strong> » pour donner le nombre d&#8217;éléments retournés</li>
<li>N variables « <strong>Nom_De_Champ + N</strong> » pour chaque valeur retournée</li>
</ul>
<p>Dans <a href="http://blog.milamberspace.net/index.php/2009/06/13/jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-2-317.html">la partie suivante</a>, nous allons voir comment utiliser ces données pour faire son test.</p>
<p><em>Mine de rien, vous venez de faire un script qui attaque une base de données, et cela peut vous servir dans d&#8217;autres cas, notamment tester les performances d&#8217;une base de données.</em></p>
<p>./</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2009/06/12/jmeter-utilisation-de-lelement-jdbc-comme-source-de-donnees-pour-un-test-de-charge-partie-1-311.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

