🐥
Gatling 入門記 (sbt plugin を用いて実行するまで)
こちら の README の複製です。もうちょっとハックした方法を考え (検討) 中...
Gatling
START PROJECT
If you use sbt 0.13.13 or later, you can use sbt new
command for initialize sbt project.
$ sbt new sbt/scala-seed.g8
....
Minimum Scala build.
name [My Something Project]: my-gatling-sample
Template applied in ./my-gatling-sample
reference: sbt new
build.sbt
build.sbt
に以下を追記します。
// build.sbt
scalacOptions := Seq(
"-encoding", "UTF-8", "-target:jvm-1.8", "-deprecation",
"-feature", "-unchecked", "-language:implicitConversions", "-language:postfixOps"
)
libraryDependencies ++= Seq(
"io.gatling.highcharts" % "gatling-charts-highcharts" % "2.3.0" % "test",
"io.gatling" % "gatling-test-framework" % "2.3.0" % "test"
)
enablePlugins(GatlingPlugin)
gatling-test-framework は Gatling を実行するためのライブラリっぽい
gatling-charts-highcharts は HighCharts という JavaScript 製のチャートライブラリをベースにした Gatling 向けのライブラリのようです。結果のレポート表示用だと思います。
plugins.sbt
plugins.sbt
に gatling に関する plugin の情報を記載します。
// plugins.sbt
addSbtPlugin("io.gatling" % "gatling-sbt" % "2.2.2")
Write Test Scenario
// src/test/scala/mytest/MyBasicSimulation.scala
package mytest
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class MyBasicSimulation extends Simulation {
val httpProtocol = http
.baseURL("http://localhost:8080") // Here is the root for all relative URLs
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // Here are the common headers
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("en-US,en;q=0.5")
.userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0")
val scn = scenario("My First Scenario") // A scenario is a chain of requests and pauses
.exec(http("request_1")
.get("/"))
setUp(scn.inject(atOnceUsers(1)).protocols(httpProtocol))
}
上記では、テスト対象のアプリケーションが、http://localhost:8080 に起動していることとしています。
ここでは テキトーに nginx サーバでも立てて実験してみることにします。
シミュレーションとしては「この nginx サーバの root (/
) に、ユーザが1人がアクセスしてくるだけ」という簡易的なものです。
docker run --rm -p 8080:80 nginx
execute simulation
# start sbt
$ sbt
sbt:my-gatling-sample>
# Run all simulations
> gatling:test
# Run a single simulation
> gatling:testOnly mytest.MyBasicSimulation
# List all tasks
> tasks -v gatling
- example
sbt:my-gatling-sample> gatling:testOnly mytest.MyBasicSimulation
....
Please open the following file: /Users/sudachi/projects/my-gatling-sample/target/gatling/mybasicsimulation-1607150219812/index.html
[info] Simulation MyBasicSimulation successful.
[info] Simulation(s) execution ended.
[success] Total time: 11 s, completed 2020/12/05 15:37:06
View Test Report
see target/gatling
(の最新のヤツ...)
Use Giter8
You can use our Giter8 template to bootstrap a new sbt project:
sbt new gatling/gatling.g8
Discussion