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

  • 11
    Like
  • 0
    Comment
More than 1 year has 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 バージョンって指定できないんでしょうか?