web-dev-qa-db-fra.com

Gatling: comment afficher le corps de réponse HTTP complet dans la console ou l'imprimer dans un fichier

Je suis nouveau chez Gatling. Je n'ai pas pu trouver un simple exemple complet sur la façon de voir le corps de réponse HTTP complet.

Ceci est mon exemple simple

class CreateNotecard extends Simulation 
{  
  val baseURL = "https://portal.apps.stg.bluescape.com" 
  val httpConf = http 
    .baseURL(baseURL) 
    .userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36") 

  val scn = scenario("Create a notecard")  
    .exec(http("Get authenticity token") 
    .get("/users/sign_in") 
    .check(bodyString.saveAs("BODY"))) 

  setUp( 
    scn.inject(atOnceUsers(1))  
  ).protocols(httpConf)  
}

Comment imprimer la bodyString dans un fichier ou sur la console?

Merci d'avance

8
Vladimir

Il existe de nombreuses façons de le faire, à partir d'appels system.out.println () simples, en fouettant du code scala pour l'enregistrer dans un fichier en utilisant vos bibliothèques Java Java préférées, mais en fonction de ce que vous avez besoin des corps de réponse, le plus simple est peut-être de laisser la configuration logback.xml le faire pour vous.

Si vous avez construit votre projet à partir de l'archétype gatling maven, il contiendra déjà un logback.xml avec quelques lignes de code commentées contenant des appendeurs qui impriment la demande/réponse http entière à la console, commentez-les. Si vous avez juste besoin de voir le corps de la réponse pour développer ou déboguer la simulation, l'activation de l'un de ces ensembles peut être exactement ce dont vous avez besoin:

 <!--Uncomment for logging ALL HTTP request and responses -->
    <!--<logger name="io.gatling.http.ahc" level="TRACE" />-->
    <!--<logger name="io.gatling.http.response" level="TRACE" />-->
<!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
    <!--<logger name="io.gatling.http.ahc" level="DEBUG" />-->
    <!--<logger name="io.gatling.http.response" level="DEBUG" />-->

Si vous souhaitez imprimer les corps de réponse dans un fichier, vous pouvez également utiliser le fichier logback pour cela. J'aime plutôt utiliser la configuration simple suivante, car elle imprime tous les journaux de demande/réponse défaillants dans un fichier dans le même catalogue que les résultats de la simulation Gatling sont stockés, utile pour voir plus en détail le type d'erreurs que vous obtenez dans vos simulations dans un fichier dédié.

Pour Gatling 2.3:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
        </encoder>
    <immediateFlush>false</immediateFlush>
    </appender>

    <appender name="ERROR" class="ch.qos.logback.core.FileAppender">
        <file>target/gatling/simulation-errors.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
        </encoder>
        <immediateFlush>false</immediateFlush>
        <param name="Append" value="false" />
    </appender>

    <logger name="io.gatling.http.ahc" level="DEBUG" additivity="false">
        <appender-ref ref="ERROR"/>
    </logger>
    <logger name="io.gatling.http.response" level="DEBUG" additivity="false">
        <appender-ref ref="ERROR"/>
    </logger>

    <root level="WARN">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

Pour Gatling 3.0, les deux enregistreurs ci-dessus doivent être remplacés par l'appender suivant:

<logger name="io.gatling.http.engine.response" level="DEBUG" additivity="false">
    <appender-ref ref="ERROR"/>
</logger>
5

En utilisant votre exemple, ajoutez simplement l'appel exec ci-dessous.

class CreateNotecard extends Simulation {  
    // . . .
    .check(bodyString.saveAs("BODY"))) 

  .exec(session => {
    val response = session("BODY").as[String]
    println(s"Response body: \n$response")
    session
  })

  // . . .
}

L'impression directement à partir du code de simulation est utile lors du débogage.

9
Paulo Merson

C'est la solution selon gatling-sbt-demo-documentation pour gatling 3.2.0

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
    </encoder>
    <immediateFlush>false</immediateFlush>
</appender>

<!-- uncomment and set to DEBUG to log all failing HTTP requests -->
<!-- uncomment and set to TRACE to log all HTTP requests -->
<!--<logger name="io.gatling.http.engine.response" level="TRACE" />-->

<root level="WARN">
    <appender-ref ref="CONSOLE" />
</root>

Décommentez simplement <!--<logger name="io.gatling.http.engine.response" level="TRACE" />--> comme par le passé.

2
Antoni Karolewski