def installExtension() =
exec(http("template - Install Extension")
.post(url + "/v1/extensions")
.basicAuth("jack", "password")
.headers(namespaceHeader)
// using testUtils to get InputStream conte
.body(InputStreamBody(TestUtils.toStream(hashMap.get("${extensionId}").getOrElse(null))))
.check(status.is( 201)))
class extmgrSimulations extends Simulation {
val extensionIds = csv(s"${Configuration.dataDirectory}/extensionId.csv").circular
val extMgrScenerio = scenario("extensionMgr - Scenario")
.during(Configuration.duration) {
exitBlockOnFail(
group("load-test") {
exec(
pace(Configuration.paceFrom, Configuration.paceTo),
feed(extensionIds),feed(extensionIds)
randomSwitch(
50.00 -> group("Install and delete") {
exec(
extmgrChain.installExtension(),
extmgrChain.deleteExtension(),
)
},
50.00 -> extmgrChain.listExtension()
)
)
}
)
}
这行不通。加特林EL(字符串中的$ {}语法)在任何地方都不起作用。在documentation中对此进行了说明。
警告
此表达式语言仅适用于传递给Gatling DSL方法的字符串值。在实例化Gatling模拟时,仅对此类字符串进行一次解析。
例如queryParam(“ latitude”,session =>“ $ {latitude}”)无效,因为参数不是String,而是返回String的函数。
此外,queryParam(“ latitude”,“ $ {latitude}”。toInt)不会,因为toInt会在将参数传递给queryParam方法之前发生。
这里的解决方案是传递一个函数:
session => session(“ latitude”)。validate [Int]。