加特林 - 按顺序执行方案

pba*_*ski 5 scala gatling

当我运行代码时:

setUp(
     scenario1.inject(constantUsersPerSec(1) during (1 second)),
     scenario2.inject(constantUsersPerSec(1) during (1 second))
).protocol()
Run Code Online (Sandbox Code Playgroud)

这两种方案都是立即启动的.
什么需要改变才能逐个运行?

Ger*_*cke 9

您可以使用"nothingFor"注入步骤启动第二个场景

setUp(
   scenario1.inject(constantUsersPerSec(1) during (1 second)),
   scenario2.inject(nothingFor(1 second) ,
                    constantUsersPerSec(1) during (1 second))
).protocol()
Run Code Online (Sandbox Code Playgroud)

如果要保证顺序执行,则必须将两个方案的链都放入新方案中.

var scn = scenario("combined scenario").
           .exec(chain1)
           .exec(chain2)

def chain1 = exec(...)...
def chain2 = exec(...)...
Run Code Online (Sandbox Code Playgroud)

通常我将页面(记录,易失性)的脚本与用户场景序列(页面调用链)和负载模型(带注入步骤的设置)分开,这样可以更容易地重新组合链以创建新场景.


roz*_*zky 6

关键方法是andThen

在 Gattle 3.4+ 中,他们添加了新的 DSL,看起来像这样(取自官方文档)

setUp(
  parent.inject(injectionProfile)
    // child1 and child2 will start at the same time when last parent user will terminate
    .andThen(
      child1.inject(injectionProfile)
        // grandChild will start when last child1 user will terminate
        .andThen(grandChild.inject(injectionProfile)),
      child2.inject(injectionProfile)
    )
)
Run Code Online (Sandbox Code Playgroud)

文档https://gadling.io/docs/current/general/simulation_setup/#sequential-scenarios