JMeter et Groovy : avoir des requêtes HTTP concurrentes

Maintenant que nous avons vu comment faire des scripts Groovy dans JMeter, utilisons Groovy pour faire des requêtes HTTP parallèles avec JMeter.

Oh ! Des requêtes parallèles !? Le vieux rêve dans JMeter… certainement l’une des premières questions que j’ai posé sur la mailing-list des utilisateurs JMeter (jmeter-user).

Bon, je vous préviens, il ne s’agit pas encore de faire un méga test de charge avec ce genre de requêtes parallèles, mais cela peut aider pour des tests ayant des besoins de lancement simultané de requêtes, ou toute autre idée qui vous vient à l’esprit.

Le premier pré-requis est donc d’avoir un JMeter prêt pour faire du Groovy.

Ensuite, nous allons utiliser HTTPBuilder, qui est une couche API basée sur Apache HttpClient, et accessible en Groovy. HTTPBuilder sait faire pas mal de choses (comme du parsing automatique de requêtes JSON), etc. Ici, nous allons dans ce billet seulement nous intéresser à sa capacité à faire des requêtes HTTP de manière asynchrone.

Le petit nom de ce type de requête dans HTTPBuilder est AsyncHTTPBuilder. C’est une requête HTTP qui, au lieu d’être exécutée en premier plan, est envoyée en arrière-plan via une exécution dans un pool d’exécution (élément Executor dans l’API Java) et l’utilisation d’un type particulier : java.util.concurrent.Future pour le résultat de l’exécution de la requête. Ce ‘future’ permet d’avoir la possibilité de lancer plusieurs requêtes HTTP asynchrones (quasiment en même temps), puis de récolter le résultat de leurs exécutions ensuite. Continuer la lecture de JMeter et Groovy : avoir des requêtes HTTP concurrentes

Quelques nouvelles. JMeter, jmeter-plugins, Debian 6.0, Nokia N8

Même si cela ne se voit pas trop, je suis relativement imprégné de JMeter, en effet, j’ai développé un nouveau récepteur graphique pour voir sous forme de graphique ses résultats d’une manière plus parlante que les récepteurs graphiques existants nativement sous JMeter, mais malheureusement des problèmes de compatibilité de licence Apache licence vs LGPL ne permettent pas de committer directement ce travail dans JMeter (je sais, j’aurais dû faire attention…). Toujours est-il que je dois maintenant externaliser ce récepteur sous forme d’extensions. Je vais certainement le proposer sur apache-extras, un lieu de stockage de projets liés à la fondation Apache.

Néanmoins il ne faut pas attendre ce nouveau récepteur pour avoir des récepteurs graphiques jolis car il existe des récepteurs dans l’extension jmeter-plugins, qui permettent d’avoir une belle représentation graphique (entre autres) de ses résultats. C’est excitant à tester, les différents graphiques sont d’une aide précieuse pour l’analyse d’un tir. Continuer la lecture de Quelques nouvelles. JMeter, jmeter-plugins, Debian 6.0, Nokia N8

JMeter et Groovy : exemple d’échantillon BSF/Groovy

JMeter dispose de plusieurs éléments « BSF » pour Bean Scripting Framework. Ce cadre de travail (framework), fait par la Fondation Apache, permet de faire un pont entre le Java de JMeter et un code script dans un autre langage de programmation.

Plus précisément ces éléments BSF permettent d’avoir accès à un certain nombre d’objets internes de JMeter (comme l’objet SampleResult correspondant au résultat courant : temps de réponses, nom, latence, etc.), tout en pouvant effectuer des opérations (de programmation) dessus avec un langage de programmation qui n’est pas forcément du Java (le langage utilisé pour créer JMeter).

BSF supporte un grand nombre de langage, soit directement c’est-à-dire distribué dans l’archive binaire de BSF, soit directement par les langages eux-mêmes, qui dans ces cas-là proposent leur moteur BSF.

Dans ce billet, nous allons voir comment faire du Groovy (définit comme un langage dynamique et agile pour Java) dans JMeter à travers ces éléments BSF. Continuer la lecture de JMeter et Groovy : exemple d’échantillon BSF/Groovy

Shutter, Application évoluée de capture d’écrans (sur GNU/Linux)

Je fais beaucoup de captures d’écrans pour la rédaction de procédures, tutoriels (cf. ce blog;-) et autres diapositives de formation.

Gnome (je rappelle que je suis sous GNU/Linux Debian), dispose déjà d’une petite application de capture d’écrans (gnome-screenshot), qui permet en autres de faire des captures de l’écran complet, de fenêtre seule, immédiatement ou de manière programmée. La capture est soit enregistrée sur le disque dur dans un répertoire cible, soit dans le presse-papiers pour un copier/coller futur.

C’est déjà très bien, mais insuffisant, quand on veut, juste une partie de la fenêtre/écran, pouvoir faire des annotations ou des encadrés. Pour tout cela, je passais par le logiciel de retouche d’images The GIMP. Globalement la solution me convenais, jusqu’à la découverte de Shutter. Avant c’est long (capture, gimp, application cible, etc.), maintenant c’est rapide (tout en un)…

Shutter est une « application évoluée » pour la capture d’écrans. Bien entendu, il sait faire tout ce que fait l’application de base fournie avec Gnome, mais il ajoute dans les fonctionnalités qui m’intéressent :

  • Capture de sélection avec possibilité d’ajuster la sélection pendant la capture à la manière de l’outil Rectangle dans The GIMP (on peut donc ajuster les limites de la sélection avant la capture)
  • Édition de la capture dans un mini-éditeur, pour permettre par exemple l’ajout d’un encadré, du texte, des flèches, etc. ou bien de recadrer une nouvelle fois la capture
  • Enregistrement dans un fichier png (ou autres formats) dans un répertoire cible et dépôt dans le presse papiers pour une utilisation immédiate en coller.
  • etc.

Shutter : application de capture d'écrans

Pour le détail, le mieux est de visiter la section Screenshots sur le site de l’application.

Pour l’installation sous Debian Squeeze, c’est :

apt-get install shutter libgoo-canvas-perl
(et leurs dépendances)

La conclusion, c’est que j’en suis satisfait et je sens que je vais passer moins de temps dans la rédaction de procédures ou tutoriels 😉

 

Debian 6.0 alias Squeeze est sortie

Et voilà après 2 ans de développement, la nouvelle version de Debian est sortie aujourd’hui. C’est la distribution GNU/Linux que j’utilise depuis quelques mois (en remplacement de Ubuntu) et dont je suis très satisfait par son coté stabilité.
Plus d’informations : la nouvelle de la publication chez Debian ou le détail des principaux paquetages chez Distrowatch.

JMeter : petit test JMS Publication – Abonnement avec ActiveMQ

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’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’archive binaire d’ActiveMQ, on le décompresse, puis on le démarre avec ces commandes :

cd <Repertoire_ActiveMQ>
./bin/activemq start

Il est possible de vérifier que le serveur ActiveMQ fonctionne bien en se connectant sur http://localhost:8161/admin/ correspondant à l’URL de l’interface d’administration.

Du coté de JMeter voici comment ce présente notre petit test :

Tout d’abord, on notera la présence de 2 Groupes d’unités : un réservé pour l’Abonnement et un autre pour la Publication. Continuer la lecture de JMeter : petit test JMS Publication – Abonnement avec ActiveMQ

Avec la nouvelle année, quelques nouvelles

Nous voici donc en 2011, je vous souhaite une bonne et heureuse année 2011. J’en profite pour donner quelques nouvelles.

Tout d’abord, je suis toujours sur Debian Squeeze (la future Debian 6.0), et j’en suis vraiment content (car stable et sans problème). J’ai tout de même pris un risque en installant depuis le dépôt Experimental la version 3.3RC1 de LibreOffice en remplacement de OpenOffice.org. J’avoue que je préfère si possible utiliser un logiciel open source qui ne soit pas adosser à une structure commerciale, histoire d’éviter les aléas possibles dû à la nécessité de rentabilité.

Je viens d’accepter l’invitation du Project Managment Comittee (PMC) d’Apache Jakarta pour devenir membre de ce PMC. Concrètement, cela me permettra de suivre les discussions internes sur les projets Jakarta (en particulier sur JMeter) ainsi que les votes pour par exemple l’ajout d’un nouveau committer, d’avoir la possibilité de gérer / changer des éléments d’infrastructure comme le site web.

J’ai fait l’acquisition d’un téléphone portable Nokia N8 en remplacement de mon Nokia E72 (une sorte de cadeau de Noël). Continuer la lecture de Avec la nouvelle année, quelques nouvelles

JMeter : le testeur d’expression régulière

Depuis la version 2.4 de JMeter, un nouvel sous-élément du récepteur Arbre de résultats est apparu, il s’agit du Testeur de RegExp.

Avant de vous montrer comment le trouver et l’utiliser, parlons-en un peu.

Comme vous le savez peut-être, JMeter dispose d’un élément Extracteur Expression régulière dans la catégorie Post-processeurs. La vocation de cet élément Extracteur Expression régulière est d’extraire à partir d’une expression régulière une ou plusieurs chaînes de caractères depuis la réponse reçue d’un échantillon de test. La puissance en termes d’extraction de données de cet élément est très forte, cependant, il est parfois peu aisée de trouver du premier coup la bonne expression régulière qui fera ce que vous voulez. En effet, vous devez jouer et rejouer le scénario pour tester votre expression régulière tant qu’elle n’est pas au point.

C’est là qu’intervient le Testeur de RegExp. Continuer la lecture de JMeter : le testeur d’expression régulière

JMeter : Sauvegarder dans un fichier votre session de navigation lors de l’enregistrement de vos scénarios fonctionnels

Imaginez- vous en mission pour effectuer un test de charge avec votre logiciel favori JMeter. Vous allez suivre le processus habituel :

  1. Identifier le scénario fonctionnel qui sera rejoué par les utilisateurs virtuels
  2. Enregistrer ce scénario dans JMeter au travers d’un session de navigation avec votre navigateur
  3. Affiner le scénario (variabiliser ce qui doit l’être, ajouter des assertions réponses, etc.)
  4. Lancer votre tir

Le problème, c’est que vous avez accès à l’application cible pendant une période limitée, genre 15 min, ou bien que vous n’avez pas accès directement à l’application, vous devez passer un poste de travail pour accéder à l’application, ce poste étant bien entendu moins bien que votre ordinateur (genre c’est pas Linux ;-))

Que diriez-vous d’enregistrer votre session de navigation complète, c’est-à-dire les requêtes avec leurs paramètres mais surtout les réponses reçues par le navigateur, afin de pouvoir affiner votre scénario « à froid », sans connexion avec l’application cible, ou carrément tranquillement à la maison ?

Voici le mode d’emploi. Continuer la lecture de JMeter : Sauvegarder dans un fichier votre session de navigation lors de l’enregistrement de vos scénarios fonctionnels

Suite passage à Debian Squeeze

Un petit mot ce soir pour dire que mon passage à Debian ‘testing’ 6.0 alias Squeeze s’est et se passe très bien. Mon ordinateur portable se porte comme un charme, pas de problème, pas (aucun) de plantage des logiciels. On pourrait être étonné de cette stabilité sans faute, car en général avec les Ubuntu, les 1-2 premiers mois sont parfois délicats.

Ici, même si la version 6.0 ne doit sortir que vers la fin de l’année (enfin « quand cela sera prêt » selon la philosophie Debian), c’est tout de même une version qui me semble extrêmement stable.

Sinon, voici quelques commentaires supplémentaires :

  • Thunderbird 3 : son moteur de recherche (d’indexation) c’est top, surtout pour mes gigas de mails professionnels. J’en étais resté à la version 2, même si cela fait un moment que la v3 est sortie…
  • OpenJDK 6 (version open source non officielle de référence de Java 6) fonctionne bien, en particulier pour Eclipse 3.6 et JMeter (bien que ce dernier ne supporte officiellement que Sun JDK 5 ou 6)
  • Iceape (Seamonkey) version 64 bits marche très très bien sur Debian. C’est mon logiciel pour les mails et le surf perso.
  • Firefox 3.6 du dépôt Experimental fonctionne très bien, sans aucun soucis pour moi.
  • OpenOffice.org 3.2.1 c’est toujours aussi bien, surtout quand on a pris le temps d’apprendre à le connaître, par rapport à nos habitudes avec MS Office.
  • Comme il reste encore des anomalies à corriger sur Debian 6.0 (bien que j’ai pas de problème de mon coté…) il y a des mises à jour de paquetages quasiment tous les jours. C’est pas bien grave, mais cela fait genre « distribution pas finie », alors qu’elle est vraiment stable pour moi 😉
  • Mon point de regret, c’est le kernel. On est en 2.6.32. J’aurai aimé être en au moins 2.6.35 car il y a de bonnes améliorations dessus. J’ai bien essayé de compiler à la main le kernel 2.6.36 pour cette Debian (hors debian way) mais le boot ne se passe pas bien. (j’ai réussi la compilation « debian way » mais seulement pour le 2.6.32…) Tout ceci m’aidant tout de même à préparer ma certification LPIC-2 😉
  • Oracle (ex-Sun) VM VirtualBox fonctionne très bien sous Debian (et aussi sous Ubuntu). Bien que Oracle n’est pas une stratégie « open source », et que du coup l’avenir de VirtualBox soit en péril tel qu’il est aujourd’hui, c’est pour moi une vrai pépite ce logiciel qui fonctionne à peu près partout.

Que dire d’autre… Content d’être sous Debian. Sentiments de liberté et de force. Pourvu que cela dur.

./