【发布时间】:2019-11-27 15:11:56
【问题描述】:
我正在尝试创建一个针对 100 个用户运行 10 小时的测试。 每小时,我想在 10 分钟内将用户数量增加 50,然后再去 回到 100 个用户。请注意,我说的是用户数量而不是 TPS。
由于在一次场景中找不到任何正常的方法,因此我考虑了以下方法。我创建了两个场景并同时运行它们:
setUp(scenario1.inject(rampConcurrentUsers(1) to (100) during (10 minutes))
.protocols(httpconf),
scenario2.inject(nothingFor(60 minutes), rampUsers(50) during (10 minute)).protocols(httpconf))
.maxDuration(10 hours))
这个模拟的问题是从场景 2 开始增加的用户永远不会停止,所以一个小时后我最终有 150 个用户,直到模拟结束。
请注意,Scenario1 和scenario2 除了模拟名称之外是相同的......必须有更好的方法来实现这一点,或者至少让它与两个场景一起工作。 任何想法/帮助将不胜感激!
更新:
按照约翰的建议,我尝试了以下代码:
setUp(fastZappingSpeed.inject(nothingFor(1 second),sInjection(1): _*
).protocols(httpconf)).maxDuration(6 minutes)
def sInjection( hours : Int ) = {
val seq = Seq(rampUsers(10) during (1 minute))
var i = hours
while ( i > 0 ) {
seq ++ Seq(nothingFor(2 minute)) ++ Seq(rampUsers(10) during (1 minute))
i -= 1
}
seq
}
但是,我没有得到预期的行为:
如果我“手动”编写完全相同的行为,我确实得到了预期的结果:
setUp(scenario.inject(
rampUsers(10) during (1 minute),
nothingFor(2 minute),
rampUsers(10) during (1 minute)
).protocols(httpconf)).maxDuration(3 minutes)
我在这里错过了什么?
【问题讨论】:
-
注意,你正在传递 sInjection(1),这意味着你有一个恰好一个凹凸的序列。如果你想要 2 个凹凸,你需要传入 2 个。
-
这只是我粘贴的一个示例...查看我添加的帖子,我使用不同的方法解决了这个问题。
标签: gatling