加特林2.0油门不发送任何请求

时间:2015-02-20 17:15:17

标签: java scala performance-testing load-testing gatling

我正在尝试使用限制功能运行简单的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

有谁知道为什么会限制(...)不发送任何请求? 感谢

2 个答案:

答案 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和节流(...)作为请求上限的函数至关重要每秒。