我正在尝试编写一个Gatling脚本,我从CSV文件中读取起始编号并循环播放,比如10次。在每次迭代中,我想增加参数的值。
看起来需要一些Scala或Java数学,但无法找到有关如何操作或如何以及将Gatling EL与Scala或Java结合使用的信息。
感谢任何帮助或指示。
var numloop = new java.util.concurrent.atomic.AtomicInteger(0)
val scn = scenario("Scenario Name")
.asLongAs(_=> numloop.getAndIncrement() <3, exitASAP = false){
feed(csv("ids.csv")) //read ${ID} from the file
.exec(http("request")
.get("""http://finance.yahoo.com/q?s=${ID}""")
.headers(headers_1))
.pause(284 milliseconds)
//How to increment ID for the next iteration and pass in the .get method?
}
答案 0 :(得分:5)
您从Gatling的Google群组中复制粘贴此代码,但此用例非常具体。 您是否首先正确阅读了documentation regarding loops?你的用例是什么?它与基本循环有什么不相符?
编辑:所以问题是:我如何获得每个循环迭代和每个虚拟用户的唯一ID?
您可以为循环索引和虚拟用户ID计算一个。 Session已经有一个唯一的ID,但它是一个String UUID,所以它对你想做的事情来说不是很方便。
// first, let's build a Feeder that set an numeric id:
val userIdFeeder = Iterator.from(0).map(i => Map("userId" -> i))
val iterations = 1000
// set this userId to every virtual user
feed(userIdFeeder)
// loop and define the loop index
.repeat(iterations, "index") {
// set an new attribute named "id"
exec{ session =>
val userId = session("userId").as[Int]
val index = session("index").as[Int]
val id = iterations * userId + index
session.set("id", id)
}
// use id attribute, for example with EL ${id}
}
答案 1 :(得分:0)
以下是我对此的回答: 问题陈述:我不得不为配置的一组时间重复加特林执行,我的步骤名称必须是动态的。
object UrlVerifier {
val count = new java.util.concurrent.atomic.AtomicInteger(0)
val baseUrl = Params.applicationBaseUrl
val accessUrl = repeat(Params.noOfPagesToBeVisited,"index") {
exec(session=> {
val randomUrls: List[String] = UrlFeeder.getUrlsToBeTested()
session.set("index", count.getAndIncrement).set("pageToTest", randomUrls(session("index").as[Int]))
}
).
exec(http("Accessing Page ${pageToTest}")
.get(baseUrl+"${pageToTest}")
.check(status.is(200))).pause(Params.timeToPauseInSeconds)
}
所以基本上UrlFeeder给我一个String列表(要测试的url),在exec中,我们使用count(AtomicInteger),并使用它来填充一个名为&#39; index&#39;的变量。其值将从0开始,并在每次迭代中为getAndIncremented。这个&#39;索引&#39;变量是将在repeat()循环中使用的变量,因为我们指定了counterVariable的名称,用作&#39; index&#39;
希望它也有助于其他人。