我正在尝试使用限制功能运行简单的Gatling场景,但没有请求发送到服务器。
我正在使用Gatling 2.0.2,Java 1.8.0_25,Maven 3.2.3(全部在OS X上运行)
我的代码如下所示:
object RequestHomePage {
def apply() = {
exec(http("Home Page Request")
.get("http://my.page/home")
.header("Accept", "application/xml,application/xhtml+xml")
}
}
object HomePage {
val executeScenario = scenario("Home Page Retrieval")
exec(RequestHomePage())
}
class PerformaceSimulation extends Simulation {
val maxResponseTime = 5000 // milliseconds
val simultaneousUsers = atOnceUsers(100)
setUp(HomePage.executeScenario
.inject(atOnceUsers(100))
.throttle(jumpToRps(1), holdFor(10 seconds))
)
.protocols(httpProtocol)
.assertions(
global.responseTime.max.lessThan(maxResponseTime)1
)
}
输出如下:
================================================================================
2015-02-20 16:39:41 4s elapsed
---- Home Page Retrieval -------------------------------------------------------
[##########################################################################]100%
waiting: 0 / active: 0 / done:100
---- Requests ------------------------------------------------------------------
> Global (OK=0 KO=0 )
================================================================================
Simulation finished
Parsing log file(s)...
Parsing log file(s) done
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at scala_maven_executions.MainHelper.runMain(MainHelper.java:164)
at scala_maven_executions.MainWithArgsInFile.main(MainWithArgsInFile.java:26)
Caused by: java.lang.UnsupportedOperationException: There were no requests sent during the simulation, reports won't be generated
有谁知道为什么会限制(...)不发送任何请求? 感谢
答案 0 :(得分:1)
自2.0.2以来,有一些关于限制的错误修复。请升级到2.1.4。
答案 1 :(得分:1)
在Gatling的用户组(https://groups.google.com/forum/#!topic/gatling/QW212U3hDus)与@ stephane-landelle讨论后,解决方案是使用:
.inject(constantUsersPerSec(numberOfUsers) during(loadDuration seconds))
in
setUp(scenario
.inject(constantUsersPerSec(numberOfUsers) during(loadDuration seconds))
)
.protocols(httpProtocolConfig)
.assertions(
global.responseTime.max.lessThan(maxResponseTime)
)
重要提示:关于节流(http://gatling.io/docs/2.1.4/general/simulation_setup.html#throttling)的Gatling 2.1.4文档中的第一个注释对于理解常量rps和节流(...)作为请求上限的函数至关重要每秒。