我希望创建三种方案:
我希望从报告中排除第一种情况的请求。
我已经基本实现了要达到的目标,但没有看到预期的结果:
val myFeeder = csv("somefile.csv")
val scenario1 = scenario("Get stuff")
.feed(myFeeder)
.during(30 seconds) {
exec(
http("getStuff(${csv_colName})").get("/someEndpoint/${csv_colName}")
)
}
val scenario2 = ...
val scenario3 = ...
setUp(
scenario1.inject(
constantUsersPerSec(20) during (30 seconds)
).protocols(firstProtocaol),
scenario2.inject(
nothingFor(30 seconds), //wait 30s
...
).protocols(secondProt)
scenario3.inject(
nothingFor(30 seconds), //wait 30s
...
).protocols(thirdProt)
)
我看到第一个场景在整个测试中都在运行。 30秒钟后还不停止吗?
对于第一种情况,我想循环浏览CSV文件并为每行执行一个请求。也许每秒5-10个请求,我该如何实现?
我也希望它在30年代后停止,然后并行运行其他两个。因此,以上两种情况下的nothingFor
。
我又如何从报告中排除?
谢谢
答案 0 :(得分:1)
由于注射配置文件和“获取材料”方案之间的设置组合,您可能无法获得预期的结果。
constantUsersPerSec(20) during (30 seconds)
将在每秒30秒钟的情况下,每秒在“获取资料”方案中启动20个用户。因此,即使在30秒内,也会有20位用户开始“获取资料”。注入pofile仅控制用户何时启动,而不控制用户活动的时间。因此,当用户执行“获取材料”方案时,由于.during循环,他们在30秒的过程中反复发出“获取”请求。
因此,至少,您将让用户执行“获取资料” 60秒-完全执行其他方案。取决于您getStuff调用的执行时间,它甚至可能更长。
为避免这种情况,您可以精确计算出“获取材料”方案要运行多长时间,将其设置在注入配置文件中,并且在方案中不存在循环。另外,您可以将“ nothingFor”值设置为> 60s。
要从报告中排除“获取材料”调用,您可以在协议定义中添加沉默(假设它未与其他请求共享)。有关更多详细信息,请访问https://gatling.io/docs/3.2/http/http_protocol/#silencing