Gatling 中不同用户的随机重复次数
Randomising number of repeats for different users in Gatling
我目前正在尝试用 Gatling 编写一个场景,我希望某个动作重复 1 到 8 次。随机性应该以每个用户为基础,因此例如一个用户可能得到 3 次重复,而另一个用户可能得到 7 次。
我希望场景像这样工作,以模拟我不确定用户将重复某个操作多少次的事实。
我尝试了以下方法:
class MySimulation extends Simulation {
private val myScenario = scenario("Scenario")
.repeat(Random.nextInt(8) + 1) {
// some stuff
}
setUp(myScenario.inject(rampUsers(100) during (60 seconds)))
}
然而,这最终会编译成一个随机数,然后将其用于每个用户。所以如果随机数生成5次,每个用户最终会重复5次,这不是我想要的。
Gatling 有没有办法让每个用户得到一个不同的随机数来重复函数?还是只适用于常数?
您尝试的方式无效,因为您定义的方案是在启动时执行一次的构建器 - 因此 Random.nextInt 仅调用一次。
但是有几种方法可以实现您想要的。
最简单的(因为您只需要一个随机数)是使用加特林 EL 随机获取序列中的一个元素。
首先,用你想要的数字范围定义一个 scala val
private val times = 1 to 8
然后将你的范围放入会话中并使用 EL 从集合中获取随机值
.exec(_.set("times", times))
.repeat("${times.random()}" ) {
// some stuff
}
或者,您可以定义一个自定义馈送器 - 这种方法可以让您执行随机字符串等操作
private val times = Iterator.continually( Map( "times" -> Random.nextInt(8) + 1))
然后只需喂食并使用 "times" 值
.feed(times)
.repeat("${times}") {
// some stuff
}
我目前正在尝试用 Gatling 编写一个场景,我希望某个动作重复 1 到 8 次。随机性应该以每个用户为基础,因此例如一个用户可能得到 3 次重复,而另一个用户可能得到 7 次。
我希望场景像这样工作,以模拟我不确定用户将重复某个操作多少次的事实。
我尝试了以下方法:
class MySimulation extends Simulation {
private val myScenario = scenario("Scenario")
.repeat(Random.nextInt(8) + 1) {
// some stuff
}
setUp(myScenario.inject(rampUsers(100) during (60 seconds)))
}
然而,这最终会编译成一个随机数,然后将其用于每个用户。所以如果随机数生成5次,每个用户最终会重复5次,这不是我想要的。
Gatling 有没有办法让每个用户得到一个不同的随机数来重复函数?还是只适用于常数?
您尝试的方式无效,因为您定义的方案是在启动时执行一次的构建器 - 因此 Random.nextInt 仅调用一次。
但是有几种方法可以实现您想要的。
最简单的(因为您只需要一个随机数)是使用加特林 EL 随机获取序列中的一个元素。
首先,用你想要的数字范围定义一个 scala val
private val times = 1 to 8
然后将你的范围放入会话中并使用 EL 从集合中获取随机值
.exec(_.set("times", times))
.repeat("${times.random()}" ) {
// some stuff
}
或者,您可以定义一个自定义馈送器 - 这种方法可以让您执行随机字符串等操作
private val times = Iterator.continually( Map( "times" -> Random.nextInt(8) + 1))
然后只需喂食并使用 "times" 值
.feed(times)
.repeat("${times}") {
// some stuff
}