将 Gatling 设置为基于 percentage/ratios 发送请求?

Setting Gatling to send requests based on percentage/ratios?

我想设置 Gatling,这样在一个设置中,我可以发送 3000 个请求,其中 95% 将使用一个测试文件,5% 将使用另一个测试文件。这些文件被检索为 json 个文件(在下面的代码中称为 'userFeeder'。Gatling 可以支持上述场景吗?

目前代码如下,适用于每秒请求一次的方法,但需要修改。

class AddUserSimulation extends Simulation {

  private val conf = ConfigFactory.load() //loads a setup file of parameters
  private val TOKEN_VALUE = "tokenvalue"
  private val userFeeder =  jsonFile("/" + conf.getString("environment") + "/testaddUser.json")

  val httpConf = http
    .baseURL(conf.getString("api.gateway.url")) // Here is the root for all relative URLs
    .header("Referer", conf.getString("referer"))
    .header("Cache-Control", "no-cache")
    .contentTypeHeader("application/json")

  val Login = new ADFSAuthentication Login

  val scnAPI = scenario("test add User") // A scenario is a chain of requests and pauses
    .feed(userFeeder.circular)
    .exec(Login.process)
    .repeat(conf.getInt("repeat.count")) {
        exec(http("test add User")
        .post("/" + conf.getString("environment") + "/users/")
        .body(StringBody("${payload}")).asJSON
        .header("Authorization", "Bearer ${"+TOKEN_VALUE+"}")
    .check(status.is(200)))
    .pause(conf.getInt("execution.pause"))
    }
  setUp(scnAPI.inject(constantUsersPerSec(11) during(30 minutes)).protocols(httpConf)) 
}

非常感谢任何帮助。

好的!首先设置你的两个馈线。然后设置两个场景,一个使用第一个馈线,一个使用第二个馈线。最后 setUp 都加上你希望的用户数(对应你的分配)。

代码可能如下所示:

private val firstFeeder =  jsonFile("/" + conf.getString("environment") + "/testaddUser.json")
private val secondFeeder =  jsonFile("/" + conf.getString("environment") + "/testaddUser2.json")

val scnAPI = scenario("test add User")
    .feed(firstFeeder)
    //...

val scnAPI2 = scenario("second test add User")
    .feed(secondFeeder)
    //...

setUp(scnAPI.inject(constantUsersPerSec(95) during(30 minutes)).protocols(httpConf), 
      scnAPI2.inject(constantUsersPerSec(5) during(30 minutes)).protocols(httpConf)) 

注意:这不会创建恰好 3000 个请求,但我想您明白了。