Gatling:如何在 after{} 挂钩中增加用户?

Gatling: How to ramp up users in the after{} hook?

我是一个绝对的 Gatling 初学者,并且主要通过在我的组织代码中复制其他模拟的点点滴滴来编写我的模拟。我搜索了一堆,但没有看到类似的问题(并且在 gatling 文档中找不到任何内容),所以现在我在这里。

我知道 Gatling 有一个 after{} 挂钩,它将在模拟完成后 运行 编码。我需要知道如何像模拟多线程一样对 after{} 挂钩进行多线程处理。基本上,我可以在 after{} 挂钩中增加用户吗?

我的问题是:我的模拟增加了 100 个用户,将他们登录到一个随机帐户(从 1000 个可能的帐户列表中),然后在该帐户中创建 500 个项目。这是为了测试项目创建端点的性能。

问题是我们有另一个模拟来测试计算给定帐户中项目数量的端点的性能。 测试开始受到影响,因为这些账户中的项目数量庞大(它们比我们最大的真实世界账户的负载要大得多——数量级),所以我希望我的 "project creation" 模拟在完成后清理帐户。

理想情况下,之后会做这样的事情:

after {
   //ramp up 1000 users
   //each user should then....
       //log into an account
       // delete all but N projects (where N is a # of projects close to our largest user account)
}

我有登录代码,我可以编写删除代码...但是如何在 after {} 挂钩中增加用户?

这可行吗?我见过的每个 after{} 挂钩示例(很少)都是一些简单的事情,比如打印测试已完成的文本或其他内容。

提前致谢!

您可以使用全局 ConcurrentHashMap 来存储来自 exec(session => session) 个块的数据。

然后,您将能够从 after 挂钩访问此数据。但是,如文档中所述,您将无法在其中使用 Gatling DSL。如果您正在处理 REST API,则可以直接使用 AsyncHttpClient,它是 Gatling 的基础。

有些人还会登录文件而不是内存,然后从将使用该文件作为馈线的第二个模拟中删除。

无论如何,我同意这有点麻烦,但我们目前不认为 setting/cleaning 启动被测系统是负载测试工具的职责。