Authors : Alterway
Gatling est un outil de tirs de charge Open Source qui a l'avantage d'être très simple à installer et à configurer. Sa DSL est rapide à prendre en main, et ses rapports très lisibles. Voyons comment écrire un premier tir de charge...
Installation
Rien de plus simple (à condition d'avoir Java sur sa machine) : il suffit d'extraire les sources quelque part sur son poste. Attention, nous utiliserons Gatling2, qui possède sa propre DSL, et qui est encore en développement. [pastacode provider="manual" lang="bash" message="Installation de Gatling2"]
{{< highlight bash >}} wget https://oss.sonatype.org/content/repositories/snapshots/io/gatling/highcharts/gatling-charts-highcharts/2.0.0-SNAPSHOT/ unzip gatling-charts-highcharts-2.0.0-SNAPSHOT-bundle.zip {{< /highlight >}}
Il suffit ensuite de lancer ./bin/gatling.sh
Premier scénario
Tout se passe dans le dossier code>user-files/simulation. Chaque scénario est divisé en quatre parties :
- La configuration HTTP (url de base, user-agent...)
- La définition des en-têtes HTTP
- La définition du scénario (uploader un fichier, aller sur telle ou telle page...)
- La configuration de ma simulation (combien d'utilisateurs, pendant combien de temps...)
Voici un exemple minimaliste que nous mettrons dans
user-files/simulation/demo-alterway
[pastacode provider="manual" lang="java" message="Premier tir de charge"]
{{< highlight scala >}} package com.alterway
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class RechercherFormation extends Simulation {
val httpConf = http
.baseURL("http://formation.alterway.fr/")
val scn = scenario("Rechercher une formation")
.exec(http("arrivée sur le site").get("/")).pause(7)
.exec(http("rechercher les formations symfony2").get("/?s=symfony2")).pause(4)
.exec(http("accéder à la formation niveau confirmé").get("/formation/formation-symfony-2-niveau-confirme/"))
setUp(scn.inject(atOnceUsers(10)).protocols(httpConf))
}
{{< /highlight >}} Le code parle de lui-même. Dans l'ordre :
- on affiche la page d'accueil, puis on attend 7 secondes
- on lance une requête GET vers la page de recherche de « symfony2 » puis on attend 4 secondes
- on lance une requête GET vers la formation qui nous intéresse
Notez la ligne
setUp(scn.inject(atOnceUsers(10)).protocols(httpConf))
, qui indique qui nous souhaitons avoir 10 utilisateurs simultanés lors du test. Bien sûr, c'est minimaliste, mais fonctionnel et souvent suffisant pour un premier tir.
Lancer le tir
Il faut désormais lancer le tir. Allons-y (nous utilisons le paramètre -s pour préciser directement la classe à charger)
{{< highlight bash >}} ./bin/gatling.sh -s com.alterway.RechercherFormation {{< /highlight >}}
Vous voyez le scénario se dérouler dans votre terminal : Sortie de console de gatling Le fichier results/rechercherformation-<date-heure>/index.html
a été créé. Si vous l'ouvrez dans votre navigateur, vous verrez quelque chose proche de : Aperçu du rapport HTML de gatling Voyez comme le rapport est détaillé et lisible ! La DSL de Gatling est très riche, vous pourrez uploader des fichiers, gérer finement les accès concurrents... A vous de jouer !
Découvrez les derniers articles d'alter way
- Big Data & AI Paris 2024 : L'IA au cœur de toutes les transformations.
- Un retour vers l'open-source ? Vos outils DevOps préférés et leurs equivalents open-source.
- Prowler : L'outil de sécurité multi-cloud indispensable pour renforcer votre infrastructure
- Kubernetes : plateforme "star" de l'IT et levier d'innovation des entreprises
- AI_dev2024
- : DirectPV : Avoir du stockage bloc distribué facilement dans kubernetes