{"id":468,"date":"2009-07-30T08:58:41","date_gmt":"2009-07-30T07:58:41","guid":{"rendered":"http:\/\/blog.milamberspace.net\/?p=468"},"modified":"2009-08-20T19:30:41","modified_gmt":"2009-08-20T18:30:41","slug":"charger-un-serveur-ldap-depuis-une-base-de-donnees-avec-jmeter","status":"publish","type":"post","link":"https:\/\/blog.milamberspace.net\/index.php\/2009\/07\/30\/charger-un-serveur-ldap-depuis-une-base-de-donnees-avec-jmeter-468.html","title":{"rendered":"Charger un serveur LDAP depuis une base de donn\u00e9es avec JMeter"},"content":{"rendered":"<p>Voici un tutoriel pour r\u00e9aliser un script JMeter qui va lire dans une base de donn\u00e9es (ici MySQL) via JDBC, une table d&rsquo;utilisateurs (nom et pr\u00e9nom), puis se connecter sur un serveur LDAP (ici openLDAP) afin d&rsquo;ajouter chaque utilisateur dans le LDAP.<\/p>\n<p><span style=\"text-decoration: underline;\">Ce tutoriel a pour objectifs :<\/span><\/p>\n<ol>\n<li> Rappeler l&rsquo;utilisation de <strong>Requ\u00eate JDBC<\/strong> pour acc\u00e9der \u00e0 une base de donn\u00e9es, et r\u00e9cup\u00e9rer dans un ensemble de variables les r\u00e9sultats de requ\u00eate JDBC<\/li>\n<li> Montrer comment effectuer l&rsquo;ajout d&rsquo;une fiche Utilisateur dans un serveur LDAP via une <strong>Requ\u00eate LDAP \u00e9tendue<\/strong> de JMeter<\/li>\n<li> Montrer le fonctionnement du <strong>Contr\u00f4leur Pour chaque <\/strong>dans JMeter<\/li>\n<li> Montrer un petit exemple de <strong>Pr\u00e9-Processeur BeanShell<\/strong><\/li>\n<\/ol>\n<p>Voici le plan de de test final.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Plan de test LDAP \/ Base avec JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap01.png\" alt=\"\" width=\"347\" height=\"377\" \/><\/p>\n<p><!--more--><span style=\"text-decoration: underline;\">On observe deux sections :<\/span><\/p>\n<ol>\n<li><strong>Base de donn\u00e9es : <\/strong>qui est un <strong>Contr\u00f4leur Simple<\/strong> regroupant les \u00e9l\u00e9ments n\u00e9cessaires \u00e0 la partie JDBC afin d&rsquo;acc\u00e9der \u00e0 la base et faire la requ\u00eate SQL qui va permettre de r\u00e9cup\u00e9rer les utilisateurs \u00e0 cr\u00e9er.<\/li>\n<li><strong>LDAP : <\/strong>qui est aussi un<strong> Contr\u00f4leur Simple<\/strong> regroupant les \u00e9l\u00e9ments permettant la connexion au serveur LDAP et effectuer la requ\u00eate d&rsquo;ajout dans le LDAP des utilisateurs.<\/li>\n<\/ol>\n<p>Concernant la partie Base de donn\u00e9es, je vous revois vers <a href=\"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\">ce billet<\/a> pour avoir plus de d\u00e9tails sur sa mise en place. Ci-dessous, je vais seulement commenter certains \u00e9l\u00e9ments de cette partie.<\/p>\n<p>L&rsquo;\u00e9l\u00e9ment <strong>Requ\u00eate JDBC<\/strong> correspond \u00e0 la requ\u00eate SQL que JMeter va effectuer pour obtenir une liste de noms et de pr\u00e9noms qui seront utilis\u00e9s dans la section LDAP.<\/p>\n<ul>\n<li> Le champ <em>Nom de liaison<\/em> fait r\u00e9f\u00e9rence au &lsquo;pool&rsquo; JDBC configur\u00e9 dans l&rsquo;\u00e9l\u00e9ment <strong>Configuration de connexion JDBC<\/strong><\/li>\n<li> Le type de requ\u00eate est <em>Select Statement, <\/em>on fait donc une requ\u00eate SQL commen\u00e7ant par SELECT :\n<ul>\n<li> <em>SELECT ID, NOM, PRENOM from BOXERS<\/em><\/li>\n<\/ul>\n<\/li>\n<li> Dans le champ N<em>oms des variables<\/em>, on donne les variables (JMeter) qui vont recevoir les donn\u00e9es. Pour nous, cela sera <em>VAR_ID, VAR_NOM, VAR_PRENOM<\/em>.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Requ\u00eate JDBC\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap03.png\" alt=\"\" width=\"473\" height=\"342\" \/><\/p>\n<p style=\"text-align: left;\">A l&rsquo;ex\u00e9cution, la requ\u00eate SQL retournera une liste de noms et les placera dans les variables correspondantes, avec un suffixe <strong>_X<\/strong> o\u00f9 <em>X<\/em> est le num\u00e9ro de la ligne retourn\u00e9e.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Requ\u00eate JDBC\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap02.png\" alt=\"\" width=\"627\" height=\"457\" \/><\/p>\n<p>Pour la section suivante, LDAP, on utilisera donc ces variables pour faire l&rsquo;ajout dans le LDAP.<\/p>\n<p>Ainsi voici la partie LDAP : le premier \u00e9l\u00e9ment est une <strong>Requ\u00eate LDAP \u00e9tendue<\/strong> qui va permettre de faire la connexion avec le serveur LDAP.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Conexion LDAP avec JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap10.png\" alt=\"\" width=\"640\" height=\"357\" \/><\/p>\n<p>Pour cela, on choisi le type de test \u00ab\u00a0<em>Unit\u00e9 li\u00e9e <\/em>\u00bb, et on compl\u00e8te les diff\u00e9rents champs n\u00e9cessaires :<\/p>\n<ul>\n<li> <strong>Nom du serveur<\/strong> (ou adresse IP)<\/li>\n<li> <strong>Port<\/strong> <strong>:<\/strong> 389 (correspondant au port par d\u00e9faut pour le protocole ldap)<\/li>\n<li> <strong>DN :<\/strong> nom du suffixe de l&rsquo;annuaire<\/li>\n<li> <strong>Identifiant<\/strong> <strong>:<\/strong> un compte disposant des droits pour modifier l&rsquo;annuaire (ici c&rsquo;est l&rsquo;administrateur LDAP)<\/li>\n<li> <strong>Mot de passe<\/strong> associ\u00e9 au compte ci-dessus<\/li>\n<li> <strong>D\u00e9lai d&rsquo;attente de connexion :<\/strong> param\u00e8tre optionnel qui permet de faire \u00e9chouer l&rsquo;\u00e9chantillon (de connexion) si jamais la connexion n&rsquo;est pas ouverte<\/li>\n<li> La case \u00e0 cocher permet de faire une connexion via le protocole LDAPS (via SSL donc) <em>(accompagn\u00e9 par le port 636 en g\u00e9n\u00e9ral)<\/em><\/li>\n<\/ul>\n<p>Ensuite, on en profite pour faire l&rsquo;op\u00e9ration inverse de la connexion : la D\u00e9connexion. Pour cela, on choisit tout simplement le type de test \u00ab\u00a0<em>D\u00e9lier les unit\u00e9s<\/em> \u00bb. Cette requ\u00eate sera plac\u00e9e en fin du sc\u00e9nario.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"D\u00e9connexion LDAP avec JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap11.png\" alt=\"\" width=\"641\" height=\"180\" \/><\/p>\n<p>Passons aux \u00e9l\u00e9ments qui vont nous permettre d&rsquo;ajouter les fiches annuaires dans le LDAP.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Contr\u00f4leur Pour chaque (foreach) JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap12.png\" alt=\"\" width=\"342\" height=\"162\" \/><\/p>\n<p>Le contr\u00f4leur ci-dessus, <strong>Pour chaque <\/strong>va tout simplement <em>(efficacement je dirais)<\/em>, parcourir une \u00e0 une les variables <em>VAR_NOM_x <\/em>o\u00f9 <em>x<\/em> est le num\u00e9ro de ligne des r\u00e9sultats de la requ\u00eate SQL pr\u00e9c\u00e9dente. \u00c0 chaque it\u00e9ration, il va affecter \u00e0 la variable <em>NOM<\/em> la valeur de <em>VAR_NOM_x<\/em>. <em>(on notera la correspondance entre VAR_NOM de la requ\u00eate JDBC Select et le VAR_NOM_x du contr\u00f4leur)<\/em><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Compteur JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap13.png\" alt=\"\" width=\"274\" height=\"227\" \/><\/p>\n<p>Ici, on ajoute un <strong>Compteur <\/strong>JMeter qui nous permet de conna\u00eetre (suivre) le num\u00e9ro de ligne, afin que nous puissions l&rsquo;utiliser dans la prochaine requ\u00eate pour g\u00e9n\u00e9rer des variables.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Ajout LDAP avec JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap14.png\" alt=\"\" width=\"639\" height=\"432\" \/><\/p>\n<p>Nous voil\u00e0 dans la requ\u00eate \u00ab\u00a0costaude\u00a0\u00bb, il s&rsquo;agit d&rsquo;une <strong>Requ\u00eate LDAP \u00e9tendue<\/strong> qui va traiter l&rsquo;ajout. Ainsi, on choisit le type de test \u00ab\u00a0<em>Add test <\/em>\u00bb.<\/p>\n<p>Puis le champ <em>Entry DN<\/em> nous permet d&rsquo;indiquer l&rsquo;identifiant unique de la fiche dans l&rsquo;annuaire.<\/p>\n<p>Le tableau suivant, permet d&rsquo;ajouter les couples \u00ab\u00a0cl\u00e9: valeur\u00a0\u00bb suivant le principe du fichier LDIF (importation de comptes LDAP).<\/p>\n<p>On notera les points suivants :<\/p>\n<ul>\n<li><em>${__V(VAR_PRENOM_${CPT})}<\/em> permet de g\u00e9n\u00e9rer la variable \u00ab\u00a0<em>${VAR_PRENOM_x} <\/em>pour chaque it\u00e9ration du <strong>Contr\u00f4leur Pour chaque<\/strong><\/li>\n<li><em>${NEW_NOM}<\/em> et <em>${NEW_PRENOM}<\/em> sont des variables d\u00e9finies dans un <strong>Pr\u00e9-processeur BeanShell<\/strong> (ci-dessous)<\/li>\n<\/ul>\n<p>Dans la requ\u00eate d&rsquo;ajout, il est important de ne pas oublier les \u00e9l\u00e9ments \u00ab\u00a0<em>objectclass<\/em> \u00bb qui vont d\u00e9finir la structure de la fiche annuaire.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Pr\u00e9-processeur BeanShell JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap16.png\" alt=\"\" width=\"510\" height=\"519\" \/><\/p>\n<p>En fils de la requ\u00eate d&rsquo;ajout, on place donc un <strong>Pr\u00e9-processeur BeanShell<\/strong>, qui va permettre d&rsquo;effectuer quelques actions (ou pr\u00e9parations) sur les donn\u00e9es avant leur utilisation.<\/p>\n<p>Tout d&rsquo;abord, on r\u00e9cup\u00e8re la variable <em>CPT<\/em> (via <em>vars.get(\u00a0\u00bbGET\u00a0\u00bb)<\/em>), puis avec une concat\u00e9nation, on r\u00e9cup\u00e9re la valeur de la variable <em>VAR_PRENOM_x<\/em>. On supprime les points et enl\u00e8ve les guillemets <em>(car certains noms dans la base des boxers ont des pseudonymes entre guillemets)<\/em>. Puis on refait la m\u00eame chose avec le NOM.<\/p>\n<p>Pour finir, on g\u00e9n\u00e8re l&rsquo;adresse email via un petit passage en minuscule et une concat\u00e9nation du domaine de messagerie.<\/p>\n<p>A chaque fois, on utilise le <em>vars.put<\/em> pour d\u00e9poser des nouvelles variables dans JMeter.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Assertion R\u00e9ponse JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap15.png\" alt=\"\" width=\"433\" height=\"321\" \/><\/p>\n<p>Ensuite, avec l&rsquo;\u00e9l\u00e9ment suivant, une <strong>Assertion R\u00e9ponse<\/strong>, j&rsquo;anticipe sur l&rsquo;ex\u00e9cution et la v\u00e9rification que tout s&rsquo;est bien pass\u00e9. En effet, si l&rsquo;ex\u00e9cution de la requ\u00eate d&rsquo;ajout LDAP fonctionne correctement, le r\u00e9sultat contient \u00ab<em> &lt;responsemessage&gt;Success&lt;\/responsemessage&gt; <\/em>\u00bb. L&rsquo;assertion sur ce texte va nous permettre de d\u00e9tecter rapidement les cas en erreur <em>(si il y en a)<\/em>.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Requ\u00eate LDAP de recherche avec JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap17.png\" alt=\"\" width=\"645\" height=\"432\" \/><\/p>\n<p>Apr\u00e8s la requ\u00eate d&rsquo;ajout, on place une requ\u00eate de recherche dans le LDAP (type de test : <em>Search test<\/em>). C&rsquo;est optionnel, c&rsquo;est juste pour faire une seconde v\u00e9rification du bon ajout.<\/p>\n<p>On notera :<\/p>\n<ul>\n<li>Le champ <strong>Search Filter <\/strong>qui est ici le \u00ab\u00a0<em>uid<\/em> \u00bb ins\u00e9r\u00e9<\/li>\n<li>Le champ <strong>Scope<\/strong> est positionn\u00e9 \u00e0 <em>Effectuer une recherche &lsquo;onelevel&rsquo;<\/em> (on ne recherche pas dans les sous-\u00e9l\u00e9ments de l&rsquo;arbre LDAP)<\/li>\n<li>Le champ <strong>Size limit<\/strong> pour limiter \u00e0 1 le r\u00e9sultat retourn\u00e9 (on fait une recherche unitaire)<\/li>\n<li>Le champ <strong>Limite de temps<\/strong> \u00e0 10000 (ms) pour faire \u00e9chouer l&rsquo;\u00e9chantillon si le serveur LDAP est trop long \u00e0 r\u00e9pondre<\/li>\n<li>Le champ <strong>Attributes<\/strong> (optionnel) qui permet de choisir les champs \u00e0 r\u00e9cup\u00e9rer, ici le CN, SN et Mail<\/li>\n<li>Et pour finir, la case \u00e0 cocher <strong>Examiner les r\u00e9sultats de recherche ?<\/strong> va permettre d&rsquo;avoir dans les r\u00e9sultats du test, les valeurs des champs r\u00e9cup\u00e9r\u00e9s afin notamment de faire (par exemple) une assertion.<\/li>\n<\/ul>\n<p>Ensuite <em>(enfin)<\/em> on peut passer \u00e0 l&rsquo;ex\u00e9cution du sc\u00e9nario JMeter.<\/p>\n<p>Pour cela, on grade la configuration par d\u00e9faut du <strong>Groupes d&rsquo;unit\u00e9s<\/strong>, \u00e0 savoir : 1 unit\u00e9 qui monte en charge en 1 seconde et qui faire 1 it\u00e9ration (1-1-1).<\/p>\n<p><em>(c&rsquo;est le <strong>Contr\u00f4leur Pour chaque<\/strong> qui se charge des it\u00e9rations sur les utilisateurs)<\/em><\/p>\n<p><span style=\"text-decoration: underline;\">Voici l&rsquo;arbre de r\u00e9sultats :<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"R\u00e9sultats de lex\u00e9cution LDAP dans JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap18.png\" alt=\"\" width=\"679\" height=\"298\" \/><\/p>\n<p>Si tout s&rsquo;est bien pass\u00e9, tout est <em>vert<\/em>. Dans les donn\u00e9es de r\u00e9ponses, on voit les r\u00e9sultats des requ\u00eates LDAP, avec la valeur <em>Success<\/em>.<\/p>\n<p>On peut \u00e9galement v\u00e9rifier dans les donn\u00e9es de r\u00e9ponses que <em>par exemple<\/em> la g\u00e9n\u00e9ration des adresses email s&rsquo;est bien d\u00e9roul\u00e9e.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"V\u00e9rification du pr\u00e9-processeur dans la requ\u00eate LDAP avec JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap19.png\" alt=\"\" width=\"667\" height=\"444\" \/><\/p>\n<p>Un r\u00e9cepteur <strong>R\u00e9sultats d&rsquo;assertion<\/strong>, configur\u00e9 pour afficher <em>uniquement<\/em> les erreurs, permet de voir les utilisateurs qui ont eu un probl\u00e8me lors de l&rsquo;ex\u00e9cution. Ici, il y a eu des soucis visiblement sur les noms de boxers qui ont un caract\u00e8re accentu\u00e9&#8230;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 1px solid black;\" title=\"Rapport dassertion JMeter\" src=\"\/wp-content\/images\/jmeter21-img-ldap\/jmeter-ldap20.png\" alt=\"\" width=\"749\" height=\"271\" \/><\/p>\n<p>Et voil\u00e0, avec ce tutoriel, on d\u00e9couvre que JMeter sait faire d&rsquo;autre chose qu&rsquo;un test de charge Web.<\/p>\n<p>Vous noterez que ce type de sc\u00e9nario, fait de JMeter une sorte d&rsquo;<a href=\"http:\/\/fr.wikipedia.org\/wiki\/ETL\">ETL (Extract-Transform-Load)<\/a>. Ainsi, on peut m\u00eame imaginer d&rsquo;adapter ce sc\u00e9nario pour maintenir une synchronisation entre une base de donn\u00e9es et un LDAP, le tout en ex\u00e9cutant JMeter en <a href=\"http:\/\/blog.milamberspace.net\/index.php\/2009\/02\/01\/jmeter-pourquoi-executer-son-test-de-charges-en-mode-non-gui-sans-interface-graphique-192.html\">mode non-gui<\/a> dans une t\u00e2che programm\u00e9e ou un cron.<\/p>\n<p>Je pr\u00e9pare une suite \u00e0 ce tutoriel concernant la conversion automatis\u00e9e des mots de passe stock\u00e9s ici en clair dans le LDAP, vers des mots de passe stock\u00e9s en SHA-1.<\/p>\n<p><em>Bons sc\u00e9narios.<\/em><\/p>\n<p><em><br \/>\n<\/em><\/p>\n<p><strong>En annexes :<\/strong><br \/>\n<strong> A\/ <\/strong>Un petit SELECT de ma base de donn\u00e9es (histoire de montrer sa structure)<\/p>\n<pre>mysql&gt; select * from BOXERS limit 10;\r\n +----+----------+------------+\r\n | ID | PRENOM\u00a0\u00a0 | NOM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\r\n +----+----------+------------+\r\n |\u00a0 1 | Muhammad | Ali\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\r\n |\u00a0 2 | Lou\u00a0\u00a0\u00a0\u00a0\u00a0 | Ambers\u00a0\u00a0\u00a0\u00a0 |\r\n |\u00a0 3 | Vito\u00a0\u00a0\u00a0\u00a0 | Antuofermo |\r\n |\u00a0 4 | Jorge\u00a0\u00a0\u00a0 | Arce\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\r\n |\u00a0 5 | Alexis\u00a0\u00a0 | Arguello\u00a0\u00a0 |\r\n |\u00a0 6 | Henry\u00a0\u00a0\u00a0 | Armstrong\u00a0 |\r\n |\u00a0 7 | Abe\u00a0\u00a0\u00a0\u00a0\u00a0 | Attell\u00a0\u00a0\u00a0\u00a0 |\r\n |\u00a0 8 | Monte\u00a0\u00a0\u00a0 | Attell\u00a0\u00a0\u00a0\u00a0 |\r\n |\u00a0 9 | Yuri\u00a0\u00a0\u00a0\u00a0 | Arbachakov |\r\n | 10 | Satoshi\u00a0 | Aragaki\u00a0\u00a0\u00a0 |\r\n +----+----------+------------+\r\n 10 rows in set (0.03 sec)<\/pre>\n<p><strong>B\/ <\/strong>Le format LDIF d&rsquo;exemple <em>(qui permet de conna\u00eetre les champs \u00e0 ajouter dans la requ\u00eate LDAP d&rsquo;ajout, mais entendu, il faut l&rsquo;adapter pour que cela colle avec le v\u00f4tre (serveur LDAP))<\/em><\/p>\n<pre>dn: uid=milamber,ou=Users,dc=milamberspace,dc=net\r\nobjectclass: organizationalPerson\r\nobjectclass: person\r\nobjectclass: top\r\nobjectclass: inetOrgPerson\r\nuid: milamber\r\nuserPassword: jmeter2009\r\ncn: milamber\r\nmail: milamber@milamberspace.net\r\ndisplayname: Milamber\r\ngivenname: Milamber\r\nsn: Milamber<\/pre>\n<p>.\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici un tutoriel pour r\u00e9aliser un script JMeter qui va lire dans une base de donn\u00e9es (ici MySQL) via JDBC, une table d&rsquo;utilisateurs (nom et pr\u00e9nom), puis se connecter sur un serveur LDAP (ici openLDAP) afin d&rsquo;ajouter chaque utilisateur dans le LDAP. Ce tutoriel a pour objectifs : Rappeler l&rsquo;utilisation de Requ\u00eate JDBC pour acc\u00e9der &hellip; <a href=\"https:\/\/blog.milamberspace.net\/index.php\/2009\/07\/30\/charger-un-serveur-ldap-depuis-une-base-de-donnees-avec-jmeter-468.html\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Charger un serveur LDAP depuis une base de donn\u00e9es avec JMeter<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32,33,169],"tags":[190,178,330,358],"class_list":["post-468","post","type-post","status-publish","format-standard","hentry","category-apache","category-jmeter","category-test-fonctionnel","tag-controleur-pour-chaque","tag-jdbc","tag-jmeter","tag-ldap"],"_links":{"self":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/comments?post=468"}],"version-history":[{"count":7,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/468\/revisions"}],"predecessor-version":[{"id":493,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/posts\/468\/revisions\/493"}],"wp:attachment":[{"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/media?parent=468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/categories?post=468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.milamberspace.net\/index.php\/wp-json\/wp\/v2\/tags?post=468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}