Tirs de charge avec Gatling

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 :

  1. on affiche la page d'accueil, puis on attend 7 secondes
  2. on lance une requête GET vers la page de recherche de « symfony2 » puis on attend 4 secondes
  3. 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 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 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 technologies d'alter way