如何在 1 个用户和会话的加特林中使用 feeder 来发出连续的 HTTP 请求

问题描述 投票:0回答:1

我正在构建一个加特林馈线,其序列中包含 50 个值

var count = 0
val feeder = generateSequence {
    val takenCount = (count++).takeIf { it < 50 }

    if (takenCount != null) {
        mapOf(
            "requestParam" to "requestParamValue$count",
        )
    } else {
        null
    }
}.iterator()

并定义场景

    val scn =
    scenario("Test scenario")
        .feed(feeder)
        .exec(
            http("Post request")
                .put("/someUrl")
                .header("Content-Type", "application/json")
                .body(
                    StringBody(
                        """
                        {
                            "requestParam": #{requestParam}
                        }""".trimIndent()
                    )
                )
        )
        .pause(1)

现在,不要像这里那样使用

atOnceUsers(50)
并发出 50 个并发 HTTP 请求

init {
    setUp(
        scn.injectOpen(
            atOnceUsers(50)
        ).protocols(httpProtocol)
    )
}

我想只用 1 个用户在 feeder (50) 中顺序发出任意数量的请求

kotlin performance-testing dsl gatling scala-gatling
1个回答
0
投票

我相信加特林不允许

feed
检测馈线的末端然后优雅地停止虚拟用户。所以你必须指定循环计数。

您只能启动 1 个用户,然后使用

repeat
循环访问 feeder。

scenario("Test scenario")
    .repeat(50).on(
        feed(feeder)
        .exec(
            http("Post request")
                .put("/someUrl")
                .header("Content-Type", "application/json")
                .body(
                    StringBody(
                        """
                        {
                            "requestParam": #{requestParam}
                        }""".trimIndent()
                    )
                )
        )
        .pause(1)
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.