2016-08-16 147 views
1

我使用Spray框架编写了一个小型Web服务。我可以使用sbt run运行它,然后在浏览器中进行测试。从SBT执行Gatling负载测试

现在我写了一个使用Gatling框架的负载测试。

package com.abhi 

import io.gatling.core.Predef._ 
import io.gatling.http.Predef._ 
import scala.concurrent.duration._ 

class LoadTest extends Simulation { 
    val httpConf = http 
     .baseURL("http://localhost:8999") 
     .acceptHeader("application/json") 
     .doNotTrackHeader("1") 
     .acceptLanguageHeader("en-US,en;q=0.5") 
     .acceptEncodingHeader("gzip, deflate") 
     .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") 

    val scn = scenario("BasicSimulation") 
     .exec(http("request_1") 
     .get("/path1")) 
     .pause(5) 

    setUp(
     scn.inject(atOnceUsers(10)) 
    ).protocols(httpConf) 
} 

测试位于夹src/test/scala-2.11和喷码是src/main/scala-2.11

当我运行sbt test它只是打印成功没有任何运行我的Web服务器或运行上述定义的测试。它只是在3秒内打印成功并出去。

我怎样才能

  1. 确保当我做了sbt test喷雾web应用 开始
  2. 的galing负载测试运行针对启动服务器

编辑:我还尝试sbt test scenarios:BasicSimulation,它抛出错误

Not a valid key: BasicSimulation 
[error] scenarios:BasicSimulation 

回答

1

您必须使用Gatling sbt plugin才能从sbt触发。请注意,它不以默认配​​置运行,但在the gatling onegatling:test中运行。

+0

谢谢!我配置了插件,我可以进行门控:测试,但它仍然不启动喷雾服务器。我可以做一个“加油”:测试做一个“加油”吗?如果我做了一个“运行gatling:测试”,它永远不会跑出来,所以永远不要跑到加特林:test –

+1

也许一位专家可以向你解释如何做到这一点。然后,您可以运行2个不同的sbt进程。但是,从负载测试的角度来看,这没有任何意义:您将在localhost和Gatling上进行测试,并且测试的应用程序将共享资源(CPU),因此您的结果将完全不相关。 –

+0

非常感谢你的帮助。我会用更具体的sbt标签打开另一个问题。 –

0

加特林已经写成Scala的应用 - 它就会开始按照一个标准的JVM的应用程序 - 你可以在startup script gatling.sh看到:

# Run Gatling 
java $JAVA_OPTS -cp "$GATLING_CLASSPATH" io.gatling.app.Gatling "[email protected]" 

SBT并不“知道”如何启动加特林Simulation就像它“知道”如何运行Specs2 Specification一样。幸运的是,似乎有一个Gatling SBT插件可用,它可以做正是你想要的 - 请查看demo project on GitHub