3

Gatling シナリオで次のコードに出くわしました (簡潔/プライバシーのために変更されています)。

val scn = scenario("X")
  .repeat(numberOfLoops, "loopName") {
      exec((session : Session) => {
        val loopCounter = session.getTypedAttribute[Int]("loopName")
        session.setAttribute("xmlInput", createXml(loopCounter))
      })
      .exec(
        http("X")
         .post("/rest/url")
         .headers(headers)
         .body("${xmlInput}"))
      )
  }

これは、repeat ブロックでループに名前を付け、それをセッションから取得し、それを使用して一意の入力 XML を作成しています。次に、その XML をセッションに貼り付け、投稿時に再度抽出します。

ループ反復子に名前を付けてセッションにアクセスする必要をなくしたいと思います。Stream理想的には、a を使用して XML を生成したいと考えています。

しかし、ガトリングがループを制御しているため、再帰はできません。妥協する必要がありますか、それとも機能的な方法でガトリングを使用できますか (変数やセッションへのアクセスなし)?

4

1 に答える 1

2

私が見ているように、numberOfLoops も createXml も、セッションに格納されたユーザー関連のものに依存していないように見えるため、ループは実行時ではなくビルド時に解決できます。

import com.excilys.ebi.gatling.core.structure.ChainBuilder

def addXmlPost(chain: ChainBuilder, i: Int) =
    chain.exec(
        http("X")
            .post("/rest/url")
            .headers(headers)
            .body(createXml(i))
    )

def addXmlPostLoop(chain: ChainBuilder): ChainBuilder =
    (0 until numberOfLoops).foldLeft(chain)(addXmlPost)

乾杯、

ステファン

PS: ガトリングについて質問するには、Google グループ ( https://groups.google.com/forum/#!forum/gatling)をお勧めします。

于 2012-12-17T09:27:42.557 に答える