suite à une remarque de Remy, j’ai modifié le test gatling pour bien vérifier qu’on récupère la même session lorsque le slave a pris la place du master.
Pour cela, dans le test, je fais une boucle sur la page index qui indique le nom de la personne si elle est logguée. J’utilise les fonctions de gatling de check pour vérifier que l’information est bien présente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package com.axioconsulting import scala.concurrent.duration._ import io.gatling.core.Predef._ import io.gatling.http.Predef._ import io.gatling.jdbc.Predef._ class Session extends Simulation { val httpProtocol = http .baseURL("http://172.17.0.3:8080") .inferHtmlResources(WhiteList(), BlackList()) .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .acceptEncodingHeader("gzip, deflate") .acceptLanguageHeader("en") .connection("keep-alive") .doNotTrackHeader("1") .userAgentHeader("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0") val headers_1 = Map("Accept" -> "image/png,image/*;q=0.8,*/*;q=0.5") val uri1 = "http://172.17.0.3:8080" val scn = scenario("Session") .exec(http("Login") .get("/session-webapp/login.html?userName=benoit") ) .pause(7).during(5 minutes, "during_0"){ exec(http("refresh_1") .get("/session-webapp/index.jsp").check(status.is(200)).check(regex("benoit").exists)).pause(1); }; setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) } |
Ce qui donne bien:
Pendant le delai d’indisponibilité, on a des erreurs de type 500 et ensuite on repart bien sur la bonne session avec les bonnes données.
L’erreur 500 peut être traitée dans la valve pour gérer un peu ce type d’erreur et rediriger l’utilisateur vers une page adaptée mais ce n’est pas l’objet de cette article.