web-dev-qa-db-ja.com

Gatling:コンソールに完全なHTTP応答本文を表示する方法、またはファイルに印刷する方法

ガトリングは初めてです。完全なHTTP応答本文を表示する方法に関する簡単な完全な例を見つけることができませんでした。

これは私の簡単な例です

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)  
}

BodyStringをファイルまたはコンソールに印刷するにはどうすればよいですか?

前もって感謝します

8
Vladimir

これを行うには、プレーンなsystem.out.println()呼び出しから、お気に入りのJavaライブラリを使用してscala-codeを取り出してファイルに保存する方法がありますが、応答本文が必要な場合、最も簡単なのはlogback.xml構成にそれをさせることです。

ガトリングMavenアーキタイプからプロジェクトを構築した場合、httpリクエスト/レスポンス全体をコンソールに出力するアペンダーを含むコメントアウトされたコード行を含むlogback.xmlが既に含まれています。シミュレーションを開発またはデバッグするためにresponsebodyを確認する必要がある場合、これらのセットのいずれかを有効にすることがまさに必要な場合があります。

 <!--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" />-->

応答本文をファイルに出力する場合、これにもlogback-fileを使用できます。ガトリングシミュレーションの結果が保存されているのと同じカタログ内のファイルにすべての失敗した要求/応答ログを出力するので、次の簡単な構成を使用するのが好きです。専用ファイル。

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>

Gatling 3.0では、上記の2つのロガーを次のアペンダーに置き換える必要があります。

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

例を使用して、以下のexec呼び出しを追加してください。

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

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

  // . . .
}

シミュレーションコードから直接印刷すると、デバッグ中に便利です。

9
Paulo Merson

これは gatling-sbt-demo-documentation によるガトリング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>

コメントを外す<!--<logger name="io.gatling.http.engine.response" level="TRACE" />-->過去に行ったように。

2