在不同时间与不同斜坡用户并行进行的多个Gatling模拟

时间:2019-07-15 10:20:33

标签: scala gatling

我以这种方式定义了多个加特林模拟(删除了导入)。

class MySimulation1 extends Simulation {
    object SimulationObj1 {
        var feeder = ...
        var random = exec(...)
    }

    val httpProtocol = ...
    val myScenario = scenario("Scenario name").exec(SimulationObj1.random)
    setUp(myScenario.inject(
        rampUsers(10) over (180 seconds)
        )
    )
    .assert(...)
}

class MySimulation2 extends Simulation {
    object SimulationObj2 {
        var feeder = ...
        var random = exec(...)
    }

    val httpProtocol = ...
    val myScenario = scenario("Scenario name").exec(SimulationObj2.random)
    setUp(myScenario.inject(
        rampUsers(15) over (300 seconds)
        )
    )
    .assert(...)
}

然后还有另一个AllSimulations类,该类仅调用所有模拟,以便可以并行执行模拟。

class AllSimulations extends Simulation {
    object AllSimulationsObj {
        var feeder = ...
        var random = exec(...)
    }

    val httpProtocol = ...
    val myScenario = scenario("All scenarios").exec(
        new MySimulation1().SimulationObj1.random,
        new MySimulation2().SimulationObj2.random)
    setUp(myScenario.inject(
        rampUsers(10) over (180 seconds)
        )
    )
    .assert(...)
}

问题是,为了让不同的rampUsers超过不同的durations,我从setUp类中删除了AllSimulations块,但这给了我错误“未设置方案”。

如何与所有模拟类中定义的rampUsersdurations并行运行所有模拟方案?

编辑:这是我尝试过的方法,但是我不确定是否有意义。

    class AllSimulations extends Simulation {

        setUp(
            new MySimulation1().myScenario.inject(rampUsers(10) over (180 seconds)),
            new MySimulation2().myScenario.inject(rampUsers(15) over (300 seconds))
        )
        .assert(...)
    }

1 个答案:

答案 0 :(得分:0)

我认为您的建议不会奏效-并行执行模拟实际上没有任何意义,因为您的结果将不再反映并发用户的真实数量。

可行的方法是定义您的方案(如果合适,可以在不同的文件中),然后进行模拟,以根据需要将用户注入每个方案中。