gpt4 book ai didi

scala - Gatling exec 与 session

转载 作者:行者123 更新时间:2023-12-03 17:25:38 25 4
gpt4 key购买 nike

我需要在 Gatling 中提出请求,我可以在其中访问 session 项目(没有表达式语言)。我需要这样做,因为我想将数据注入(inject) ByteArrayBody来自 csv 馈送器的请求。为了演示我的问题,我有一个小例子(没有 session 的实际需要)。

以下场景运行良好:

val scnBase: ScenarioBuilder = scenario("Test scneario").repeat(1){
exec(http("Http Test test").get("http://google.de/"))
}

但是那个没有(我得到了异常(exception) There were no requests sent during the simulation, reports won't be generated ):
val scnBase: ScenarioBuilder = scenario("Test scneario").repeat(1){
exec(session => {
http("Http Test test").get("http://google.de/")
session
})
}

我在 IntelliJ(到目前为止运行良好)和以下(这里最小化)模拟文件中运行我的模拟:
package test.scala

import java.text.SimpleDateFormat
import java.util.Date

import io.gatling.core.Predef._
import io.gatling.core.body.ByteArrayBody
import io.gatling.core.structure.ScenarioBuilder
import io.gatling.http.Predef._
import io.gatling.http.protocol.HttpProtocolBuilder
import org.slf4j.LoggerFactory
import test.scala.TerminalTesterRequest.url
import test.scala.requests._
import test.scala.util.CharsetConverter

import scala.concurrent.duration._
import scala.language.postfixOps

class MySimulation extends Simulation {

//base URL (actually this URL is different, but it's not important)
val ecmsServerUri = "http://0.0.0.0"

//base Protocol
val httpProtocol: HttpProtocolBuilder = http
.baseUrl(ecmsServerUri)
.inferHtmlResources(BlackList(""".*\.js""", """.*\.css""", """.*\.gif""", """.*\.jpeg""", """.*\.jpg""", """.*\.ico""", """.*\.woff""", """.*\.(t|o)tf""", """.*\.png"""), WhiteList())
.acceptHeader("*/*")
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("en,en-US;q=0.7,de-DE;q=0.3")
.userAgentHeader("Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.8762)")

val scnBase: ScenarioBuilder = scenario("Test scneario").repeat(1){
exec(session => {
http("Http Test test").get("http://google.de/")
session
})
}

setUp(
scnBase.inject(constantUsersPerSec(1) during(1 seconds)).protocols(httpProtocol)
).maxDuration(5 minutes)
}

如何运行 exec请求 session 信息(或至少来自馈线的数据)?我正在使用加特林 3.1.1

最佳答案

在函数中构建您需要的任何内容并将结果放入 session 中,然后在实际请求中引用该值

val feeder = csv("foo.csv")

scenario("Test scenario")
.feed(feeder)
.exec(buildPostData)
.exec(http("Http Test test")
.post(createApiURL)
.body(ByteArrayBody("${postData}"))
.check(status.is(200))
)

def buildPostData: Expression[Session] = session => {
val postData: Array[Byte] =
... // getting values from csv record: session("csvHeader").as[String]
session.set("postData", postData)
}

关于scala - Gatling exec 与 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55907588/

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