gpt4 book ai didi

scala - 在 Gatling 重复 block 中使用流

转载 作者:行者123 更新时间:2023-12-02 02:08:20 25 4
gpt4 key购买 nike

我在 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}"))
)
}

它在重复 block 中命名循环,将其从 session 中取出并使用它来创建唯一的输入 XML。然后它将 XML 粘贴回 session 并在发布时再次提取它。

我想消除命名循环迭代器和访问 session 的需要。理想情况下,我想使用 Stream 生成 XML。

但是 Gatling 控制循环,我不能递归。我是否需要妥协,或者我能否以功能性方式使用 Gatling(无需变量或访问 session )?

最佳答案

在我看来,numberOfLoops 和 createXml 似乎都不依赖于本应存储在 session 中的任何与用户相关的内容,因此循环可以在构建时解决,而不是在运行时解决。

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

关于scala - 在 Gatling 重复 block 中使用流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com