Edited at

Gradle から Gatling 発射(バグ回避策付き)

More than 3 years have passed since last update.

$ gradle loadTestGatling による負荷テストが走るようにする。ググると古い情報に当たることが多かったのでメモ。

これを実現した簡単なプロジェクト:


やりかた

build.gradle に Gatling パッケージと、上述したようなタスクを書く。こんな感じ:


build.gradle

dependencies {

// ...
testCompile "io.gatling.highcharts:gatling-charts-highcharts:2.1.6"
}

// ...

task loadTest(type: JavaExec) {
dependsOn testClasses
description = "load test with Gatling"
group = "Load Test"
classpath = sourceSets.test.runtimeClasspath
jvmArgs = [
// バグ回避策: https://github.com/gatling/gatling/issues/2689
// Gatling 2.1.7 になれば不要になるはず
"-Dgatling.core.directory.binaries=${sourceSets.test.output.classesDir.toString()}",
]
main = "io.gatling.app.Gatling"
args = [
"--simulation", "gatring.simulations.FooSimulation",
"--results-folder", "${buildDir}/gatling-results",
"--binaries-folder", sourceSets.test.output.classesDir.toString(), // 上述のバグで無視される
"--bodies-folder", sourceSets.test.resources.srcDirs.toList().first().toString() + "/gatling/bodies",
]
}




  • gatring.simulations.FooSimulation にはシナリオが記述されている


  • FooSimulation.scalasrc/test/scala 以下に置く


  • ${buildDir}/gatling-results はレポートの置き場


ただし

Java でアプリケーション作り、Gatling のシナリオを scala で書くと、1つのプロジェクトに Java, Groovy, Scala のコードが存在することになるので少し頭抱える。

シナリオを Groovy or Java で書けるかな?


余談

gradle で scala コードコンパイル時の scala バージョンって指定できないんでしょうか?