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

时间:2016-08-16 22:15:52

标签: performance gatling

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

我知道Gatling有一个after {}钩子,它将在模拟完成后运行代码。我需要知道如何多次线程化{}钩子,就像模拟多线程一样。基本上,我可以在after {} hook中提升用户吗?

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

问题是我们有另一个模拟测试端点的性能,该端点计算给定帐户中的项目数。 那个测试开始受到影响,因为这些帐户中的项目数量庞大(他们的负载比我们最大的真实世界帐户还要多,数量级也是如此),所以我想要我的"项目创建"模拟在完成后清理帐户。

理想情况下,after会做类似的事情:

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 {}钩子(非常少)看到的每个例子都很简单,比如打印测试完成的文本或其他东西。

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

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

有些人还会登录文件而不是内存,并从第二次模拟中删除,该模拟会将此文件用作进纸器。

无论如何,我同意这有点麻烦,但我们目前认为设置/清理被测系统是负载测试工具的责任。